[存档]任何菜鸟问题,为了不使论坛变得杂乱无章。专业人士,不要路过。没有你就无处可去 - 3. - 页 166

 
Xaoss1990:

各位专业人士,我又需要你们的帮助了!

下面是一段负责关闭交易的代码,但问题是,当挂单没有被执行时,它并没有删除它们,我搞不清楚原因。但是,当我需要关闭一个已经执行的挂单时,一切都很正常,如果订单没有被执行,那么它就会挂在那里,直到执行为止。

OrderSelect(0, SELECT_BY_POS, MODE_TRADES);
Magic = OrderMagicNumber();
orderticket = OrderTicket();

if (OrdersTotal() ==1 && Magic == 111 &&OrderType( ) == 0) {
if (H1_BUY_5 == 0 || H1_BUY_1 == 0) {
OrderClose(orderticket, lots, Bid, 5, Yellow);
if (OrdersTotal( ) == 1) OrderDelete(orderticket, Brown);
}

}



这是只选择买入订单的条件。

如果(OrdersTotal() == 1 && Magic == 111 && OrderType( ) == 0)

所以没有办法删除挂单

 
Roger:


可能是因为你先计算了地段,然后

谢谢,改变了地段计算,但还是不行。
 
Sancho77:
谢谢,改变了地段计算,但还是不行。


它是如何不工作的,它在日志中是怎么说的?

查看np采取什么值,这里

if (OrderSelect(np, SELECT_BY_POS, MODE_TRADES)) {
      ClosePosBySelect();}
    }
 
记录本中没有错误信息。你能看一下整个EA代码吗?如果止损已经被拖曳到盈亏平衡点,它应该关闭1/3的手。
附加的文件:
 
Sancho77:
记录本中没有错误信息。你能看一下整个EA代码吗?如果止损已经被拖曳到盈亏平衡点,它应该关闭1/3的手。

呜呜呜,一切是多么的混乱。一般来说,一切都错了,更容易扔掉,写一个新的。参数定义不正确,函数调用不正确,有很多不必要的额外计算。很适合做一个关于如何不写代码的教程。
 
Roger:

Oooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo乱。总而言之,这都是错的,把它扔掉再写一个新的更容易。参数的定义不正确,函数的调用不正确,有很多不必要的计算。这将是一个关于如何不写代码的教程的好东西。
好吧,让我们从头开始)
 
Sancho77:
...如果已经被拖网移动到收支平衡的止损被触发,应该关闭1/3的手。
我看着这一切,心想--如果你对基本知识没有把握,为什么要承担这种任务?这种自学的好处多于坏处。思想的火花淹没在一堆错误中。
 
granit77:
我看着这一切,心想--如果你对基础知识没有把握,为什么要承担这样的任务?这种自学的好处多于坏处。思想的火花淹没在一堆错误中。

可能意味着伤害多于好处。
 
是的,一个打字错误。
 

请给我们建议,先生们!

想象一下这种情况:由于第N个条件的触发,一个停止被触发了。但在几个烛台之后,第N个条件已经落空。在哪个函数的帮助下,你可以在第N个条件落空后再次打开交易。也就是说,你需要确定在若干个柱子 前触发了止损,并且因为第N个条件已经落空,重复进行交易!这就是为什么你需要确定在某个时间段触发了止损。