需要帮助来发现一些轻微的错误。 - 页 3

 

长的&&和||条件,我把这部分分解成许多连锁的if语句。我还试着用MarketInfo(OrderSymbol() , MODE_ASK/BID)代替OrderClosePrice()。

这一部分有时仍然有效,而不是一直有效,我也试过你们给我的那些建议,但结果还是一样。

我不确定是否是这个原因导致的问题,还是其他原因。但从这些试验和错误中,我注意到了这一点。

看起来,即使满足条件(长的&&和||条件和许多连锁的if语句,我都试过了),开仓的最底部部分也不想移动止损。

EA的设置。

帐户1之前。


帐户1后。

对于这个账户1,第1和第2个订单不符合if条件/if + &&和|条件,所以止损没有被移动(这是正确的)。

然而,第3个订单已经满足了条件,它应该跟踪到第10个订单,但止损只被移动了一次。( 错了,错了 )

它应该移动一次以上(根据我的计算应该是50.0点,而不是5.0点)。

之前的账户2。

帐户2后。

对于这个账户2,只有第1个订单不符合条件,所以同样没有止损被移动(这是正确的)。第2和第3个订单符合条件,这里是最奇怪的部分。

第2个订单正好追踪到第10个订单,止损正好被移动了10次。止损点从该订单的开盘价移到了50.0点(这是对的)。

然而,第3个订单也符合条件,它应该跟踪到第3个订单,但同样的,止损只移动了一次(又错了:())。

你们是否注意到,在两个账户中,尾随部分不能正常工作的是最后一个订单?

如果USDJPY可以工作,它应该可以应用于所有其他货币对。我不确定该怎么做。

我使用的是我从RaptorUK那里读到的一个回数for循环,不过应该是不错的。向后数也不应该是问题。

专家标签也没有显示任何错误 ....

@.@ T_T

 
你确定价格没有在第一条线索之后回调并停止它吗?
 
对不起,我不太明白你的意思 ...你的意思是哪个价格?在第一条线索之后就停止了吗?
 
我现在明白你的意思了,我第一次没能正确阅读交易结果
 
SDC:
我现在明白你的意思了,我第一次没能正确阅读交易结果
我仍然不知道它有什么问题 ....你知道我哪里错了吗?
 
      if ( ( OrderStopLoss() == 0 ) || (OrderStopLoss() != 0 && OrderStopLoss() <= OrderOpenPrice() ) || ( OrderStopLoss() < ( OrderOpenPrice() + ( TrailingStop * Figure ) ) ) )
                              {
 

我试过了,还是一样,....。

我试了很多次,仍然是最后一个订单没有被正确修改 ....我不认为如此,但我不知道为什么它不能正常工作......。

 

juniorlcq:

循环倒数会导致这个问题吗?


无论向上还是向下 计数 (跟踪止损) 没有关系

删除或关闭一个交易,你必须向下计数。

 

我也试着往上数,问题还是一样。

是不是第2个for循环已经修改了订单,我不得不再次重新选择?

一开始我选择了订单,在第2个for循环的条件下,它修改了那个订单。我需要再次重新选择吗?

 

订单选择

OrderSelect()函数将订单数据复制到程序环境中,所有进一步调用OrderClosePrice(),OrderCloseTime(),OrderComment ( ),OrderCommission(),OrderExpiration(),OrderLots(),OrderMagicNumber(), OrderOpenPrice(),OrderOpenTime(),OrderPrint(),OrderProfit(),OrderStopLoss(),OrderSwap(),OrderSymbol(),OrderTakeProfit(),OrderTicket(),OrderType() 函数返回之前复制的数据。这意味着,在某些情况下,订单的细节(开盘价,SL/TP水平或到期日)可能会发生变化,数据变得不真实。我们强烈建议在请求订单数据之前调用OrderSelect()函数。