I'm not very smart with how algos work, so this may be a dumb question, but how does an algo analyze TA? Visually, we of course look for the standard things like higher lows or highs, double tops, reversals are key levels, some people use fib retracements, etc. Do your algos look at it the same way?
We generate and rigorously test millions of algos per month, in the hope of finding one or two that survive our "algo bootcamp" to be a candidate for run-forward real-time paper trading (the next step of validation).
An example of an algo we'll generate (again, using TA indicators only) might look like the following:
LongEntrySignal = true if min 67 % conditions (6 out of 9) are correct:
- (CCI(Main Symbol,WoodiesTrendPeriod)[PreviousBar] is falling 6 consecutive bars)
- (Smoothed Moving Average(Main Symbol,MAPeriod, PRICE_CLOSE)[PreviousBar] is rising)
- (OSMA(Main Symbol,OSMAFastEMA, OSMASlowEMA, OSMASignalPeriod)[ PreviousBar] is higher than 0)
- Close above BollingerBands(Main Symbol,BBBarClosesPeriod, 2.1, PRICE_CLOSE).LowerBand
- (Bar Closes below KeltnerChannel(Main Symbol,KCBarCloseserPeriod, 0.8).Lower[2 Bars Ago])
- Open below LinReg(Second Symbol, M2,LinRegBarOpensPeriod)[PreviousBar]
- (DeMarker(Second Symbol, M2,DEMChangesPeriod)[ PreviousBar] changes direction downwards)
- (KeltnerChannel(Second Symbol, M2,KCerPeriod, 2).Lower[3 Bars Ago] is falling)
- (BearsPower(Second Symbol, M2,BPPeriod)[PreviousBar] > 0)
Exit #1 - TrailingStop
Close 50 % of position use trailing stop 2.4 * ATR(12);
Exit #2 - MultipleOfOriginalPT
Close 50 % of position at 1.4 * original Profit Target (= EnterRvrAtMrkPrfTrgCef * ATR(20));
ShortEntrySignal = true if min 69 % conditions (6 out of 8) are correct:
- UlcerIndex(Main Symbol, DOWN UI, UlcerIndexeePeriod)[2 bars ago] is below 12.65
- (Williams % R(Main Symbol,WPRPeriod)[3 bars ago] is falling)
- (QQE(Main Symbol,QQEValue1RSIPeriod, QQEValue1sF, 4.93).Value1[PreviousBar] is falling)
- (Reflex(Second Symbol, M5,ReflexChangesDrcPrd)[3 bars ago] changes direction downwards)
- (Momentum(Second Symbol, M5,MomPeriod, PRICE_CLOSE)[PreviousBar] is falling)
- (QQE(Second Symbol, M5,QQEVle1CrsVle2RSIPrd, QQEValue1CrossVle2sF, 4.236).Value1[3 bars ago] crosses above QQE.Value2)
- (QQE(Main Symbol,QQEValue1RSIPeriod2, QQEValue1sF2, 4.236).Value1[2 bars ago] is falling)
- Open below LinReg(Second Symbol, M5,LinRegBarOpensPeriod)[PreviousBar]
- Vortex(Main Symbol, VortexDowntrendPrd)[PreviousBar] is in Up Trend
- (ADX(Main Symbol,ADXHigherPeriod)[PreviousBar] > 33.8)
- (StdDev(Second Symbol, M5,StdDevLowerPeriod, PRICE_TYPICAL)[2 bars ago] < 0.29)
- (Reflex(Second Symbol, M5,ReflexChangesDrcPrd3)[2 bars ago] changes direction upwards)
- Faster HMA(Second Symbol, M5, FasterHMAIsSlwHMAFstPrd)[3 bars ago] is below slower HMA(Second Symbol, M5, FasterHMAIsSlwHMASlwPrd)[3 bars ago]
For an algo we're running forward, weekend tuning is essentially fine-tuning the variables (not the indicators) for an algo, so that we're always taking into account the most recent week's market activity.
I absolutely love this! I was never a fan of people saying you need to go back 10 years. I always thought that markets were fundamentally different back then, especially if we consider that 10 years ago, the algo trading was I'm sure much less. So why use data for analysis when things are done differently this time.
I think this totally depends on your trading style/timeframe. Because we day trade and our positions are usually open for a few minutes to a few hours, and we trade primary on one minute bars, 18 or so months of data is WAY MORE than enough data points for creation and tuning. If you're swing trading, holding positions for days or weeks, or using 1 hour to 1 day candles, then I think you probably DO need to backtest 10 years or more. For us, it's all about making sure we have enough data to feed our AI models. Using 300+ TA indicators, 18 months of 24x5 one minute data is a LOT of data.
Last edited:
