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

 
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:
а почему бы не обойти деинит через запись в файл если такое вообще возможно? например в случае деинициализаи инициировать запуск с предыдущими параметрами
А я выше не это написал разве?
 
Vitalie Postolache:
А я выше не это написал разве?

Хорошо, ну вот взяли мы, записали в файл нужные настройки, закрыли и что???

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

 
trader781:

Хорошо, ну вот взяли мы, записали в файл нужные настройки, закрыли и что???

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

Когда запускаете советник  в ините загружаете файл и считываете с него данные по настройкам и все , вот примерчик небольшой.

void LoadParametres()
  {
   Print("*******************************************");
   Print("Start downloading data Magic = ",Magic," ",_Symbol);
   Print("*******************************************");
   int handle=FileOpen("Overturn_"+(string)Magic+"_"+_Symbol+".csv",FILE_CSV|FILE_READ);
   if(handle>0)
     {

      tiket=(int)FileReadNumber(handle);
      flag_series=FileReadBool(handle);
      TP = FileReadNumber(handle);
      SL = FileReadNumber(handle);
      series=(int)FileReadNumber(handle);
      Lots=FileReadNumber(handle);

      FileClose(handle);
      Print("*******************************************");
      Print("Loading data completed Magic = ",Magic," ",_Symbol);
      Print("*******************************************");
     }
  }


 юю