//+------------------------------------------------------------------+//| Expert tick function |//+------------------------------------------------------------------+voidOnTick()
{
//---if(bln_find_order) // true -> you should look for a order
{
staticlong counter=0;
Print("Attempt number ",counter);
ResetLastError();
if(HistoryOrderSelect(ul_find_order))
{
long type_order=HistoryOrderGetInteger(ul_find_order,ORDER_TYPE);
if(type_order==ORDER_TYPE_SELL_STOP)
{
Print("The pending order ",ul_find_order," is found! Type of order is ",
EnumToString((ENUM_ORDER_TYPE)HistoryOrderGetInteger(ul_find_order,ORDER_TYPE)));
bln_find_order=false; // true -> you should look for a order
counter=0;
return;
}
else
{
Print("The order ",ul_find_order," is not pending");
bln_find_order=false; // true -> you should look for a orderreturn;
}
}
else
{
Print("Order ",ul_find_order," is not find, error#",GetLastError());
}
counter++;
}
}
有一个专家顾问,可以让你确定挂单 何时触发
https://www.mql5.com/ru/code/17610
我用它来获得一张SELL_STOP订单的票据
我已将代码改为
在某一时刻之前,一切都很好。直到另一个订单类型出现在历史上。
例如,SELL_LIMIT。
只要SELL_LIMIT出现在历史上,我就无法得到最后一个SELL_STOP的票据。
专家顾问抛出了一个错误。
9号令没有悬念
虽然在历史上有SELL_STOP
还有,如果我需要第七张票,为什么要和第九张做?
你好。如果StopLoss_=0,我得到的是错误。
修改失败#2卖出3.00 Si-9.18 sl: 0, tp: 62749 -> sl: 0, tp: 62774 [无效停止]
你好。如果StopLoss_=0,我得到的是错误。
修改失败#2卖出3.00 Si-9.18 sl: 0, tp: 62749 -> sl: 0, tp: 62774 [无效停止]
编写程序时 逻辑不正确。
当StopLoss_=0时,上面的条件就会触发--试图修改TakeProfit。错误在于你从开盘价中减去了 - 在这种情况下,获利水平可能高于当前价格,这是一个错误。
在你的例子中,从RIGHT PRICE(m_position.PriceCurrent)中减去。
一个卖出头寸被打开,卖出限价被激活,我需要相对于该头寸的新价格移动tp,而不是相对于当前价格。
我应该做什么样的检查来避免试图修改为无效的价格?
一个卖出头寸被打开,卖出限制被激活,我需要相对于新的头寸价格,而不是当前价格来移动tp。
我应该做什么样的检查才能不试图修改为无效的价格?
检查。
if(m_position.PriceOpen()-ExtTakeProfit<m_position.PriceCurrent() { m_trade.PositionModify(m_position.Ticket(), m_position.StopLoss(), m_symbol.NormalizePrice(m_position.PriceOpen()-ExtTakeProfit) ); ...
检查。
谢谢你,但错误仍然存在。
可能与目前的价格接近,令人难以接受。我怎样才能检查这个问题呢?
谢谢你,但错误仍然存在。
可能与目前的价格接近,令人难以接受。你如何检查这个?
我没有机会接触到交易所,所以要么自己做,要么在外汇工具上下功夫。对不起。
新增: 引入另一项检查 - 对于卖出头寸,新的获利(计算值)不能高于或等于当前的获利。
我没有机会接触到交易所,所以要么自己做,要么在外汇工具上下功夫。对不起。
新增: 引入另一项检查 - 对于卖出头寸,新的获利(计算值)不能高于或等于当前的获利。
可能是开盘价(POSITON_PRICE_OPEN) ?
可能是开盘价(POSITON_PRICE_OPEN) ?
这个选项在上面。见上面的帖子。你在谈话中回答。
不适合,由ATR修改 对于这个错误,还可以做哪些检查?都有可能。在mt4中,有STOPLEVEL,但这里是什么?