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

 
Да, конечно я закодировал по идее правильно, но вот на пятерке функция принт работает как-то не совсем так, с выкрутасами, и часто не пишет. Да!!
 
Dimka-novitsek:
 

Ага, это собственно предложеный мне скрипт пишет видимо, каторый я вставил в функцию он тик своего эксперта! 

 Нет, это не скрипт. Это Ваши строчки. У скрипта должны выводиться строчки типа Print(EnumToString((ENUM_TIMEFRAMES)i)+"="+IntegerToString(i));
 
Dimka-novitsek:
 ...на пятерке функция принт работает как-то не совсем так, с выкрутасами, и часто не пишет. Да!!
 На вкладке "Эксперт" могут отображаться не все сообщения запущенной программы. Для просмотра всех сообщений надо смотреть логи (правая кнопка мыши, "Открыть").
 

Блин. разобрался) оказывается функция CSymbolInfo.Refresh() - не обновляет тики. вместо нее нужно использовать CSymbolInfo.RefreshRates();

CSymbolInfo.Refresh() - обновляет данные по символу

CSymbolInfo.RefreshRates() - обновляет котировки=)

Если со вторым методом все стало понятно, но для чего нужен первый?

 
WiND:

Блин. разобрался) оказывается функция CSymbolInfo.Refresh() - не обновляет тики. вместо нее нужно использовать CSymbolInfo.RefreshRates();

CSymbolInfo.Refresh() - обновляет данные по символу

CSymbolInfo.RefreshRates() - обновляет котировки=)

Если со вторым методом все стало понятно, но для чего нужен первый?

 Ну, мало ли. Может, кому нужно обновлять данные по свопам, проверять средства при входе в рынок и т.д. Подробнее см. код:
bool CSymbolInfo::Refresh(void)
  {
   long tmp=0;
//---
   if(!SymbolInfoDouble(m_name,SYMBOL_POINT,m_point))                               return(false);
   if(!SymbolInfoDouble(m_name,SYMBOL_TRADE_TICK_VALUE,m_tick_value))               return(false);
   if(!SymbolInfoDouble(m_name,SYMBOL_TRADE_TICK_VALUE_PROFIT,m_tick_value_profit)) return(false);
   if(!SymbolInfoDouble(m_name,SYMBOL_TRADE_TICK_VALUE_LOSS,m_tick_value_loss))     return(false);
   if(!SymbolInfoDouble(m_name,SYMBOL_TRADE_TICK_SIZE,m_tick_size))                 return(false);
   if(!SymbolInfoDouble(m_name,SYMBOL_TRADE_CONTRACT_SIZE,m_contract_size))         return(false);
   if(!SymbolInfoDouble(m_name,SYMBOL_VOLUME_MIN,m_lots_min))                       return(false);
   if(!SymbolInfoDouble(m_name,SYMBOL_VOLUME_MAX,m_lots_max))                       return(false);
   if(!SymbolInfoDouble(m_name,SYMBOL_VOLUME_STEP,m_lots_step))                     return(false);
   if(!SymbolInfoDouble(m_name,SYMBOL_VOLUME_LIMIT,m_lots_limit))                   return(false);
   if(!SymbolInfoDouble(m_name,SYMBOL_SWAP_LONG,m_swap_long))                       return(false);
   if(!SymbolInfoDouble(m_name,SYMBOL_SWAP_SHORT,m_swap_short))                     return(false);
   if(!SymbolInfoInteger(m_name,SYMBOL_DIGITS,tmp))                                 return(false);
   m_digits=(int)tmp;
   if(!SymbolInfoInteger(m_name,SYMBOL_TRADE_EXEMODE,tmp))                          return(false);
   m_trade_execution=(ENUM_SYMBOL_TRADE_EXECUTION)tmp;
   if(!SymbolInfoInteger(m_name,SYMBOL_TRADE_CALC_MODE,tmp))                        return(false);
   m_trade_calcmode=(ENUM_SYMBOL_CALC_MODE)tmp;
   if(!SymbolInfoInteger(m_name,SYMBOL_TRADE_MODE,tmp))                             return(false);
   m_trade_mode=(ENUM_SYMBOL_TRADE_MODE)tmp;
   if(!SymbolInfoInteger(m_name,SYMBOL_SWAP_MODE,tmp))                              return(false);
   m_swap_mode=(ENUM_SYMBOL_SWAP_MODE)tmp;
   if(!SymbolInfoInteger(m_name,SYMBOL_SWAP_ROLLOVER3DAYS,tmp))                     return(false);
   m_swap3=(ENUM_DAY_OF_WEEK)tmp;
   if(!SymbolInfoDouble(m_name,SYMBOL_MARGIN_INITIAL,m_margin_initial))             return(false);
   if(!SymbolInfoDouble(m_name,SYMBOL_MARGIN_MAINTENANCE,m_margin_maintenance))     return(false);
   if(!SymbolInfoDouble(m_name,SYMBOL_MARGIN_LONG,m_margin_long))                   return(false);
   if(!SymbolInfoDouble(m_name,SYMBOL_MARGIN_SHORT,m_margin_short))                 return(false);
   if(!SymbolInfoDouble(m_name,SYMBOL_MARGIN_LIMIT,m_margin_limit))                 return(false);
   if(!SymbolInfoDouble(m_name,SYMBOL_MARGIN_STOP,m_margin_stop))                   return(false);
   if(!SymbolInfoDouble(m_name,SYMBOL_MARGIN_STOPLIMIT,m_margin_stoplimit))         return(false);
   if(!SymbolInfoInteger(m_name,SYMBOL_EXPIRATION_MODE,tmp))                        return(false);
   m_trade_time_flags=(int)tmp;
   if(!SymbolInfoInteger(m_name,SYMBOL_FILLING_MODE,tmp))                           return(false);
   m_trade_fill_flags=(int)tmp;
//--- ok
   return(true);
  }
Документация по MQL5: Торговые функции / OrderCheck
Документация по MQL5: Торговые функции / OrderCheck
  • www.mql5.com
Торговые функции / OrderCheck - Документация по MQL5
 

СПАСИБО!!!

Конечно, мои строчки. Хотел написать, что я лох, это же мои строчки, и увидел ваш комментарий.  

Для просмотра всех сообщений надо смотреть логи (правая кнопка мыши, "Открыть"). СПАСИБО!! 

 

Есть код символа в кодировке utf8 в виде строки ( пример: "041e" ) 

Как получить эквивалент этого кода в 10й системе, а затем преобразовать его в символ (код 041e = русская буква О)

Вот капец вообще, но не соображу никак:) 

 
Доброе утро! Я с утра че-то не совсем соображу, что я делаю. Скажите пожалуста, эти две первые переменные, что с ними не так? 
 
Dimka-novitsek:
Доброе утро! Я с утра че-то не совсем соображу, что я делаю. Скажите пожалуста, эти две первые переменные, что с ними не так? 

Первую переменную string вы определяете как функцию.Сделайте ее пустой (=NULL или ="").Потом в OnInit можете сделать =_Symbol .

Вторая.Или после 5 поставьте ; или уберите второй int. 

 
СПАСИБО!!
Причина обращения: