Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Здравствуйте уважаемые форумчане Помогите избавится от ошибки 129 Вот часть исходного кода:
/////if(GlobalVariableGet("LotCloseRestrictionTotal")==2)
{
for( ccc=SymbolTrades;ccc>=1;ccc--)
{
GlobalVariableSet("ccc",ccc);
string Symbol_X=Symbol_X();
double Point_Symb=MarketInfo(Symbol_X,MODE_POINT);
double Bid_X=MarketInfo(Symbol_X,MODE_BID );
double Ask_X=MarketInfo(Symbol_X,MODE_ASK );
double Spread=MarketInfo(Symbol_X,MODE_SPREAD );
double Level=MarketInfo(Symbol_X,MODE_STOPLEVEL );
int Majic=Majic();
if(FlagRestrictionSell()==1)
{
for(int ddd=OrdersTotal( ) ;ddd>=0;ddd--)
{
if(OrderSelect(ddd, SELECT_BY_POS, MODE_TRADES)==true)
{
if (OrderSymbol( ) ==Symbol_X&&OrderType( ) ==OP_SELL&&OrderMagicNumber( ) ==Majic() &&OrderOpenPrice()==OpenPriceSellSymbolMin())
{
if(LotCloseRestr()>OrderLots())
{
LotClRestr=NormalizeDouble(LotCloseRestr()-OrderLots(),2);
Print("LotCloseRestr",Symbol_X,LotCloseRestr());
RefreshRates();
Ask_X=NormalizeDouble(MarketInfo(Symbol_X,MODE_ASK),4);
if(OrderClose(OrderTicket(),OrderLots(),Ask_X,3,CLR_NONE)==true)
{
GlobalVariableSet("LotCloseRestr",LotClRestr);
LotCloseRestrCreat();
}
}
if(LotCloseRestr()<=OrderLots()&&LotCloseRestr()>0)
{
LotClRestr=LotCloseRestr();
RefreshRates();
Ask_X=NormalizeDouble(MarketInfo(Symbol_X,MODE_ASK),4);
if(OrderClose(OrderTicket(),LotClRestr,Ask_X,3,CLR_NONE)==true)
{
GlobalVariableSet("LotCloseRestr",0);
LotCloseRestrCreat();
GlobalVariableSet("FlagRestrictionSell",0);
FlagRestrictionSellCreat();
}
}
}
}
}
}
}
}
Эксперт прикреплён к одному окну графика EURUSD но работает с многими валютными парами путём использования общей глобальной переменной "ссс " перебирая строковые имена валютных пар в цикле for и формирует значения Ask и Bid с помощью функции MarketInfo() для закрытия ордеров У меня к вам вопрос что происходит при запуске функции RefreshRates() Обновляются данные только текущего фининструмента к которому прикреплён эксперт или всех валютных пар в окне Обзор рынка?И как можно обновить данные других валютных пар?Как в эксперте можно организовать перебор открытых окон валютных пар в цикле for с помощью какой служебной функции если таковая вообще есть чтобы попытаться обновить данные используя переменную Symbol() для получения строкового имени активного текущего окна и обновления данных функцией RefreshRates последовательно для каждого выбранного окна?Мне кажется что ошибка 129 происходит из-за устаревания данных Ask и Bid при обращении к ним по разным валютным парам Так как эксперт запускается при каждом новом тике по евродоллару А по другим парам данные уже сформированы и при работе эксперта естественно происходит какая то временная задержка при вычислениях и данные устаревают Может кто подскажет как это обойти?