Вопросы от начинающих MQL5 MT5 MetaTrader 5 - страница 585

 
barudkinarseniy:
Здравствуйте Товарищи! Подскажите пожалуйста в чем ошибка, компилятор выдает предупреждение о возможной потере данных(
Необходимо явное приведение типов:
int ts = (int)SymbolInfoInteger(Symbol(),SYMBOL_TRADE_STOPS_LEVEL);
 
Vasiliy Sokolov:
Необходимо явное приведение типов:
Спасибо! Ни как не могу запомнить эти нюансы с конвертацией))
 
barudkinarseniy:
Спасибо! Ни как не могу запомнить эти нюансы с конвертацией))
Часто вводит в заблуждение именно это: SymbolInfoInteger. Поэтому лучше лишний раз посмотреть в справку.
 
Подскажите пожалуйста в чем проблема. Компилятор ошибок не выдает. В тестере в большинстве сделок все нормально, но иногда обработчик ошибок в принте пишет не правильные стопы и цену открытия пишет с  6 знаками после запятой : Invalid price (stop) OrderSendX(symbol=AUDCAD,cmd=SELL,volume=0.29,price=0.995120,slippage=50,stoploss=0.996470,takeprofit=0.991070)

//+------------------------------------------------------------------+
//Открытие ордеров
void OrderOpen(int otype, double OpenPriceW1)
{
 int msl = (int) MarketInfo(Symbol(),MODE_STOPLEVEL);
 int stsl = (int) SymbolInfoInteger(Symbol(),SYMBOL_TRADE_STOPS_LEVEL);
 
 if(otype == OP_BUY)
 {
  StepSTBAY = (int)(Ask/Point - OpenPriceW1/Point);
  
  if(StepSTBAY < msl) StepSTBAY = msl;
  if(StepSTBAY < stsl) StepSTBAY = StepSTBAY + stsl;
  
  lots = LotsByRisk(OP_BUY,StepSTBAY);
  ST_BAY = NormalizeDouble(Ask - StepSTBAY*Point,Digits);
  TP_BAY = NormalizeDouble(Ask + StepSTBAY*RR*Point,Digits);
      
  OrderSendX(Symbol(),OP_BUY,lots,Ask,slipage,ST_BAY,TP_BAY,"",Magic,0,clrGreen);
 }
 if(otype == OP_SELL)
 {
  StepSTSELL = (int)(OpenPriceW1/Point - Bid/Point);
  
  if(StepSTSELL < msl) StepSTSELL = msl;
  if(StepSTSELL < stsl) StepSTSELL = StepSTSELL + stsl;
  
  lots = LotsByRisk(OP_SELL,StepSTSELL);
  ST_SELL = NormalizeDouble(Bid + StepSTSELL*Point,Digits);
  TP_SELL = NormalizeDouble(Bid - StepSTSELL*RR*Point,Digits);
     
  OrderSendX(Symbol(),OP_SELL,lots,Bid,slipage,ST_SELL,TP_SELL,"",Magic,0,clrRed);
 }
}
//+------------------------------------------------------------------+
 
 
barudkinarseniy:
Подскажите пожалуйста в чем проблема. Компилятор ошибок не выдает. В тестере в большинстве сделок все нормально, но иногда обработчик ошибок в принте пишет не правильные стопы и цену открытия пишет с  6 знаками после запятой : Invalid price (stop) OrderSendX(symbol=AUDCAD,cmd=SELL,volume=0.29,price=0.995120,slippage=50,stoploss=0.996470,takeprofit=0.991070)

 
Первое что бросилось в глаза вот этот участок кода эти две функции одно и тоже
 int msl = (int) MarketInfo(Symbol(),MODE_STOPLEVEL);
 int stsl = (int) SymbolInfoInteger(Symbol(),SYMBOL_TRADE_STOPS_LEVEL);
 первая старый вариант, вторая новый
 
А подскажите, пожалуйста, будет ли продолжать работу советник при смене профиля в МТ4? Или для постоянной работы все окна с советниками должны быть открыты в одном профиле?
 

Добрый день уважаемые программисты!

Можно ли на MQL4  написать программу чтобы она рисовала график в виде свечей по расчетным значениям на разных таймфреймах. Может есть уже готовые коды таких задач?

 
Ivan Molchanov:
А подскажите, пожалуйста, будет ли продолжать работу советник при смене профиля в МТ4? Или для постоянной работы все окна с советниками должны быть открыты в одном профиле?

Сервис => Настройки



и делай что хочешь...

 
Здравствуйте! Подскажите пожалуйста как прописать в задаваемых параметрах extern выбор таймфрема? Что бы была именно выборка а не печатать в ручную.
 
barudkinarseniy:
Здравствуйте! Подскажите пожалуйста как прописать в задаваемых параметрах extern выбор таймфрема? Что бы была именно выборка а не печатать в ручную.

Используйте переменную типа перечисления ENUM_TIMEFRAMES. 

Причина обращения: