int err;
// ---if (...) // условие закрытия позиции
{ if (OrdersTotal()>0)
{ for (int i=OrdersTotal()-1; i>=0; i--)
{ if (OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
{ // фильтрация позиции по текущему символу:if (OrderSymbol()!=Symbol()) continue;
// фильтрация позиции по магик-номеру:if (OrderMagicNumber()!=MagNum) continue;
// ... можно и другие фильтры поставить.// --- закрытие позиции Buy.if (OrderType()==OP_BUY)
// перед открытием или закрытием позиции// обновляйте котировки с помощью RefreshRates()// дабы избежать устаревание запрошенной цены,// возможной причины ошибки 138
{ RefreshRates();
OrderClose(OrderTicket(),OrderLots(),Bid,30);
err=GetLastError();
if (err>0) Alert("Ошибка при закрытии позиции Buy (",err,").");
if (err==0) Alert("Позиция Buy закрыта успешно.");
err=0; return(0);
}
// --- закрытие позиции Sell.elseif (OrderType()==OP_SELL)
{ RefreshRates();
OrderClose(OrderTicket(),OrderLots(),Ask,30);
err=GetLastError();
if (err>0) Alert("Ошибка при закрытии позиции Sell (",err,").");
if (err==0) Alert("Позиция Sell закрыта успешно.");
err=0; return(0);
}
} } }
}
如何使不同时间段的指标在测试器中得到考虑,这是否可能?
如何使不同时间段的指标在测试器中得到考虑,这是否可能?
可能:https://docs.mql4.com/ru/indicators/icustom
https://docs.mql4.com/ru/constants/timeframes
该EA被设计为在指数为1和2的条形上产生信号(即在新条形开端时的开仓和平仓指令)。
在测试器中,它对OrderClose交替产生了138 和4051的错误(似乎在对票据发誓)。
请帮助我解决这个问题。
该EA被设计为在指数为1和2的条形上产生信号(即当一个新条形打开时的开仓和平仓指令)。
在测试器中,它对OrderClose交替产生了138和4051的错误(似乎在对票据发誓)。
请帮助我们解决这个问题。
试试下面的结构来关闭这个位置。
美元兑日元
谢谢
0.01 -NDD美分账户。TR和SL=0。
一切都是一样的,哪里都一样。
第四,货币对方面,毫无疑问,一切都按照算法进行测试。
在阿尔卑斯山上--黄金--根据算法测试。
我想把金属添加到我的GRAAL中,它在第四阶段工作,到目前为止只在货币上。
所以货币没有问题?
所以货币方面没有问题?
是的,没有任何问题。
维克多-伊万诺维奇,由衷地感谢你,我在你的引导问题上已经想通了。
4中的NDD 没有金属,只有货币,这就是为什么在测试过程中会出现131号错误--错误的数量。我没有意识到这一点。
关于黄金和白银,我已经开始在Alps中优化参数。
为了平仓,请尝试这种结构。
你能告诉我如何插入横幅的HTML代码,例如?