TC2000.com• Download software • Tutorial videos • Subscription & data-feed pricing • Class schedule
TC2000Brokerage.com• New account application • Trading resources • Margin rates • Stock & option commissions
Worden Discussion Forum
Converting from 32-bit to 64-bit is not just a matter of a recompile. The are numerous MS com controls that have not yet and will not be converted to 64-bit. This requires installing the 32-bit version of MS Office if any of these controls are used.
I expect the 64-bit conversion of Stockfinder may require simliar effort for its controls.
Here was my wish list back in N0V 2010 from
As to "we'll soon be working on StockFinder 5.1, which will tackle all documented BackScanner issues". Can this list be published so that users may comment on omissions?
I know it is not policy to reveal features, except by release, however it would be good to know what the general game plan is for the backscanner. Is there any intention of supporting any of the following?:
1. A way of saving the results that permits reconstruction or at least realization of what the backscan rules were at the time it was run.
2. Improved run to run results tracking
a. Tabbed scan results, so that one can appreciate result improvements
b. The ability to provide description with the scan results. Typically consecutive scans are run tweaking settings. There is no easy way to review multiples runs and appreciate what caused the improvements
3. Money management with support for
a. Tie breaker, for picking which trades to execute when multiple opportunities are presented
c. Minimum/maximum setups per bar
d. Minimum/Maximum trades per bar
e. Maximum open trades
f. Multiple Trade sizing models
4. A standard template and support for user specified result templates. This would permit users to compute their own metrics as in Sharpe, Kelly, RAR, etc. etc
a. For scan results
b. For MM results
c. For optimization run summaries
5. Intermediate results display of backscan results, to permit early termination if the results don’t look promising. This is particularly helpful when running long scans.
6. Equity curve display during backscan
7. Interruption of backscan with partial results retained
8. Entry and exit @Price
9. Realcode access to Trade information
10. Saving backscan trade sets permitting running vai realcode post scan
a. Money management studies
b. Entry studies
c. Exit studies
d. Correlation studies
11. For saved backscan trade sets, permitting additional indicator values to be associated with each trade. For example @ trade entry what various ATR values were.
12. bars in Trade variable in realcode
13. realcode Loop support for both backscan and Money Management runs to permit optimization
14. For optimization
a. Multiple formats for stating variable values
i. A set, as in [5,7,13,23,42]
ii. A stepped range, x to y stepped by z, as in (5 to 30 by 5)
b. Realcode access to variable assignments.
15. Standard IO for reading and writing results. This would permit post processing of run results and adjustments of parameters for scans or MM runs.
16. Realcode support for multiple positions with scaling into and out of positions
Open topic with navigation as mentioned at the end of the Personal Criteris Language page
How can I make indicators for price being above the linear regression slope 20(lrs) and another indicator with price being below lrs . The lrs is already on my charts however when I try to create a condition with price history the lrs does not show up in the pull down. I attempted to do it in real code however it keeps giving me expression error. This is what I tried.
if price.close > # lrs then pass.
The expression error is the # lrs which is not a legal variable name.
Export a plot that just prints close on lastbar should give you something to work with
if lastbar then
There are the charts and the systems of infinite variety. The truely hardest thing to learn is to manage your psyche. Lack of impulse control and "if only" thinking can drain you enthusiasm and your trading account in no time.
If you don't plan the trade, and trade the plan, then post mortem analysis is impossible. The hardest thing it to learn to control your own actions. Keep track of what you did and didn't do during the process and tally each category. Work on reducing the frequency of the top shortcoming and give yourself credit for the things you did right. Rinse and repeat.
A few mistake categories:
I'll confess I haven't closely read the entire thread. I do want to mention on point regarding "easy to see" versus "not so easy to program".
I'll use cup and handle as an example. One can look at a chart and see the formation easily. The difficulty is that each cup and handle spans a different number of bars, so writing code that can recognize the formation is not easy. Visually out brains see the pattern without needing to consider the bar count. Programming the code "sees" a bar at a time and can remeber things, but pattern construction and recognition is hard.
When defining the end points that defines the trend line, one needs to decide how many bars to consider, the width. One also needs to decide how long should that trend be considered relevant. If the end point is x bars old is the trendline still applicable, or are the more recent events caring more weight than an "old" trendline.
Another point, often can take a chart and draw historical trend lines and see how well the approach "predicts" things. One has a hard time quantify all the simlar trend lines that don't match the prediction. The viewer can easily see the goodness. Using stockfinder to keep score will provide the performance measure. Don't let these easy to see confirmations give a flawed approach undeserved merit.
An example of being tricked by the plot is the zig-zag plot which nicely points out tops and bottoms. It is a flawed trading mechanism as the corners are defined by a percentage, which is a look ahead of n bars. Thus it depends on future information. This is often how the brain constructs potentially viable approachs when looking at historical charts. There is an unintentional look ahead. Encoding the rules and backtesting with Stockfinder will provide the win%.
Once Stockfinder gives you a viable approach, based on backtesting results, one last step would be to compare the results with the same number of random trades. A viable strategy needs to outperform random trades by a good margin. See http://forums.worden.com/default.aspx?g=posts&t=45239 for an example of this.
This might be it:: Accidental comment
'sinceGap(i) += 1
A couple minor optimization comments:
1. Avoid divides and multiplies when possible.
Replace MinGapPerc / 100 with gapSize
Dim gapSize as single
gapSize = MinGapPerc / 100
Else If (1 - Price.High / Price.Low(1)) >= gapSize And Price.High < Price.Low(1) Then
2. The only way the gapSize can be statisfied is if Price.High < Price.Low(1) so you don't need to check if High is less than yesterday's low yielding a simplified expression
Else If (1 - Price.High / Price.Low(1)) >= gapSize then
One approach would be to code multiples into a single parameter and then parse the values
# Parms = UserInput.string = "15:1:0:0:25"
see Bband - with CCI break out scan. for code for generating random sample backtest. The idea being to pick a random stock and hold it for a fixed time based on the average hold time of the approach you a comparing.
The link using an 18 day hold and an ajusted percet of 0.55% to get the right amount of trades during the test period.
As to the length of test, an equally critical question is how many trades. For example a 5 year test against S&P500 resulting in 150 trades might be to thin a selection. If the criteria are tuned as you evolve the strategy some curve fitting might be ocurring, fitting the strategy to the data.
One approach is to split the data into to sets. One to develop/train the strategy and the other to validate it. There is an excellent book
Evidence Based Technical Analysis by David Aronson
that covers may asppect of validating strategies.
I prefer doing a fixed length trade random sampling over the same data to see what a monkey with darts would do. This approach captures the market bias that the market trend of the test period comtributes.
One would want performance that significanlty exceeded the random sample to feel comfortable with the strategy.
Two more points:
1. Some times a strategy produces good results but the trades are bunched because of some market condition that matches the criteria. Then one could not take full advantage of all the trades as there wouldn't be enough capital to fully commit.
2. Long duration tests against market indices like S&P500 or Russel 1000 suffer from membership bias. A form of survivorship bias. The fact that a stock is listed on the S&P500 today indicates some level of success. If it was added during the backtest period, that is not in the list at the start of the backtest, with data for the whole backtest, one can assume that is will outperform the market duing the backtest.
Applying the strategy gouing forward does not have this advantage as one doesn't know what stock will be added and removed from the list in advance.