// Частичное закрытие позиции.#include <Trade\Trade.mqh>
voidOnStart()
{
CTrade Trade;
if (Trade.Buy(1)) // Пытаемся открыть позицию на 1 лот.
{
constulong Ticket = Trade.ResultOrder();
// Ждем, пока не появится.while (!IsStopped() && !PositionSelectByTicket(Ticket))
Sleep(0);
// А теперь просто закрываем 0.1 лота в случае, если объем позиции равен 1.// Цикл - для эмуляции запуска скрипта в любой момент.while (!IsStopped() && PositionSelectByTicket(Ticket) && (PositionGetDouble(POSITION_VOLUME) == 1))
Trade.PositionClosePartial(Ticket, 0.1);
}
}
关于交易、自动交易系统和测试交易策略的论坛
MQL5中的OrderModify()?
Edward Munroe, 2021.05.27 00:51
问一个简单的问题,得到一个简单的答案!?为什么mql5中几乎所有的东西都变得如此混乱?好问题。
传统上是周末前的一项简单任务。
一个未结头寸 是1手。在运行脚本后,我们需要使仓位变成0.9手。
很明显,该脚本可以在任何时候启动。这就是为什么有许多情况可能发生。
像通常一样,我试图用经典的方式来解决问题。
这个脚本显示的仓位是0.8手。我们需要0.9。
运行这个脚本可以得到0.8手的仓位。我需要0.9。
在2个服务器上测试了几次,我只得到了0.9。
测试的逻辑很清楚--我们试图摆脱在一个tick上的异步执行,这个过程的一般方案(如何在一个tick上进行同步)是很重要的,要知道
传统上是周末前的一项简单任务。
我的妈呀!而我有0.8(在MQDemo-0.9)。还会有多少这样的耙子?
在2个服务器上检查了几次,我只有0.9。
关于交易、自动交易系统和交易策略测试的论坛
伟大而可怕的MT4永远(或如何建立一个聪明的迁移策略)
fxsaber, 2021.05.05 08:23
ForexTimeFXTM-Demo01
解决了。
这可能是目前这个主题中所有容易制定的任务中最困难的任务。
对MQL5交易部分的掌握程度是一个非常有力的考验。
开立一个买入订单,SL和TP为零,然后设置30点的SL和TP(如果我没记错的话,这叫做市场执行账户类型 - SL和TP不能同时设置)。
对于MT4来说,这个代码是有效的。
开立一个买入订单,SL和TP为零,然后设置30点的SL和TP(如果我没记错的话,这叫做市场执行账户类型 - SL和TP不能同时设置)。
对于MT4来说,这个代码是有效的。
大约两三年前,在终端层面引入了对执行类型的识别。现在即使是市场执行,你也可以设置SL和TP,终端本身会将订单分成两个交易订单。
开立一个零 SL和TP的买入订单,然后放置一个30点的SL和TP(如果我没记错的话,这叫做市场执行账户类型--SL和TP不能同时放置)。
一项共同的任务。