请帮我分析一下这段代码

老师好! 请帮我检查一下我写的这段代码问题:我本想通过代码实现的要求是: 一:当下单成交后行情未达到我设定的止盈比后价格就下跌或者上涨采用固定止损平仓价格等于开仓价加/减去1-1.5%。 二:当下单成交后价格上涨或者下跌后价格大于或者小于我开仓价(我设定的开仓价+1%)后启动止盈移动止损,并且移动止盈线不是固定的值,当价格不断破新高/低时,加上当根K线最高/低价-前一根K线最高/低价的差(这样做的目的是为了在行情急速上涨或者下跌时能以最利的价格止盈)。 三:我用最大一个止盈比达到最大止盈目的,(如果价格快速达到我设定的最大止盈比,就按最大止盈比成交,这是我看到外盘上一个交易系统这样做的,效果很好,) 这段代码编译没有问题。 谢谢老师(学技不精,敬请谅解,呵呵) 代码如下: if (MarketPosition==1 AND BarsSinceEntry>=1) //有多单的情况 { if (HighestAfterEntry >=MyEntryPrice+MyEntryPrice*TrailingSTT2/100) { MyExitPrice = HighestAfterEntry ; if (open<MyExitPrice) MyExitPrice=Open;//如果该K线有开盘跳空触发,则用开盘价代替 Sell (0,MyExitPrice); Commentary(\"最大止盈\"); } While(HighestAfterEntry > MyEntryPrice+MyEntryPrice*TrailingSTT1/100)//跟踪止盈启动 //我想通过循环控制这个移动止盈,感觉是错的。 { MyExitPrice = MyEntryPrice+(HighestAfterEntry-HighestAfterEntry[1]); if (open<MyExitPrice) MyExitPrice=Open; Sell (0,MyExitPrice); DdZJCH = True; Commentary(\"多单移动止盈\"); } If (Low<=MyEntryPrice-MyEntryPrice*StopLossSET/100) //止损的条件表达式 { MyExitPrice =MyEntryPrice-StopLossSET/100; if (open< MyExitPrice ) MyExitPrice =Open-MinPoint;//如果该K线有开盘跳空触发,则用开盘价代替 Sell (0, MyExitPrice ); Commentary(\"多单止损\"); } }

请老师帮我看看代码的判断逻辑有什么问题?由其是循环那块,写的有什么问题,并且请帮我指出问题,谢谢 if (MarketPosition==1 AND BarsSinceEntry>=1) //有多单的情况 { if (HighestAfterEntry >=MyEntryPrice+MyEntryPrice*TrailingSTT2/100) { MyExitPrice = HighestAfterEntry ; if (open<MyExitPrice) MyExitPrice=Open;//如果该K线有开盘跳空触发,则用开盘价代替 Sell (0,MyExitPrice); Commentary(\"最大止盈\"); } Else If(HighestAfterEntry > MyEntryPrice+MyEntryPrice*TrailingSTT1/100)//跟踪止盈启动,如果当前价格大于开仓价格1%,止损价移动到开仓价格+10跳 { MyExitPrice = MyEntryPrice+2*MinPoint; While (HighestAfterEntry>HighestAfterEntry[1]) { MyExitPrice = MyEntryPrice+(HighestAfterEntry-HighestAfterEntry[1]); if (Open<MyExitPrice) MyExitPrice=Open;//如果该K线有开盘跳空触发,则用开盘价代替 Sell (0,MyExitPrice); DdZJCH = True; Commentary(\"多单移动止盈\"); } } Else If (Low<=MyEntryPrice-MyEntryPrice*StopLossSET/100) //止损的条件表达式 { MyExitPrice =MyEntryPrice-StopLossSET/100; if (open< MyExitPrice ) MyExitPrice =Open-MinPoint;//如果该K线有开盘跳空触发,则用开盘价代替 Sell (0, MyExitPrice ); DdZJCH = True; Commentary(\"多单止损\"); } }

你推荐的这个移动止损的写法,我有个模型在用,我现在想要实现的是移动跟踪价格来实现止返盈,只是想让你们帮我查看一下问题所在,或者有更好的模型应用思路。

首先第一,图表信号系统,获取不了成交价。你记录的是信号价格,和委托价格,成交价格,不一定是一样的。获取成交价要用onorder等订单时间域来获取。而且成交价在历史bar上是不存在这个概念的,因为历史数据无法复现撮合成交。第二,根据上面的结论,你如果想要做移动止盈,那么基准判断价格就是开仓的信号价格。最后,移动止盈是在开发手册里已经写好的案例内容。问之前最好先好好看看手册或者视频有没有教过。