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

 
Vladimir Karputov:

SymbolSelect(имя символа,true);

Делаю так же

SymbolSelect(EURUSD_inst, true);
  SymbolSelect(GBPUSD_inst, true);
  SymbolSelect(USDJPY_inst, true);
  SymbolSelect(AUDUSD_inst, true);


Получаю вот так

2020.03.09 19:19:45.766 symbol EURUSDrfd does not exist

2020.03.09 19:19:45.766 symbol USDJPYrfd does not exist

2020.03.09 19:19:45.766 symbol AUDUSDrfd does not exist


Кабель не выдает ошибку тк выбран в самом тестере

Названия символов верные. 


UPD сдается мне, что надо что-то сделать в настройках самого терминала. Если все работало до последнего билда, то дело не в коде. Не видит тестер символы.

 
Artem Mordvinkin:


2020.03.09 19:19:45.766 symbol EURUSDrfd does not exist

2020.03.09 19:19:45.766 symbol USDJPYrfd does not exist

2020.03.09 19:19:45.766 symbol AUDUSDrfd does not exist


Кабель не выдает ошибку тк выбран в самом тестере

Что это? Где код? Как Вы это получаете? Тем более Вы выбираете совершенной другие символы.

 
Vladimir Karputov:

Что это? Где код? Как Вы это получаете? Тем более Вы выбираете совершенной другие символы.

понял, давайте так 

Дано (название символов)


Код (фрагменты)

//----------------------------название инструмента
string EURUSD_inst = "EURUSDrfd";
string GBPUSD_inst = "GBPUSDrfd";
string AUDUSD_inst = "AUDUSDrfd";
string USDJPY_inst = "USDJPYrfd";


void OnTick()
  {
  SymbolSelect(EURUSD_inst, true);
  SymbolSelect(GBPUSD_inst, true);
  SymbolSelect(USDJPY_inst, true);
  SymbolSelect(AUDUSD_inst, true);
}

Для примера выберем кабель в тестере


Запускаем и 

2020.03.09 19:19:45.766 symbol EURUSDrfd does not exist

2020.03.09 19:19:45.766 symbol USDJPYrfd does not exist

2020.03.09 19:19:45.766 symbol AUDUSDrfd does not exist

По кабелю ошибки нет - он же принудительно в тестере выбран

И на всякий случай скажу, что такая проблема только в тестере. И что сове уже несколько лет, а ошибке 2 дня и, что так по всем мультивалютным совам моим.
 

Пример создания индикатора iMA на символе 'USDJPY', при этом тестер запускается на 'EURUSD'.

//+------------------------------------------------------------------+
//|                                        iMA Values on a Chart.mq5 |
//|                              Copyright © 2019, Vladimir Karputov |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2019, Vladimir Karputov"
#property version   "1.001"
//--- input parameters
input  string              Inp_MA_symbol        = "USDJPY";    // MA: symbol name
input ENUM_TIMEFRAMES      Inp_MA_period        = PERIOD_D1;   // MA: timeframe
input int                  Inp_MA_ma_period     = 12;          // MA: averaging period
input int                  Inp_MA_ma_shift      = 5;           // MA: horizontal shift
input ENUM_MA_METHOD       Inp_MA_ma_method     = MODE_SMA;    // MA: smoothing type
input ENUM_APPLIED_PRICE   Inp_MA_applied_price = PRICE_CLOSE; // MA: type of price
//---
int    handle_iMA;                           // variable for storing the handle of the iMA indicator
//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
  {
   if(!SymbolSelect(Inp_MA_symbol,true))
     {
      PrintFormat("Failed select symbol %s",
                  Inp_MA_symbol);
      return(INIT_FAILED);
     }
//--- create handle of the indicator iMA
   handle_iMA=iMA(Inp_MA_symbol,Inp_MA_period,Inp_MA_ma_period,Inp_MA_ma_shift,
                  Inp_MA_ma_method,Inp_MA_applied_price);
//--- if the handle is not created
   if(handle_iMA==INVALID_HANDLE)
     {
      //--- tell about the failure and output the error code
      PrintFormat("Failed to create handle of the iMA indicator for the symbol %s/%s, error code %d",
                  Inp_MA_symbol,
                  EnumToString(Inp_MA_period),
                  GetLastError());
      //--- the indicator is stopped early
      return(INIT_FAILED);
     }
//---
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
//---

  }
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
  {
//---
   double array_ma[];
   ArraySetAsSeries(array_ma,true);
   int start_pos=0,count=3;
   if(!iGetArray(handle_iMA,0,start_pos,count,array_ma))
      return;

   string text="";
   for(int i=0; i<count; i++)
      text=text+IntegerToString(i)+": "+DoubleToString(array_ma[i],Digits()+1)+"\n";
//---
   Comment(text);
  }
//+------------------------------------------------------------------+
//| Get value of buffers                                             |
//+------------------------------------------------------------------+
bool iGetArray(const int handle,const int buffer,const int start_pos,
               const int count,double &arr_buffer[])
  {
   bool result=true;
   if(!ArrayIsDynamic(arr_buffer))
     {
      //if(InpPrintLog)
      PrintFormat("ERROR! EA: %s, FUNCTION: %s, this a no dynamic array!",__FILE__,__FUNCTION__);
      return(false);
     }
   ArrayFree(arr_buffer);
//--- reset error code
   ResetLastError();
//--- fill a part of the iBands array with values from the indicator buffer
   int copied=CopyBuffer(handle,buffer,start_pos,count,arr_buffer);
   if(copied!=count)
     {
      //--- if the copying fails, tell the error code
      //if(InpPrintLog)
      PrintFormat("ERROR! EA: %s, FUNCTION: %s, amount to copy: %d, copied: %d, error code %d",
                  __FILE__,__FUNCTION__,count,copied,GetLastError());
      //--- quit with zero result - it means that the indicator is considered as not calculated
      return(false);
     }
   return(result);
  }
//+------------------------------------------------------------------+

Результат всё корректно создаётся. Сначала выбирается символ, а ПОТОМ создаётся по нему индикатор.


Файлы:
 
Artem Mordvinkin:

понял, давайте так 

Дано (название символов)


Код (фрагменты)


Для примера выберем кабель в тестере


Запускаем и 

2020.03.09 19:19:45.766 symbol EURUSDrfd does not exist

2020.03.09 19:19:45.766 symbol USDJPYrfd does not exist

2020.03.09 19:19:45.766 symbol AUDUSDrfd does not exist

По кабелю ошибки нет - он же принудительно в тестере выбран

Историю проверьте - с таким экзотическим названием вероятно что истории всего две недели(утрированно). Всегда проверяйте тест на тестовом сервере MetaQuotes-Demo, и только потом на всякой экзотике.

И читайте сто раз справку - нельзя тупо делать SymbolSelect - не проверяя РЕЗУЛЬТАТ выполнения.

 
Vladimir Karputov:

Пример создания индикатора iMA на символе 'USDJPY', при этом тестер запускается на 'EURUSD'.

Результат всё корректно создаётся. Сначала выбирается символ, а ПОТОМ создаётся по нему индикатор.


А где вы указали название символа (чтобы он еще  евро отрабатывал)?

 
Artem Mordvinkin:

А где вы указали название символа (чтобы он еще  евро отрабатывал)?

Пример создания индикатора iMA на символе 'USDJPY', при этом тестер запускается на 'EURUSD'. 'USDJPY' - задаётся в параметрах. Тестер запускается на 'EURUSD'. Что именно не ясно?

 
Vladimir Karputov:

Историю проверьте - с таким экзотическим названием вероятно что истории всего две недели(утрированно). Всегда проверяйте тест на тестовом сервере MetaQuotes-Demo, и только потом на всякой экзотике.

И читайте сто раз справку - нельзя тупо делать SymbolSelect - не проверяя РЕЗУЛЬТАТ выполнения.

Есть нюанс - не первый год читаю и делаю что-то на MQL и работает же черт побери:)

Возможно косяк в символах (в их названии), но тогда бы вообще не работало.

 
Vladimir Karputov:

Пример создания индикатора iMA на символе 'USDJPY', при этом тестер запускается на 'EURUSD'. 'USDJPY' - задаётся в параметрах. Тестер запускается на 'EURUSD'. Что именно не ясно?

Сделал уже - думал не в самом коде.

Ну и 

2020.03.09 20:12:36.212 2010.01.01 00:00:00   cannot load indicator 'Moving Average' [4801]

2020.03.09 20:12:36.212 2010.01.01 00:00:00   Failed to create handle of the iMA indicator for the symbol GBPUSDrfd/PERIOD_H1, error code 4801


UPD

handle_iMA=iMA("EURUSDrfd",Period(),Inp_MA_ma_period,Inp_MA_ma_shift,
                  Inp_MA_ma_method,Inp_MA_applied_price);

Ставлю на евро символ - работает

Выбираю кабель... ну и остальное вы уже сверху прочли:)

Резюмирую - вопрос в билде, а  не в сове. Брокер - известный российский (в реестре ЦБ,  а их там 4 всего) На боевом - работает. В тестере - не добавляет символы в обзор рынка. Почему - вопрос к разрабам. Выкинули тему в "вопросы новичков", а зря

 
Artem Mordvinkin:

Сделал уже - думал не в самом коде.

Ну и 

2020.03.09 20:12:36.212 2010.01.01 00:00:00   cannot load indicator 'Moving Average' [4801]

2020.03.09 20:12:36.212 2010.01.01 00:00:00   Failed to create handle of the iMA indicator for the symbol GBPUSDrfd/PERIOD_H1, error code 4801


UPD

Ставлю на евро символ - работает

Выбираю кабель... ну и остальное вы уже сверху прочли:)

Форум по трейдингу, автоматическим торговым системам и тестированию торговых стратегий

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

Vladimir Karputov, 2020.03.09 18:07

Историю проверьте - с таким экзотическим названием вероятно что истории всего две недели(утрированно). Всегда проверяйте тест на тестовом сервере MetaQuotes-Demo, и только потом на всякой экзотике.

***


Какие настройки в ТЕРМИНАЛЕ, по количеству БАРОВ на графике?