#include <Trade\Trade.mqh>
CTrade Trade;
//+------------------------------------------------------------------+//| Script program start function |//+------------------------------------------------------------------+voidOnStart()
{
//---int total=PositionsTotal();
int Ordertotal=OrdersTotal();
while(!IsStopped() && (total <= 1)) // Закончим, когда появится более одной позиции.if(total == 1)
Trade.PositionClose(PositionGetTicket(0)); // Если есть позиция - закрываем.elseif(Ordertotal!=0)
Trade.Buy(0.01); // Если нет позиции и ордера - открываем позицию.
}
//+------------------------------------------------------------------+
#define PRINT(A) Print(#A + " = " + (string)(A))
#include <Trade\Trade.mqh>
voidOnStart()
{
CTrade Trade;
while (!IsStopped() && (PositionsTotal() <= 1)) // Закончим, когда появится более одной позиции.if (PositionsTotal() == 1)
{
Trade.PositionClose(PositionGetTicket(0)); // Если есть позиция - закрываем.Print("Закрытие, т. к. PositionsTotal() равно 1");
}
elseif (!OrdersTotal())
{
printf("Перед открытием. PositionsTotal: %d, OrdersTotal: %d", PositionsTotal(), OrdersTotal());
Trade.Buy(0.01); // Если нет позиции и ордера - открываем позицию.
PRINT(Trade.ResultRetcodeDescription());
PRINT(Trade.ResultDeal());
PRINT(Trade.ResultOrder());
PRINT(Trade.ResultComment());
if (OrderSelect(Trade.ResultOrder()))
PRINT(OrderGetInteger(ORDER_STATE));
printf("После открытия. PositionsTotal: %d, OrdersTotal: %d", PositionsTotal(), OrdersTotal());
}
Print("Выход. PostionsTotal: ", PositionsTotal());
}
结果。
2021.05.0514:25:14.738 Test (EURUSD,M1) Перед открытием. PositionsTotal: 0, OrdersTotal: 02021.05.0514:25:14.821 Test (EURUSD,M1) Trade.ResultRetcodeDescription() = done at 0.000002021.05.0514:25:14.821 Test (EURUSD,M1) Trade.ResultDeal() = 02021.05.0514:25:14.821 Test (EURUSD,M1) Trade.ResultOrder() = 22498886812021.05.0514:25:14.821 Test (EURUSD,M1) Trade.ResultComment() = Request executed
2021.05.0514:25:14.821 Test (EURUSD,M1) EnumToString(ENUM_ORDER_STATE(OrderGetInteger(ORDER_STATE))) = ORDER_STATE_PLACED2021.05.0514:25:14.821 Test (EURUSD,M1) После открытия. PositionsTotal: 1, OrdersTotal: 12021.05.0514:25:14.899 Test (EURUSD,M1) Закрытие, т. к. PositionsTotal() равно 12021.05.0514:25:14.899 Test (EURUSD,M1) Выход. PostionsTotal: 2
这样做效果很好--(取决于什么目的!?)
那就好办了--(取决于什么目的!?)
不要介入。他们在那里有一个特别的DC,他建立了各种阴谋诡计来抓MT的虫子。
一个特别的DC,他建立了各种阴谋诡计来抓MT的虫子。
大多数经纪商按照同样的方案工作:Result.deal == 0。
例如,Signals是最受欢迎的剥头皮经纪人。
在著名的经纪商中,很难找到MT5按照不同的方案工作的地方。
这样做的效果很好--(取决于什么目的!?)
大多数经纪商按照同样的方案工作:Result.deal == 0。
例如,Signals是最受欢迎的剥头皮的经纪人。
在已知的经纪商中,很难找到MT5按照不同的方案工作的地方。
我不知道哪种黄牛的作用如此之大,以至于你没有时间去平仓......
如果你不介意的话,仍然可以尝试增加检查位置的数量
我认为这两个位置是开放的,也是封闭的。试图获得这两个职位的类型也无妨。如果它们的方向不同,就会证实我的猜测......
完成了。
结果。
好得到这个订单的状态。如果票据是已知的。
交易失败,执行价格为0。
交易请求结果的结构(MqlTradeResult)
作为对交易请求 的响应,交易服务器返回包含交易请求处理结果的数据,作为一个特殊的预定义结构MqlTradeResult。
所以得到这个订单的状态。 如果知道这个票据。
交易失败,执行价格为0。
这就是问题所在:它已经过去了。当脚本完成时,有一个或两个位置被挂起(取决于你在代码中插入多少个打印机)。
代码。
结果。
我不知道什么样的黄牛会如此卖力,以至于你无法及时平仓......
那里的一切都在时间中。只是MT5的一个建筑特点。
如果你不介意,请尝试添加检查位置的数量
这个检查存在于源代码中。
我认为,这两个位置是开放的,也是封闭的。试图获得这两个职位的类型也会有所帮助。如果它们的方向不同,就会证实我的猜测......
不存在所谓的关闭位置。
我还没来得及贴出来。我将在24小时内发布。
它没有发挥作用,我发现了问题。
没能成功,发现了问题。
期待着它。如果有什么需要帮助的地方,请写信。