求助跟踪止损编程的问题

ParamsNumeric lots1(1);Numeric LengthS(3);Numeric LengthL(100);Numeric LengthOS(30);varsSeries<Numeric> OS;Series<Numeric> AOS;Numeric lots;Events onBar(ArrayRef<Integer> indexs) { lots=lots1; OS=(Average(close,LengthS)-wAverage(close,LengthL)); AOS=Average(OS,LengthOS); if(crossover(AOS[1],0)) { Buy(lots,Open); } if(CrossUnder(AOS[1],0)) { SellShort(lots,Open); } } /*能否请老师帮忙做几个优化, 1.每次最多只开1手, 2.如何增加跟踪止损或止盈, 比如开多单后,沿着趋势往上,回撤20跳跟踪止损多单; 开空单,沿着趋势往下,回撤20跳跟踪止损空单; 多空单,只要盈利100跳,止盈 */

//移动止盈止损---------------------------------以下 //记录开仓后的最高最低价 If(BarsSinceEntry == 0) { HighestAfterEntry = Close; LowestAfterEntry = Close; If(MarketPosition <> 0) //建仓的K线 { HighestAfterEntry = High; LowestAfterEntry = Low; } } Else { HighestAfterEntry = Max(HighestAfterEntry, High); LowestAfterEntry = Min(LowestAfterEntry, Low); } KliqPoint = LowestAfterEntry * (1 + StopPer1 * 0.01) ; //空单吊灯 DliqPoint = HighestAfterEntry * (1 - StopPer1 * 0.01) ; //多单吊灯 //画线 if(MarketPosition == 1) { plt1.line("多头吊灯", DliqPoint); } Else if(MarketPosition == -1) { plt1.line("空头吊灯", KliqPoint); } If(MarketPosition == 1 And BarsSinceEntry >= 1 and L < DliqPoint[1]) // 有多仓的情况 { sell(0, min(O, DliqPoint[1])); Commentary("多单移动止盈"); } else if (MarketPosition == -1 And BarsSinceEntry >= 1 and H > KliqPoint[1]) { BuyToCover(0, max(O, KliqPoint[1])); Commentary("空单移动止盈"); } //移动止盈止损---------------------------------以上

建议投稿