{------------------------------------------------------------------------------- Trading Strategy Code Population member: 203 Max bars back: 91 Created by: Adaptrade Builder version 4.2.1.0 Created: 9/5/2022 5:33:53 PM Scripting language: TradeStation 6 or newer Symbol: @ES#C 1 Day (Daily bars), Primary (Data1) (C:\Adaptrade\MarketData\@ES#C 1 Day.txt) Build dates: 9/4/2000 to 6/15/2020 Project file: C:\..\BreakoutStrats_stopandreverse.gpstrat -------------------------------------------------------------------------------} { Strategy inputs } Inputs: N1 (2), { Indicator look-back length (bars) } N2 (80), { Indicator look-back length (bars) } N3 (8), { Indicator look-back length (bars) } N4 (24), { Indicator look-back length (bars) } Shift1 (9), { Indicator shift value (bars) } NBarEnt1 (4), { Indicator look-back length (bars) } NBarEnt2 (27), { Indicator look-back length (bars) } NBarEnt3 (91), { Indicator look-back length (bars) } EntFr (2.3114), { Multiple of price difference (e.g., ATR); entry } PSParam (1.00), { Position sizing parameter value } RoundPS (true), { Round-to-nearest (true/false) } RoundTo (1), { Round-to position size value } MinSize (1), { Minimum allowable position size } SizeLimit (200); { Maximum allowable position size } { Variables for entry and exit prices } Var: EntPrL (0), EntPrS (0); { Variables for entry and exit conditions } Var: VarL1 (0), VarL2 (0), VarL3 (0), VarL4 (0), VarS1 (0), VarS2 (0), VarS3 (0), VarS4 (0), EntCondL (false), EntCondS (false); { Variables for position sizing } Var: NShares (0); { Entry prices } EntPrL = Highest(L, NBarEnt1) + EntFr * AbsValue(WAverage(O, NBarEnt2) - WAverage(L, NBarEnt3)); EntPrS = Lowest(H, NBarEnt1) - EntFr * AbsValue(WAverage(O, NBarEnt2) - WAverage(L, NBarEnt3)); { Entry and exit conditions } VarL1 = Average(L, N1)[Shift1]; VarL2 = StandardDev(VarL1, N2, 1); VarL3 = MACD(O, N3, N4); VarL4 = AbsValue(VarL3); VarS1 = Average(H, N1)[Shift1]; VarS2 = StandardDev(VarS1, N2, 1); VarS3 = MACD(O, N3, N4); VarS4 = AbsValue(VarS3); EntCondL = VarL2 >= VarL4; EntCondS = VarS2 >= VarS4; { Position sizing calculations } NShares = PSParam; If RoundPS and RoundTo > 0 then NShares = IntPortion(NShares/RoundTo) * RoundTo; NShares = MaxList(NShares, MinSize); NShares = MinList(NShares, SizeLimit); { Entry orders } If EntCondL and C < EntPrL then begin Buy("EnStop-L") NShares shares next bar at EntPrL stop; end; If EntCondS and C > EntPrS then begin Sell short("EnStop-S") NShares shares next bar at EntPrS stop; end;