Revision: 66395
Updated Code
at May 2, 2014 01:39 by tedpenner
Updated Code
{ Doug McCrary with TS helped me fix the code to reflect my ADX Halt trading criteria. He said that he thought the builder was made by Michael Burke in Forida but wasn't absolutely positive. } { Properties Initialized > Choose Value AnalysisTechnique_Initialized which refers to the method in the code. This will bring up the winform and in an uncommon way of doing it. } { Set up Namespaces } using elsystem.windows.forms; using elsystem.drawing; { Declare Inputs } inputs: FilterCriteria(0), TriggerCriteria(0), ExitCriteria(0), FC1_MaLen1(50), FC1_MaLen2(200), FC2_PctRLen(50), FC2_PctRTreshold(50), FC3_DMILen(50), TC1_MaLen1(20), TC1_MaLen2(50), TC2_MaLen(20), TC3_MOLen(20), XC0_BSE(20), XC1_ATRLen(20), XC1_ATRs(2), XC2_MALen(20), XC3_MOLen(20), ADXLength(14), //Part of HALT if ADX is less than 20. MinADX(20); //Part of HALT if ADX is less than 20. { Define Variables } vars: FC1_MaVal1(0), FC1_MaVal2(0), FC2_PctRVal(0), FC3_DMIPlus(0), FC3_DMIMinus(0), TC1_MaVal1(0), TC1_MaVal2(0), TC2_MaVal(0), TC3_MOVal(0), XC1_ATR(0), XC1_ATRVal(0), XC2_MAVal(0), XC3_MOVal(0), FCCond(False), MP(0); vars: ADXOK(false); //Part of HALT if ADX is less than 20. vars: Form SBForm( Null ), Label SBLabel1(Null), Label SBLabel2(Null ), Label SBLabel3(Null), Label SBLabel4(Null), Label SBLabel5(Null), Font SBTitle(Null); method void AnalysisTechnique_Initialized( elsystem.Object sender, elsystem.InitializedEventArgs args ) var: string tempstr; begin { Define "If" Statements } If Getappinfo(aiOptimizing) = 0 then begin SBForm = form.create("StrategyBuilder", 1080, 105); SBLabel1 = Label.Create("Strategy Builder (Long Entry Only)", 720, 18); SBLabel1.Location( 1,1 ); SBTitle = Font.Create("",8,fontstyle.bold); SBLabel1.Font = SBTitle; SBLabel2 = Label.Create("", 720, 18); tempstr = "Current Input Settings:( Filter Criteria = " + numtostr(FilterCriteria,0) + " / Trigger Criteria = " + numtostr(TriggerCriteria,0) + " / Exit Criteria = " + numtostr(ExitCriteria,0) + " )"; SBLabel2.Text = tempstr; SBLabel2.Location( 5,19 ); SBLabel2.Font = SBTitle; tempstr = "Filter Inputs: 0 = No Filter, " + "1 = " + numtostr(FC1_MaLen1,0) + " MovAvg > " + numtostr(FC1_MaLen2,0) + " MovAvg, " + "2 = " + numtostr(FC2_PctRLen,0) + " %R > " + numtostr(FC2_PctRTreshold,0) + ", " + "3 = " + numtostr(FC3_DMILen,0) + " DMI+ > " + numtostr(FC3_DMILen,0) + " DMI-"; SBLabel3 = Label.Create("", 720, 18); SBLabel3.Text = tempstr; SBLabel3.Location( 10,38 ); tempstr = "Trigger Inputs: 0 = Bar Close, " + "1 = " + numtostr(TC1_MaLen1,0) + " MovAvg Xabove " + numtostr(TC1_MaLen2,0) + " MovAvg, " + "2 = Low Xabove " + numtostr(TC2_MaLen,0) + " MovAvg ofHighs, " + "3 = " + numtostr(TC3_MOLen,0) + " MomentumAvg Xabove 0"; SBLabel4 = Label.Create("", 720, 18); SBLabel4.Text = tempstr; SBLabel4.Location( 10,57 ); tempstr = "Exit Inputs: 0 = " + numtostr(XC0_BSE,0) + " BarsSinceEntry " + "1 = " + numtostr(XC1_ATRLen,0) + " ATR Trails " + numtostr(XC1_ATRs,0) + " ATRs, " + "2 = High Xbelow " + numtostr(XC2_MALen,0) + " MovAvg ofLows, " + "3 = " + numtostr(XC3_MOLen,0) + " MomentumAvg Xbelow 0"; SBLabel5 = Label.Create("", 720, 18); SBLabel5.Text = tempstr; SBLabel5.Location( 10,76 ); SBForm.AddControl(SBLabel1); SBForm.AddControl(SBLabel2); SBForm.AddControl(SBLabel3); SBForm.AddControl(SBLabel4); SBForm.AddControl(SBLabel5); SBForm.Dock = DockStyle.bottom; SBForm.show(); end; end; ADXOK = ADX(ADXLength) >= MinADX; //ADX Calculation, Part of HALT if ADX is less than 20. If FilterCriteria = 1 then begin FC1_MaVal1 = Average(Close, FC1_MaLen1); FC1_MaVal2 = Average(Close, FC1_MaLen2); end; If FilterCriteria = 2 then FC2_PctRVal = PercentR(FC2_PctRLen); If FilterCriteria = 3 then begin FC3_DMIPlus = DMIPLus(FC3_DMILen); FC3_DMIMinus = DMIMinus(FC3_DMILen); end; If TriggerCriteria = 1 then begin TC1_MaVal1 = Average(Close, TC1_MaLen1); TC1_MaVal2 = Average(Close, TC1_MaLen2); end; If TriggerCriteria = 2 then TC2_MaVal = Average(Close, TC2_MaLen); If TriggerCriteria = 3 then TC3_MOVal = Average(Momentum(Close, TC3_MOLen),3); If ExitCriteria = 1 then begin XC1_ATR = AvgTrueRange(XC1_ATRLen); XC1_ATRVal = XC1_ATR * XC1_ATRs; end; If ExitCriteria = 2 then XC2_MAVal = Average(Close, XC2_MALen); If ExitCriteria = 3 then XC3_MOVal = Average(Momentum(Close, XC3_MOLen),3); SetStopShare; MP = MarketPosition; Switch(FilterCriteria) Begin Case 0: FCCond = TRUE; Case 1: FCCond = FC1_MaVal1 > FC1_MaVal2; Case 2: FCCond = FC2_PctRVal > FC2_PctRTreshold; Case 3: FCCond = FC3_DMIPlus > FC3_DMIMinus; Default: FCCond = FALSE; end; { Define "Switch" Statements } Switch(TriggerCriteria) Begin Case 0: if MP = 0 AND FCCond and ADXOK then Buy("LE") this bar on Close; //HALT if ADX is less than 20. Case 1: if MP = 0 AND FCCond and ADXOK AND TC1_MaVal1 > TC1_MaVal2 then Buy("Avgx LE") this bar on Close; Case 2: if MP = 0 AND FCCond and ADXOK AND Low > TC2_MaVal then Buy("Lx LE") this bar on Close; Case 3: if MP = 0 AND FCCond and ADXOK AND TC3_MOVal > 0 then Buy("Mox LE") this bar on Close; Default: FCCond = FALSE; end; Switch(ExitCriteria) Begin Case 0: If MP = 1 AND BarsSinceEntry >= XC0_BSE then Sell("BSE LX") this bar on Close; Case 1: If MP = 1 then Setdollartrailing(XC1_ATRVal * BigPointValue); Case 2: If MP = 1 AND High Crosses Below XC2_MAVal then Sell("Hx LX") this bar on Close; Case 3: If MP = 1 AND XC3_MOVal Crosses Below 0 then Sell("Mox LX") this bar on Close; Default: SetExitonClose; end;
Revision: 66394
Updated Code
at May 2, 2014 01:37 by tedpenner
Updated Code
{ Doug McCrary with TS helped me fix the code to reflect my ADX Halt trading criteria. He said that he thought the builder was made by Michael Burke but wasn't absolutely positive. } { Properties Initialized > Choose Value AnalysisTechnique_Initialized which refers to the method in the code. This will bring up the winform and in an uncommon way of doing it. } { Set up Namespaces } using elsystem.windows.forms; using elsystem.drawing; { Declare Inputs } inputs: FilterCriteria(0), TriggerCriteria(0), ExitCriteria(0), FC1_MaLen1(50), FC1_MaLen2(200), FC2_PctRLen(50), FC2_PctRTreshold(50), FC3_DMILen(50), TC1_MaLen1(20), TC1_MaLen2(50), TC2_MaLen(20), TC3_MOLen(20), XC0_BSE(20), XC1_ATRLen(20), XC1_ATRs(2), XC2_MALen(20), XC3_MOLen(20), ADXLength(14), //Part of HALT if ADX is less than 20. MinADX(20); //Part of HALT if ADX is less than 20. { Define Variables } vars: FC1_MaVal1(0), FC1_MaVal2(0), FC2_PctRVal(0), FC3_DMIPlus(0), FC3_DMIMinus(0), TC1_MaVal1(0), TC1_MaVal2(0), TC2_MaVal(0), TC3_MOVal(0), XC1_ATR(0), XC1_ATRVal(0), XC2_MAVal(0), XC3_MOVal(0), FCCond(False), MP(0); vars: ADXOK(false); //Part of HALT if ADX is less than 20. vars: Form SBForm( Null ), Label SBLabel1(Null), Label SBLabel2(Null ), Label SBLabel3(Null), Label SBLabel4(Null), Label SBLabel5(Null), Font SBTitle(Null); method void AnalysisTechnique_Initialized( elsystem.Object sender, elsystem.InitializedEventArgs args ) var: string tempstr; begin { Define "If" Statements } If Getappinfo(aiOptimizing) = 0 then begin SBForm = form.create("StrategyBuilder", 1080, 105); SBLabel1 = Label.Create("Strategy Builder (Long Entry Only)", 720, 18); SBLabel1.Location( 1,1 ); SBTitle = Font.Create("",8,fontstyle.bold); SBLabel1.Font = SBTitle; SBLabel2 = Label.Create("", 720, 18); tempstr = "Current Input Settings:( Filter Criteria = " + numtostr(FilterCriteria,0) + " / Trigger Criteria = " + numtostr(TriggerCriteria,0) + " / Exit Criteria = " + numtostr(ExitCriteria,0) + " )"; SBLabel2.Text = tempstr; SBLabel2.Location( 5,19 ); SBLabel2.Font = SBTitle; tempstr = "Filter Inputs: 0 = No Filter, " + "1 = " + numtostr(FC1_MaLen1,0) + " MovAvg > " + numtostr(FC1_MaLen2,0) + " MovAvg, " + "2 = " + numtostr(FC2_PctRLen,0) + " %R > " + numtostr(FC2_PctRTreshold,0) + ", " + "3 = " + numtostr(FC3_DMILen,0) + " DMI+ > " + numtostr(FC3_DMILen,0) + " DMI-"; SBLabel3 = Label.Create("", 720, 18); SBLabel3.Text = tempstr; SBLabel3.Location( 10,38 ); tempstr = "Trigger Inputs: 0 = Bar Close, " + "1 = " + numtostr(TC1_MaLen1,0) + " MovAvg Xabove " + numtostr(TC1_MaLen2,0) + " MovAvg, " + "2 = Low Xabove " + numtostr(TC2_MaLen,0) + " MovAvg ofHighs, " + "3 = " + numtostr(TC3_MOLen,0) + " MomentumAvg Xabove 0"; SBLabel4 = Label.Create("", 720, 18); SBLabel4.Text = tempstr; SBLabel4.Location( 10,57 ); tempstr = "Exit Inputs: 0 = " + numtostr(XC0_BSE,0) + " BarsSinceEntry " + "1 = " + numtostr(XC1_ATRLen,0) + " ATR Trails " + numtostr(XC1_ATRs,0) + " ATRs, " + "2 = High Xbelow " + numtostr(XC2_MALen,0) + " MovAvg ofLows, " + "3 = " + numtostr(XC3_MOLen,0) + " MomentumAvg Xbelow 0"; SBLabel5 = Label.Create("", 720, 18); SBLabel5.Text = tempstr; SBLabel5.Location( 10,76 ); SBForm.AddControl(SBLabel1); SBForm.AddControl(SBLabel2); SBForm.AddControl(SBLabel3); SBForm.AddControl(SBLabel4); SBForm.AddControl(SBLabel5); SBForm.Dock = DockStyle.bottom; SBForm.show(); end; end; ADXOK = ADX(ADXLength) >= MinADX; //ADX Calculation, Part of HALT if ADX is less than 20. If FilterCriteria = 1 then begin FC1_MaVal1 = Average(Close, FC1_MaLen1); FC1_MaVal2 = Average(Close, FC1_MaLen2); end; If FilterCriteria = 2 then FC2_PctRVal = PercentR(FC2_PctRLen); If FilterCriteria = 3 then begin FC3_DMIPlus = DMIPLus(FC3_DMILen); FC3_DMIMinus = DMIMinus(FC3_DMILen); end; If TriggerCriteria = 1 then begin TC1_MaVal1 = Average(Close, TC1_MaLen1); TC1_MaVal2 = Average(Close, TC1_MaLen2); end; If TriggerCriteria = 2 then TC2_MaVal = Average(Close, TC2_MaLen); If TriggerCriteria = 3 then TC3_MOVal = Average(Momentum(Close, TC3_MOLen),3); If ExitCriteria = 1 then begin XC1_ATR = AvgTrueRange(XC1_ATRLen); XC1_ATRVal = XC1_ATR * XC1_ATRs; end; If ExitCriteria = 2 then XC2_MAVal = Average(Close, XC2_MALen); If ExitCriteria = 3 then XC3_MOVal = Average(Momentum(Close, XC3_MOLen),3); SetStopShare; MP = MarketPosition; Switch(FilterCriteria) Begin Case 0: FCCond = TRUE; Case 1: FCCond = FC1_MaVal1 > FC1_MaVal2; Case 2: FCCond = FC2_PctRVal > FC2_PctRTreshold; Case 3: FCCond = FC3_DMIPlus > FC3_DMIMinus; Default: FCCond = FALSE; end; { Define "Switch" Statements } Switch(TriggerCriteria) Begin Case 0: if MP = 0 AND FCCond and ADXOK then Buy("LE") this bar on Close; //HALT if ADX is less than 20. Case 1: if MP = 0 AND FCCond and ADXOK AND TC1_MaVal1 > TC1_MaVal2 then Buy("Avgx LE") this bar on Close; Case 2: if MP = 0 AND FCCond and ADXOK AND Low > TC2_MaVal then Buy("Lx LE") this bar on Close; Case 3: if MP = 0 AND FCCond and ADXOK AND TC3_MOVal > 0 then Buy("Mox LE") this bar on Close; Default: FCCond = FALSE; end; Switch(ExitCriteria) Begin Case 0: If MP = 1 AND BarsSinceEntry >= XC0_BSE then Sell("BSE LX") this bar on Close; Case 1: If MP = 1 then Setdollartrailing(XC1_ATRVal * BigPointValue); Case 2: If MP = 1 AND High Crosses Below XC2_MAVal then Sell("Hx LX") this bar on Close; Case 3: If MP = 1 AND XC3_MOVal Crosses Below 0 then Sell("Mox LX") this bar on Close; Default: SetExitonClose; end;
Revision: 66393
Updated Code
at May 1, 2014 16:48 by tedpenner
Updated Code
{ Set up namespaces } using elsystem.windows.forms; using elsystem.drawing; { Declare inputs } inputs: FilterCriteria(0), TriggerCriteria(0), ExitCriteria(0), FC1_MaLen1(50), FC1_MaLen2(200), FC2_PctRLen(50), FC2_PctRTreshold(50), FC3_DMILen(50), TC1_MaLen1(20), TC1_MaLen2(50), TC2_MaLen(20), TC3_MOLen(20), XC0_BSE(20), XC1_ATRLen(20), XC1_ATRs(2), XC2_MALen(20), XC3_MOLen(20); { Define variables } vars: FC1_MaVal1(0), FC1_MaVal2(0), FC2_PctRVal(0), FC3_DMIPlus(0), FC3_DMIMinus(0), TC1_MaVal1(0), TC1_MaVal2(0), TC2_MaVal(0), TC3_MOVal(0), XC1_ATR(0), XC1_ATRVal(0), XC2_MAVal(0), XC3_MOVal(0), FCCond(False), MP(0); vars: Form SBForm( Null ), Label SBLabel1(Null), Label SBLabel2(Null ), Label SBLabel3(Null), Label SBLabel4(Null), Label SBLabel5(Null), Font SBTitle(Null); method void AnalysisTechnique_Initialized( elsystem.Object sender, elsystem.InitializedEventArgs args ) var: string tempstr; begin { Define If statements } If Getappinfo(aiOptimizing) = 0 then begin SBForm = form.create("StrategyBuilder", 1080, 105); SBLabel1 = Label.Create("Strategy Builder (Long Entry Only)", 720, 18); SBLabel1.Location( 1,1 ); SBTitle = Font.Create("",8,fontstyle.bold); SBLabel1.Font = SBTitle; SBLabel2 = Label.Create("", 720, 18); tempstr = "Current Input Settings:( Filter Criteria = " + numtostr(FilterCriteria,0) + " / Trigger Criteria = " + numtostr(TriggerCriteria,0) + " / Exit Criteria = " + numtostr(ExitCriteria,0) + " )"; SBLabel2.Text = tempstr; SBLabel2.Location( 5,19 ); SBLabel2.Font = SBTitle; tempstr = "Filter Inputs: 0 = No Filter, " + "1 = " + numtostr(FC1_MaLen1,0) + " MovAvg > " + numtostr(FC1_MaLen2,0) + " MovAvg, " + "2 = " + numtostr(FC2_PctRLen,0) + " %R > " + numtostr(FC2_PctRTreshold,0) + ", " + "3 = " + numtostr(FC3_DMILen,0) + " DMI+ > " + numtostr(FC3_DMILen,0) + " DMI-"; SBLabel3 = Label.Create("", 720, 18); SBLabel3.Text = tempstr; SBLabel3.Location( 10,38 ); tempstr = "Trigger Inputs: 0 = Bar Close, " + "1 = " + numtostr(TC1_MaLen1,0) + " MovAvg Xabove " + numtostr(TC1_MaLen2,0) + " MovAvg, " + "2 = Low Xabove " + numtostr(TC2_MaLen,0) + " MovAvg ofHighs, " + "3 = " + numtostr(TC3_MOLen,0) + " MomentumAvg Xabove 0"; SBLabel4 = Label.Create("", 720, 18); SBLabel4.Text = tempstr; SBLabel4.Location( 10,57 ); tempstr = "Exit Inputs: 0 = " + numtostr(XC0_BSE,0) + " BarsSinceEntry " + "1 = " + numtostr(XC1_ATRLen,0) + " ATR Trails " + numtostr(XC1_ATRs,0) + " ATRs, " + "2 = High Xbelow " + numtostr(XC2_MALen,0) + " MovAvg ofLows, " + "3 = " + numtostr(XC3_MOLen,0) + " MomentumAvg Xbelow 0"; SBLabel5 = Label.Create("", 720, 18); SBLabel5.Text = tempstr; SBLabel5.Location( 10,76 ); SBForm.AddControl(SBLabel1); SBForm.AddControl(SBLabel2); SBForm.AddControl(SBLabel3); SBForm.AddControl(SBLabel4); SBForm.AddControl(SBLabel5); SBForm.Dock = DockStyle.bottom; SBForm.show(); end; end; If FilterCriteria = 1 then begin FC1_MaVal1 = Average(Close, FC1_MaLen1); FC1_MaVal2 = Average(Close, FC1_MaLen2); end; If FilterCriteria = 2 then FC2_PctRVal = PercentR(FC2_PctRLen); If FilterCriteria = 3 then begin FC3_DMIPlus = DMIPLus(FC3_DMILen); FC3_DMIMinus = DMIMinus(FC3_DMILen); end; If TriggerCriteria = 1 then begin TC1_MaVal1 = Average(Close, TC1_MaLen1); TC1_MaVal2 = Average(Close, TC1_MaLen2); end; If TriggerCriteria = 2 then TC2_MaVal = Average(Close, TC2_MaLen); If TriggerCriteria = 3 then TC3_MOVal = Average(Momentum(Close, TC3_MOLen),3); If ExitCriteria = 1 then begin XC1_ATR = AvgTrueRange(XC1_ATRLen); XC1_ATRVal = XC1_ATR * XC1_ATRs; end; If ExitCriteria = 2 then XC2_MAVal = Average(Close, XC2_MALen); If ExitCriteria = 3 then XC3_MOVal = Average(Momentum(Close, XC3_MOLen),3); SetStopShare; MP = MarketPosition; Switch(FilterCriteria) Begin Case 0: FCCond = TRUE; Case 1: FCCond = FC1_MaVal1 > FC1_MaVal2; Case 2: FCCond = FC2_PctRVal > FC2_PctRTreshold; Case 3: FCCond = FC3_DMIPlus > FC3_DMIMinus; Default: FCCond = FALSE; end; { Define Switch statements } Switch(TriggerCriteria) Begin Case 0: if MP = 0 AND FCCond then Buy("LE") this bar on Close; Case 1: if MP = 0 AND FCCond AND TC1_MaVal1 > TC1_MaVal2 then Buy("Avgx LE") this bar on Close; Case 2: if MP = 0 AND FCCond AND Low > TC2_MaVal then Buy("Lx LE") this bar on Close; Case 3: if MP = 0 AND FCCond AND TC3_MOVal > 0 then Buy("Mox LE") this bar on Close; Default: FCCond = FALSE; end; Switch(ExitCriteria) Begin Case 0: If MP = 1 AND BarsSinceEntry >= XC0_BSE then Sell("BSE LX") this bar on Close; Case 1: If MP = 1 then Setdollartrailing(XC1_ATRVal * BigPointValue); Case 2: If MP = 1 AND High Crosses Below XC2_MAVal then Sell("Hx LX") this bar on Close; Case 3: If MP = 1 AND XC3_MOVal Crosses Below 0 then Sell("Mox LX") this bar on Close; Default: SetExitonClose; end;
Revision: 66392
Updated Code
at May 1, 2014 16:47 by tedpenner
Updated Code
{ Set up namespaces } using elsystem.windows.forms; using elsystem.drawing; { Declare inputs } inputs: FilterCriteria(0), TriggerCriteria(0), ExitCriteria(0), FC1_MaLen1(50), FC1_MaLen2(200), FC2_PctRLen(50), FC2_PctRTreshold(50), FC3_DMILen(50), TC1_MaLen1(20), TC1_MaLen2(50), TC2_MaLen(20), TC3_MOLen(20), XC0_BSE(20), XC1_ATRLen(20), XC1_ATRs(2), XC2_MALen(20), XC3_MOLen(20); { Define variables } vars: FC1_MaVal1(0), FC1_MaVal2(0), FC2_PctRVal(0), FC3_DMIPlus(0), FC3_DMIMinus(0), TC1_MaVal1(0), TC1_MaVal2(0), TC2_MaVal(0), TC3_MOVal(0), XC1_ATR(0), XC1_ATRVal(0), XC2_MAVal(0), XC3_MOVal(0), FCCond(False), MP(0); vars: Form SBForm( Null ), Label SBLabel1(Null), Label SBLabel2(Null ), Label SBLabel3(Null), Label SBLabel4(Null), Label SBLabel5(Null), Font SBTitle(Null); method void AnalysisTechnique_Initialized( elsystem.Object sender, elsystem.InitializedEventArgs args ) var: string tempstr; begin { Define If statements } If Getappinfo(aiOptimizing) = 0 then begin SBForm = form.create("StrategyBuilder", 1080, 105); SBLabel1 = Label.Create("Strategy Builder (Long Entry Only)", 720, 18); SBLabel1.Location( 1,1 ); SBTitle = Font.Create("",8,fontstyle.bold); SBLabel1.Font = SBTitle; SBLabel2 = Label.Create("", 720, 18); tempstr = "Current Input Settings:( Filter Criteria = " + numtostr(FilterCriteria,0) + " / Trigger Criteria = " + numtostr(TriggerCriteria,0) + " / Exit Criteria = " + numtostr(ExitCriteria,0) + " )"; SBLabel2.Text = tempstr; SBLabel2.Location( 5,19 ); SBLabel2.Font = SBTitle; tempstr = "Filter Inputs: 0 = No Filter, " + "1 = " + numtostr(FC1_MaLen1,0) + " MovAvg > " + numtostr(FC1_MaLen2,0) + " MovAvg, " + "2 = " + numtostr(FC2_PctRLen,0) + " %R > " + numtostr(FC2_PctRTreshold,0) + ", " + "3 = " + numtostr(FC3_DMILen,0) + " DMI+ > " + numtostr(FC3_DMILen,0) + " DMI-"; SBLabel3 = Label.Create("", 720, 18); SBLabel3.Text = tempstr; SBLabel3.Location( 10,38 ); tempstr = "Trigger Inputs: 0 = Bar Close, " + "1 = " + numtostr(TC1_MaLen1,0) + " MovAvg Xabove " + numtostr(TC1_MaLen2,0) + " MovAvg, " + "2 = Low Xabove " + numtostr(TC2_MaLen,0) + " MovAvg ofHighs, " + "3 = " + numtostr(TC3_MOLen,0) + " MomentumAvg Xabove 0"; SBLabel4 = Label.Create("", 720, 18); SBLabel4.Text = tempstr; SBLabel4.Location( 10,57 ); tempstr = "Exit Inputs: 0 = " + numtostr(XC0_BSE,0) + " BarsSinceEntry " + "1 = " + numtostr(XC1_ATRLen,0) + " ATR Trails " + numtostr(XC1_ATRs,0) + " ATRs, " + "2 = High Xbelow " + numtostr(XC2_MALen,0) + " MovAvg ofLows, " + "3 = " + numtostr(XC3_MOLen,0) + " MomentumAvg Xbelow 0"; SBLabel5 = Label.Create("", 720, 18); SBLabel5.Text = tempstr; SBLabel5.Location( 10,76 ); SBForm.AddControl(SBLabel1); SBForm.AddControl(SBLabel2); SBForm.AddControl(SBLabel3); SBForm.AddControl(SBLabel4); SBForm.AddControl(SBLabel5); SBForm.Dock = DockStyle.bottom; SBForm.show(); end; end; If FilterCriteria = 1 then begin FC1_MaVal1 = Average(Close, FC1_MaLen1); FC1_MaVal2 = Average(Close, FC1_MaLen2); end; If FilterCriteria = 2 then FC2_PctRVal = PercentR(FC2_PctRLen); If FilterCriteria = 3 then begin FC3_DMIPlus = DMIPLus(FC3_DMILen); FC3_DMIMinus = DMIMinus(FC3_DMILen); end; If TriggerCriteria = 1 then begin TC1_MaVal1 = Average(Close, TC1_MaLen1); TC1_MaVal2 = Average(Close, TC1_MaLen2); end; If TriggerCriteria = 2 then TC2_MaVal = Average(Close, TC2_MaLen); If TriggerCriteria = 3 then TC3_MOVal = Average(Momentum(Close, TC3_MOLen),3); If ExitCriteria = 1 then begin XC1_ATR = AvgTrueRange(XC1_ATRLen); XC1_ATRVal = XC1_ATR * XC1_ATRs; end; If ExitCriteria = 2 then XC2_MAVal = Average(Close, XC2_MALen); If ExitCriteria = 3 then XC3_MOVal = Average(Momentum(Close, XC3_MOLen),3); SetStopShare; MP = MarketPosition; Switch(FilterCriteria) Begin Case 0: FCCond = TRUE; Case 1: FCCond = FC1_MaVal1 > FC1_MaVal2; Case 2: FCCond = FC2_PctRVal > FC2_PctRTreshold; Case 3: FCCond = FC3_DMIPlus > FC3_DMIMinus; Default: FCCond = FALSE; end; { Define Switch statements } Switch(TriggerCriteria) Begin Case 0: if MP = 0 AND FCCond then Buy("LE") this bar on Close; Case 1: if MP = 0 AND FCCond AND TC1_MaVal1 > TC1_MaVal2 then Buy("Avgx LE") this bar on Close; Case 2: if MP = 0 AND FCCond AND Low > TC2_MaVal then Buy("Lx LE") this bar on Close; Case 3: if MP = 0 AND FCCond AND TC3_MOVal > 0 then Buy("Mox LE") this bar on Close; Default: FCCond = FALSE; end; Switch(ExitCriteria) Begin Case 0: If MP = 1 AND BarsSinceEntry >= XC0_BSE then Sell("BSE LX") this bar on Close; Case 1: If MP = 1 then Setdollartrailing(XC1_ATRVal * BigPointValue); Case 2: If MP = 1 AND High Crosses Below XC2_MAVal then Sell("Hx LX") this bar on Close; Case 3: If MP = 1 AND XC3_MOVal Crosses Below 0 then Sell("Mox LX") this bar on Close; Default: SetExitonClose; end;
Revision: 66391
Updated Code
at April 27, 2014 16:52 by tedpenner
Updated Code
using elsystem.windows.forms; using elsystem.drawing; inputs: FilterCriteria(0), TriggerCriteria(0), ExitCriteria(0), FC1_MaLen1(50), FC1_MaLen2(200), FC2_PctRLen(50), FC2_PctRTreshold(50), FC3_DMILen(50), TC1_MaLen1(20), TC1_MaLen2(50), TC2_MaLen(20), TC3_MOLen(20), XC0_BSE(20), XC1_ATRLen(20), XC1_ATRs(2), XC2_MALen(20), XC3_MOLen(20); vars: FC1_MaVal1(0), FC1_MaVal2(0), FC2_PctRVal(0), FC3_DMIPlus(0), FC3_DMIMinus(0), TC1_MaVal1(0), TC1_MaVal2(0), TC2_MaVal(0), TC3_MOVal(0), XC1_ATR(0), XC1_ATRVal(0), XC2_MAVal(0), XC3_MOVal(0), FCCond(False), MP(0); vars: Form SBForm( Null ), Label SBLabel1(Null), Label SBLabel2(Null ), Label SBLabel3(Null), Label SBLabel4(Null), Label SBLabel5(Null), Font SBTitle(Null); method void AnalysisTechnique_Initialized( elsystem.Object sender, elsystem.InitializedEventArgs args ) var: string tempstr; begin If Getappinfo(aiOptimizing) = 0 then begin SBForm = form.create("StrategyBuilder", 1080, 105); SBLabel1 = Label.Create("Strategy Builder (Long Entry Only)", 720, 18); SBLabel1.Location( 1,1 ); SBTitle = Font.Create("",8,fontstyle.bold); SBLabel1.Font = SBTitle; SBLabel2 = Label.Create("", 720, 18); tempstr = "Current Input Settings:( Filter Criteria = " + numtostr(FilterCriteria,0) + " / Trigger Criteria = " + numtostr(TriggerCriteria,0) + " / Exit Criteria = " + numtostr(ExitCriteria,0) + " )"; SBLabel2.Text = tempstr; SBLabel2.Location( 5,19 ); SBLabel2.Font = SBTitle; tempstr = "Filter Inputs: 0 = No Filter, " + "1 = " + numtostr(FC1_MaLen1,0) + " MovAvg > " + numtostr(FC1_MaLen2,0) + " MovAvg, " + "2 = " + numtostr(FC2_PctRLen,0) + " %R > " + numtostr(FC2_PctRTreshold,0) + ", " + "3 = " + numtostr(FC3_DMILen,0) + " DMI+ > " + numtostr(FC3_DMILen,0) + " DMI-"; SBLabel3 = Label.Create("", 720, 18); SBLabel3.Text = tempstr; SBLabel3.Location( 10,38 ); tempstr = "Trigger Inputs: 0 = Bar Close, " + "1 = " + numtostr(TC1_MaLen1,0) + " MovAvg Xabove " + numtostr(TC1_MaLen2,0) + " MovAvg, " + "2 = Low Xabove " + numtostr(TC2_MaLen,0) + " MovAvg ofHighs, " + "3 = " + numtostr(TC3_MOLen,0) + " MomentumAvg Xabove 0"; SBLabel4 = Label.Create("", 720, 18); SBLabel4.Text = tempstr; SBLabel4.Location( 10,57 ); tempstr = "Exit Inputs: 0 = " + numtostr(XC0_BSE,0) + " BarsSinceEntry " + "1 = " + numtostr(XC1_ATRLen,0) + " ATR Trails " + numtostr(XC1_ATRs,0) + " ATRs, " + "2 = High Xbelow " + numtostr(XC2_MALen,0) + " MovAvg ofLows, " + "3 = " + numtostr(XC3_MOLen,0) + " MomentumAvg Xbelow 0"; SBLabel5 = Label.Create("", 720, 18); SBLabel5.Text = tempstr; SBLabel5.Location( 10,76 ); SBForm.AddControl(SBLabel1); SBForm.AddControl(SBLabel2); SBForm.AddControl(SBLabel3); SBForm.AddControl(SBLabel4); SBForm.AddControl(SBLabel5); SBForm.Dock = DockStyle.bottom; SBForm.show(); end; end; If FilterCriteria = 1 then begin FC1_MaVal1 = Average(Close, FC1_MaLen1); FC1_MaVal2 = Average(Close, FC1_MaLen2); end; If FilterCriteria = 2 then FC2_PctRVal = PercentR(FC2_PctRLen); If FilterCriteria = 3 then begin FC3_DMIPlus = DMIPLus(FC3_DMILen); FC3_DMIMinus = DMIMinus(FC3_DMILen); end; If TriggerCriteria = 1 then begin TC1_MaVal1 = Average(Close, TC1_MaLen1); TC1_MaVal2 = Average(Close, TC1_MaLen2); end; If TriggerCriteria = 2 then TC2_MaVal = Average(Close, TC2_MaLen); If TriggerCriteria = 3 then TC3_MOVal = Average(Momentum(Close, TC3_MOLen),3); If ExitCriteria = 1 then begin XC1_ATR = AvgTrueRange(XC1_ATRLen); XC1_ATRVal = XC1_ATR * XC1_ATRs; end; If ExitCriteria = 2 then XC2_MAVal = Average(Close, XC2_MALen); If ExitCriteria = 3 then XC3_MOVal = Average(Momentum(Close, XC3_MOLen),3); SetStopShare; MP = MarketPosition; Switch(FilterCriteria) Begin Case 0: FCCond = TRUE; Case 1: FCCond = FC1_MaVal1 > FC1_MaVal2; Case 2: FCCond = FC2_PctRVal > FC2_PctRTreshold; Case 3: FCCond = FC3_DMIPlus > FC3_DMIMinus; Default: FCCond = FALSE; end; Switch(TriggerCriteria) Begin Case 0: if MP = 0 AND FCCond then Buy("LE") this bar on Close; Case 1: if MP = 0 AND FCCond AND TC1_MaVal1 > TC1_MaVal2 then Buy("Avgx LE") this bar on Close; Case 2: if MP = 0 AND FCCond AND Low > TC2_MaVal then Buy("Lx LE") this bar on Close; Case 3: if MP = 0 AND FCCond AND TC3_MOVal > 0 then Buy("Mox LE") this bar on Close; Default: FCCond = FALSE; end; Switch(ExitCriteria) Begin Case 0: If MP = 1 AND BarsSinceEntry >= XC0_BSE then Sell("BSE LX") this bar on Close; Case 1: If MP = 1 then Setdollartrailing(XC1_ATRVal * BigPointValue); Case 2: If MP = 1 AND High Crosses Below XC2_MAVal then Sell("Hx LX") this bar on Close; Case 3: If MP = 1 AND XC3_MOVal Crosses Below 0 then Sell("Mox LX") this bar on Close; Default: SetExitonClose; end;
Revision: 66390
Updated Code
at April 27, 2014 16:36 by tedpenner
Updated Code
using elsystem.windows.forms; using elsystem.drawing; inputs: FilterCriteria(0), TriggerCriteria(0), ExitCriteria(0), FC1_MaLen1(50), FC1_MaLen2(200), FC2_PctRLen(50), FC2_PctRTreshold(50), FC3_DMILen(50), TC1_MaLen1(20), TC1_MaLen2(50), TC2_MaLen(20), TC3_MOLen(20), XC0_BSE(20), XC1_ATRLen(20), XC1_ATRs(2), XC2_MALen(20), XC3_MOLen(20); vars: FC1_MaVal1(0), FC1_MaVal2(0), FC2_PctRVal(0), FC3_DMIPlus(0), FC3_DMIMinus(0), TC1_MaVal1(0), TC1_MaVal2(0), TC2_MaVal(0), TC3_MOVal(0), XC1_ATR(0), XC1_ATRVal(0), XC2_MAVal(0), XC3_MOVal(0), FCCond(False), MP(0); vars: Form SBForm( Null ), Label SBLabel1(Null), Label SBLabel2(Null ), Label SBLabel3(Null), Label SBLabel4(Null), Label SBLabel5(Null), Font SBTitle(Null); method void AnalysisTechnique_Initialized( elsystem.Object sender, elsystem.InitializedEventArgs args ) var: string tempstr; begin If Getappinfo(aiOptimizing) = 0 then begin SBForm = form.create("StrategyBuilder�", 1080, 105); SBLabel1 = Label.Create("Strategy Builder (Long Entry Only)", 720, 18); SBLabel1.Location( 1,1 ); SBTitle = Font.Create("",8,fontstyle.bold); SBLabel1.Font = SBTitle; SBLabel2 = Label.Create("", 720, 18); tempstr = "Current Input Settings:( Filter Criteria = " + numtostr(FilterCriteria,0) + " / Trigger Criteria = " + numtostr(TriggerCriteria,0) + " / Exit Criteria = " + numtostr(ExitCriteria,0) + " )"; SBLabel2.Text = tempstr; SBLabel2.Location( 5,19 ); SBLabel2.Font = SBTitle; StrategyBuilder� Page 9 of 11 tempstr = "Filter Inputs: 0 = No Filter, " + "1 = " + numtostr(FC1_MaLen1,0) + " MovAvg > " + numtostr(FC1_MaLen2,0) + " MovAvg, " + "2 = " + numtostr(FC2_PctRLen,0) + " %R > " + numtostr(FC2_PctRTreshold,0) + ", " + "3 = " + numtostr(FC3_DMILen,0) + " DMI+ > " + numtostr(FC3_DMILen,0) + " DMI-"; SBLabel3 = Label.Create("", 720, 18); SBLabel3.Text = tempstr; SBLabel3.Location( 10,38 ); tempstr = "Trigger Inputs: 0 = Bar Close, " + "1 = " + numtostr(TC1_MaLen1,0) + " MovAvg Xabove " + numtostr(TC1_MaLen2,0) + " MovAvg, " + "2 = Low Xabove " + numtostr(TC2_MaLen,0) + " MovAvg ofHighs, " + "3 = " + numtostr(TC3_MOLen,0) + " MomentumAvg Xabove 0"; SBLabel4 = Label.Create("", 720, 18); SBLabel4.Text = tempstr; SBLabel4.Location( 10,57 ); tempstr = "Exit Inputs: 0 = " + numtostr(XC0_BSE,0) + " BarsSinceEntry " + "1 = " + numtostr(XC1_ATRLen,0) + " ATR Trails " + numtostr(XC1_ATRs,0) + " ATRs, " + "2 = High Xbelow " + numtostr(XC2_MALen,0) + " MovAvg ofLows, " + "3 = " + numtostr(XC3_MOLen,0) + " MomentumAvg Xbelow 0"; SBLabel5 = Label.Create("", 720, 18); SBLabel5.Text = tempstr; SBLabel5.Location( 10,76 ); SBForm.AddControl(SBLabel1); SBForm.AddControl(SBLabel2); SBForm.AddControl(SBLabel3); SBForm.AddControl(SBLabel4); SBForm.AddControl(SBLabel5); SBForm.Dock = DockStyle.bottom; SBForm.show(); end; end; If FilterCriteria = 1 then begin FC1_MaVal1 = Average(Close, FC1_MaLen1); FC1_MaVal2 = Average(Close, FC1_MaLen2); end; If FilterCriteria = 2 then FC2_PctRVal = PercentR(FC2_PctRLen); If FilterCriteria = 3 then begin FC3_DMIPlus = DMIPLus(FC3_DMILen); FC3_DMIMinus = DMIMinus(FC3_DMILen); end; If TriggerCriteria = 1 then begin TC1_MaVal1 = Average(Close, TC1_MaLen1); TC1_MaVal2 = Average(Close, TC1_MaLen2); end; StrategyBuilder� Page 10 of 11 If TriggerCriteria = 2 then TC2_MaVal = Average(Close, TC2_MaLen); If TriggerCriteria = 3 then TC3_MOVal = Average(Momentum(Close, TC3_MOLen),3); If ExitCriteria = 1 then begin XC1_ATR = AvgTrueRange(XC1_ATRLen); XC1_ATRVal = XC1_ATR * XC1_ATRs; end; If ExitCriteria = 2 then XC2_MAVal = Average(Close, XC2_MALen); If ExitCriteria = 3 then XC3_MOVal = Average(Momentum(Close, XC3_MOLen),3); SetStopShare; MP = MarketPosition; Switch(FilterCriteria) Begin Case 0: FCCond = TRUE; Case 1: FCCond = FC1_MaVal1 > FC1_MaVal2; Case 2: FCCond = FC2_PctRVal > FC2_PctRTreshold; Case 3: FCCond = FC3_DMIPlus > FC3_DMIMinus; Default: FCCond = FALSE; end; Switch(TriggerCriteria) Begin Case 0: if MP = 0 AND FCCond then Buy("LE") this bar on Close; Case 1: if MP = 0 AND FCCond AND TC1_MaVal1 > TC1_MaVal2 then Buy("Avgx LE") this bar on Close; Case 2: if MP = 0 AND FCCond AND Low > TC2_MaVal then Buy("Lx LE") this bar on Close; Case 3: if MP = 0 AND FCCond AND TC3_MOVal > 0 then Buy("Mox LE") this bar on Close; Default: FCCond = FALSE; end; Switch(ExitCriteria) Begin Case 0: If MP = 1 AND BarsSinceEntry >= XC0_BSE then Sell("BSE LX") this bar on Close; Case 1: If MP = 1 then Setdollartrailing(XC1_ATRVal * BigPointValue); Case 2: If MP = 1 AND High Crosses Below XC2_MAVal then Sell("Hx LX") this bar on Close; Case 3: If MP = 1 AND XC3_MOVal Crosses Below 0 then Sell("Mox LX") this bar on Close; Default: SetExitonClose; end;
Revision: 66389
Updated Code
at April 27, 2014 16:35 by tedpenner
Updated Code
using elsystem.windows.forms; using elsystem.drawing; inputs: FilterCriteria(0), TriggerCriteria(0), ExitCriteria(0), FC1_MaLen1(50), FC1_MaLen2(200), FC2_PctRLen(50), FC2_PctRTreshold(50), FC3_DMILen(50), TC1_MaLen1(20), TC1_MaLen2(50), TC2_MaLen(20), TC3_MOLen(20), XC0_BSE(20), XC1_ATRLen(20), XC1_ATRs(2), XC2_MALen(20), XC3_MOLen(20); vars: FC1_MaVal1(0), FC1_MaVal2(0), FC2_PctRVal(0), FC3_DMIPlus(0), FC3_DMIMinus(0), TC1_MaVal1(0), TC1_MaVal2(0), TC2_MaVal(0), TC3_MOVal(0), XC1_ATR(0), XC1_ATRVal(0), XC2_MAVal(0), XC3_MOVal(0), FCCond(False), MP(0); vars: Form SBForm( Null ), Label SBLabel1(Null), Label SBLabel2(Null ), Label SBLabel3(Null), Label SBLabel4(Null), Label SBLabel5(Null), Font SBTitle(Null); method void AnalysisTechnique_Initialized( elsystem.Object sender, elsystem.InitializedEventArgs args ) var: string tempstr; begin If Getappinfo(aiOptimizing) = 0 then begin SBForm = form.create("StrategyBuilderâ„¢", 1080, 105); SBLabel1 = Label.Create("Strategy Builder (Long Entry Only)", 720, 18); SBLabel1.Location( 1,1 ); SBTitle = Font.Create("",8,fontstyle.bold); SBLabel1.Font = SBTitle; SBLabel2 = Label.Create("", 720, 18); tempstr = "Current Input Settings:( Filter Criteria = " + numtostr(FilterCriteria,0) + " / Trigger Criteria = " + numtostr(TriggerCriteria,0) + " / Exit Criteria = " + numtostr(ExitCriteria,0) + " )"; SBLabel2.Text = tempstr; SBLabel2.Location( 5,19 ); SBLabel2.Font = SBTitle; StrategyBuilderâ„¢ Page 9 of 11 tempstr = "Filter Inputs: 0 = No Filter, " + "1 = " + numtostr(FC1_MaLen1,0) + " MovAvg > " + numtostr(FC1_MaLen2,0) + " MovAvg, " + "2 = " + numtostr(FC2_PctRLen,0) + " %R > " + numtostr(FC2_PctRTreshold,0) + ", " + "3 = " + numtostr(FC3_DMILen,0) + " DMI+ > " + numtostr(FC3_DMILen,0) + " DMI-"; SBLabel3 = Label.Create("", 720, 18); SBLabel3.Text = tempstr; SBLabel3.Location( 10,38 ); tempstr = "Trigger Inputs: 0 = Bar Close, " + "1 = " + numtostr(TC1_MaLen1,0) + " MovAvg Xabove " + numtostr(TC1_MaLen2,0) + " MovAvg, " + "2 = Low Xabove " + numtostr(TC2_MaLen,0) + " MovAvg ofHighs, " + "3 = " + numtostr(TC3_MOLen,0) + " MomentumAvg Xabove 0"; SBLabel4 = Label.Create("", 720, 18); SBLabel4.Text = tempstr; SBLabel4.Location( 10,57 ); tempstr = "Exit Inputs: 0 = " + numtostr(XC0_BSE,0) + " BarsSinceEntry " + "1 = " + numtostr(XC1_ATRLen,0) + " ATR Trails " + numtostr(XC1_ATRs,0) + " ATRs, " + "2 = High Xbelow " + numtostr(XC2_MALen,0) + " MovAvg ofLows, " + "3 = " + numtostr(XC3_MOLen,0) + " MomentumAvg Xbelow 0"; SBLabel5 = Label.Create("", 720, 18); SBLabel5.Text = tempstr; SBLabel5.Location( 10,76 ); SBForm.AddControl(SBLabel1); SBForm.AddControl(SBLabel2); SBForm.AddControl(SBLabel3); SBForm.AddControl(SBLabel4); SBForm.AddControl(SBLabel5); SBForm.Dock = DockStyle.bottom; SBForm.show(); end; end; If FilterCriteria = 1 then begin FC1_MaVal1 = Average(Close, FC1_MaLen1); FC1_MaVal2 = Average(Close, FC1_MaLen2); end; If FilterCriteria = 2 then FC2_PctRVal = PercentR(FC2_PctRLen); If FilterCriteria = 3 then begin FC3_DMIPlus = DMIPLus(FC3_DMILen); FC3_DMIMinus = DMIMinus(FC3_DMILen); end; If TriggerCriteria = 1 then begin TC1_MaVal1 = Average(Close, TC1_MaLen1); TC1_MaVal2 = Average(Close, TC1_MaLen2); end; StrategyBuilderâ„¢ Page 10 of 11 If TriggerCriteria = 2 then TC2_MaVal = Average(Close, TC2_MaLen); If TriggerCriteria = 3 then TC3_MOVal = Average(Momentum(Close, TC3_MOLen),3); If ExitCriteria = 1 then begin XC1_ATR = AvgTrueRange(XC1_ATRLen); XC1_ATRVal = XC1_ATR * XC1_ATRs; end; If ExitCriteria = 2 then XC2_MAVal = Average(Close, XC2_MALen); If ExitCriteria = 3 then XC3_MOVal = Average(Momentum(Close, XC3_MOLen),3); SetStopShare; MP = MarketPosition; Switch(FilterCriteria) Begin Case 0: FCCond = TRUE; Case 1: FCCond = FC1_MaVal1 > FC1_MaVal2; Case 2: FCCond = FC2_PctRVal > FC2_PctRTreshold; Case 3: FCCond = FC3_DMIPlus > FC3_DMIMinus; Default: FCCond = FALSE; end; Switch(TriggerCriteria) Begin Case 0: if MP = 0 AND FCCond then Buy("LE") this bar on Close; Case 1: if MP = 0 AND FCCond AND TC1_MaVal1 > TC1_MaVal2 then Buy("Avgx LE") this bar on Close; Case 2: if MP = 0 AND FCCond AND Low > TC2_MaVal then Buy("Lx LE") this bar on Close; Case 3: if MP = 0 AND FCCond AND TC3_MOVal > 0 then Buy("Mox LE") this bar on Close; Default: FCCond = FALSE; end; Switch(ExitCriteria) Begin Case 0: If MP = 1 AND BarsSinceEntry >= XC0_BSE then Sell("BSE LX") this bar on Close; Case 1: If MP = 1 then Setdollartrailing(XC1_ATRVal * BigPointValue); Case 2: If MP = 1 AND High Crosses Below XC2_MAVal then Sell("Hx LX") this bar on Close; Case 3: If MP = 1 AND XC3_MOVal Crosses Below 0 then Sell("Mox LX") this bar on Close; Default: SetExitonClose; end;
Revision: 66388
Initial Code
Initial URL
Initial Description
Initial Title
Initial Tags
Initial Language
at April 27, 2014 13:04 by tedpenner
Initial Code
https://community.tradestation.com/Discussions/Topic.aspx?Topic_ID=133749&SearchTerm=&txtExactMatch= https://community.tradestation.com/Discussions/DATA/20130724211539Strategy_Builder.pdf
Initial URL
Initial Description
https://community.tradestation.com/Discussions/Topic.aspx?Topic_ID=133749&SearchTerm=&txtExactMatch= https://community.tradestation.com/Discussions/DATA/20130724211539Strategy_Builder.pdf
Initial Title
Tradestation Strategy Builder v1.0 EL Code
Initial Tags
Initial Language
C#