Свойства позиций - Торговые константы - Константы, перечисления и структуры - Справочник MQL5 - Справочник по языку алгоритмического/автоматического трейдинга для MetaTrader 5
Свойства позиций - Торговые константы - Константы, перечисления и структуры - Справочник MQL5 - Справочник по языку алгоритмического/автоматического трейдинга для MetaTrader 5
问题出在EA上。顺便说一下,共享主机的规则禁止dlls。
它过去工作得很好。我应该在免费主机 上试一试。总之给了methaquotes 15英镑 )))
谢谢你的答复
EA打开市场订单,然后修改它们,设置TP和SL。在测试器中检查。使用所需的参数对第一阶进行修改。第二单的开仓方向与第一单相同,但第一单根据第二单的参数进行修改,第二单的SL和TP仍然为零。在这种情况下,条件是:如果SL == 0和TP == 0,另一个订单被修改,因为它有非零参数。为什么?将搜索从第一个改为最后一个并没有改变什么。
还有一件事。在测试器中,利润栏显示有两个未结订单的订单,但反之亦然:第二个订单的利润显示在第一个未结订单中,反之亦然。为什么?
还有更多。我们需要在两个极点之后画一条趋势线。线条已经画好,但它是一个从酒吧到酒吧的存根。这不是一条趋势线,而只是一段,而我们希望看到的是一条线。
EA打开市场订单,然后修改它们,设置TP和SL。在测试器中检查。使用所需的参数对第一阶进行修改。第二单的开仓方向与第一单相同,但第一单根据第二单的参数进行修改,第二单的SL和TP仍然为零。在这种情况下,条件是:如果SL == 0和TP == 0,另一个订单被修改,因为它有非零参数。为什么?将搜索从第一个改为最后一个并没有改变什么。
还有一件事。在测试器中,如果有两个订单被打开,订单利润显示在利润栏中,即第二个订单的利润显示在第一个打开的订单中,反之亦然。为什么?
还有更多。我们需要在两个极点之后画一条趋势线。线条已经画好,但它是一个从酒吧到酒吧的存根。这不是一条趋势线,只是一段,而我们希望看到的是一条线。
1.不是命令,而是位置。
2.提出你的问题--到目前为止,我看到的是一种叙述,我还没有看到一个问题或 "人们希望它如何工作 "的算法。
1.不是订货人,而是职位
2.拟定你的问题--到目前为止,我看到的是一个叙述,我还没有看到问题和算法 "你希望它如何运作"。
你知道它的位置,因为它是在mql5 中。而在代码中,有一个位置。问题是为什么第一个位置被修改,而不是最后一个位置,尽管条件中指定了这个位置。
很明显,这些位置是存在的,因为它在mql5 中。而在代码中,它是位置。问题是,为什么第一个位置被修改,而不是最后一个,尽管条件中指定了这个位置。
问题是在哪里。描述算法 "我希望算法是这样的......"。
问题是在哪里?描述算法 "我希望算法是这样的......"。
当趋势线被突破,并且条形图收于其上方/下方时,我们以零SL和TP开立头寸。开盘后,立即设置必要的TP和SL(位置被修改)。为什么呢,被修改的不是最后的位置,而是之前的位置,同时违反了条件。
现在清楚了吗?即使我们把开仓时间 引入条件中,也没有任何变化。职位的数量没有限制。
当趋势线被突破,并且条形图收于其上方/下方时,就会建立一个零SL和TP的头寸。开盘后,立即设置必要的TP和SL(位置被修改)。为什么呢,被修改的不是最后的位置,而是之前的位置,同时违反了条件。
现在清楚了吗?即使我们把开仓时间 引入条件中,也没有任何变化。职位的数量没有限制。
你确定在修改的时候,已经有一个新的职位存在了吗?(发送交易指令并不保证头寸的存在)。
当进入条件(SL == 0.0和TP == 0.0)时,打印位置票。
你确定在修改时,新的职位已经可以使用了吗?(发送交易指令并不保证存在头寸)。
当你输入条件(SL == 0.0和TP == 0.0)时,打印仓单。
是的,第二个位置已经在那里了。我正在看日志。卖出方法是成功的,代码为10009。(3号票)。然后是修改,只修改2号票的位置,这也是成功执行的(修改,虽然我强调,根据条件不应该发生,SL不再是0了!)。
已经写过了,按开票时间 和按票数都试过了,没有成功,修改了以前的位置。比如说。
是的,第二个位置已经在那里了。我正在看日志。卖出方法是成功的,代码为10009。(3号票)。然后再进行修改,只有与2号票的位置,也顺利完成。
已经写过了,按开票时间 和按票数都试过了,没办法,修改了以前的位置。比如说。
也就是说:你不检查位置的结果,你甚至不想打印票据。如果是这种情况,请附上完整的代码(使用按钮 )。
也就是说:你不检查职位的结果,你甚至不想打印票据。在这种情况下,请附加完整的代码(使用按钮附加)。
你甚至不愿意打印票据--我不明白。这里是日志摘录。
2021.02.01 12:54:55.338 2018.01.02 17:00:00 市场卖出 0.01 EURUSD (1.20384 / 1.20402)
2021.02.01 12:54:55.338 2018.01.02 17:00:00 交易#2在1.20384卖出0.01欧元兑美元完成(基于订单#2)。
2021.02.01 12:54:55.338 2018.01.02 17:00:00 交易完成 [#2在1.20384卖出0.01欧元兑美元]
2021.02.01 12:54:55.338 2018.01.02 17:00:00 执行的订单在1.20384卖出0.01 [#2在1.20384卖出0.01欧元兑美元]
2021.02.01 12:54:55.344 2018.01.02 17:00:00 CTrade::OrderSend: market sell 0.01 EURUSD [在1.20384完成]
2021.02.01 12:54:55.344 2018.01.02 17:00:00 Sell() 方法成功完成。返回代码=10009(在1.20384完成)。
2021.02.01 12:54:55.344 2018.01.02 17:00:00 仓位修改 [#2 卖出 0.01 EURUSD 1.20384 sl: 1.20813 tp: 1.20013]
2021.02.01 12:54:55.346 2018.01.02 17:00:00 CTrade::OrderSend: 修改仓位#2 EURUSD (sl: 1.20813, tp: 1.20013) [完成]
2021.02.01 12:54:55.346 2018.01.02 17:00:00 PositionModify() 方法执行成功。返回代码=10009(完成)。
============================================================================================================== разделил, появление второй позиции
2021.02.01 12:55:48.819 2018.01.03 09:00:00 市场卖出 0.01 EURUSD (1.20442 / 1.20460)
2021.02.01 12:55:48.819 2018.01.03 09:00:00 交易#3在1.20442卖出0.01欧元兑美元完成(基于订单#3)。
2021.02.01 12:55:48.819 2018.01.03 09:00:00 交易完成 [#3在1卖出0.01欧元兑美元。20442]
2021.02.01 12:55:48.819 2018.01.03 09:00:00订单执行,在1.20442卖出0.01 [#3在1.20442卖出0.01 EURUSD]
2021.02.01 12:55:48.821 2018.01.03 09:00:00 CTrade::OrderSend: market sell 0.01 EURUSD [在1.20442完成]
2021.02.01 12:55:48.821 2018.01.03 09:00:00 Sell() 方法成功执行。返回代码=10009(在1.20442完成)。
====================================================================================================================== 成功开仓后,修改,但之前的订单
2021.02.01 12:55:48.821 2018.01.03 09:00:00 仓位修改 [#2 卖出 0.01 EURUSD 1.20384 sl: 1.20663 tp: 1.20154]
2021.02.01 12:55:48.823 2018.01.03 09:00:00 CTrade::OrderSend: 修改仓位#2 EURUSD (sl: 1.20663, tp: 1.20154) [完成]
2021.02.01 12:55:48.823 2018.01.03 09:00:00 PositionModify() 方法执行成功。返回代码=10009(完成)。
我已经在Sell上发布了完整的位置修改 代码,并附有选项。