Любой вопрос новичка, чтоб не захламлять форум. Профи, не проходите мимо. Без вас никуда - 6. - страница 1127

 
Sergey Gritsay:

А теперь читаем нормальную документацию от МТ5 теперь некоторые старые функции работают именно как написано в ней, так как документация от мт4 устаревшая и там много еще не исправлено.

 

GetLastError

Возвращает содержимое системной переменной_LastError.

int  GetLastError();

Возвращаемое значение

Возвращает значение последнейошибки, произошедшей во время исполнения mql5-программы.

Примечание

После вызова функции содержимое переменной _LastError не обнуляется. Чтобы обнулить эту переменную, необходимо вызвать функциюResetLastError()

Смотри также

Коды возврата торгового сервера

Ну так опять же, это на mql5. А мне надо на mql4 
 
Vitaly Muzichenko:

Ну Я с 1997 года)

Смотрите, есть тик и с ним сигнал, и если получили ошибку, то её нужно обработать. Обработали и снова запрос, но перед запросом можно обнулить переменную с ошибкой, тогда при следующем запросе если есть ошибка, то она снова попадёт в переменную, но если ошибки нет - будет "0"

Можно переменную не обнулять, тогда в неё попадёт новое значение. В любом случае вас не должна интересовать ошибка которая была в прошлый раз на прошлом тике, вы должны обработать только то, что есть "сейчас"

С 1997 года, это срок!  ) Наверно единственный человек который понял меня. Спасибо.
 
Evgeniy Oshurkevich:
Ну так опять же, это на mql5. А мне надо на mql4 
В плане именно этой функции - разницы никакой. Но если принципиально, то читайте F1.
 

Продублирую свой вопрос в этой ветке, так-как в ветке по mql5 помочь не смогли - ответ никто не знает.

 

Имеется вот такая функция и работает в советнике/скрипте

double maxLot(double Percent, string symbol, ENUM_ORDER_TYPE action=ORDER_TYPE_BUY)
  {
   double One_Lot=0.0;
   double price=0.0;
   double volume=0.0;
   double MinLot=SymbolInfoDouble(symbol,SYMBOL_VOLUME_MIN);
   double Free=AccountInfoDouble(ACCOUNT_FREEMARGIN);
   double Step=SymbolInfoDouble(symbol,SYMBOL_VOLUME_STEP);
   if(action==ORDER_TYPE_BUY)price=SymbolInfoDouble(symbol,SYMBOL_ASK);
   if(action==ORDER_TYPE_SELL)price=SymbolInfoDouble(symbol,SYMBOL_BID);
   if(!OrderCalcMargin(action,symbol,1.0,price,One_Lot))return(MinLot);
   if(One_Lot!=0 && Step!=0)volume = MathFloor(Free*Percent/100.0/One_Lot/Step)*Step;
   if(volume!=0)return(volume);
   return(MinLot);
  }

Вопрос: как получить максимально возможный лот в индикатореOrderCalcMargin почему-то не работает в индикаторе?  В мт4 прекрасно работает "MarketInfo(symbol,MODE_MARGINREQUIRED)", но в мт5 её нет, зато есть есть какой-то огрызок OrderCalcMargin который не работает в индикаторе, и разработчик ничего не делает по этому поводу.

Спасибо!

 

как сделать? 

чтобы при 

OnDeinit(REASON_CHARTCHANGE)

продолжить работу как обычно, не сбрасывая настройки (полностью игнорировать данную причину, это инфопанель с уровнями)

 
trader781:

как сделать? 

чтобы при 

OnDeinit(REASON_CHARTCHANGE)

продолжить работу как обычно, не сбрасывая настройки (полностью игнорировать данную причину, это инфопанель с уровнями)

Никак.
 
Vitalie Postolache:
Никак.

не, ну есть же способы как то это обойти 

забивать уровни в код для каждого инструмента из 40 существующих это как минимум мне лень.

проще сделать автоматом и клацать ТФ с символами как угодно. 

и параллельно ищу способ указать значения мувинга старших ТФ на младшем
 
trader781:

не, ну есть же способы как то это обойти 

забивать уровни в код для каждого инструмента из 40 существующих это как минимум мне лень.

проще сделать автоматом и клацать ТФ с символами как угодно. 

и параллельно ищу способ указать значения мувинга старших ТФ на младшем
Настройки записать в файл, а в ините - считывать. Деинит обойти никак не получится, он разрешения не спрашивает.
 
Vitalie Postolache:
Настройки записать в файл, а в ините - считывать. Деинит обойти никак не получится, он разрешения не спрашивает.
а почему бы не обойти деинит через запись в файл если такое вообще возможно? например в случае деинициализаи инициировать запуск с предыдущими параметрами
 
trader781:
а почему бы не обойти деинит через запись в файл если такое вообще возможно? например в случае деинициализаи инициировать запуск с предыдущими параметрами
А я выше не это написал разве?