CopyTicks() не возвращает правильное значение для пользовательского символа. - страница 3

 
Stanislav Korotky #:

Ну вот у меня сомнения, что в _Digits можно любое значение с потолка написать. Хотелось бы от MQ услышать, каков разрешенный диапазон и что произойдет, если установить значение вне этого диапазона.

Если я правильно понял о чём речь, то вот ответ


 

Если просто скопировать свойства символа оригинала, то всё работает корректно.

В коде индикатора изменил следующие строки

   Comment("");
   datetime start_date = datetime(StringFormat("%d.%d.01 00:00:00", str.year, str.mon));
   const SYMBOL SYMB(local_symbol, NULL, _Symbol);
//SYMB.CloneProperties(Orignal_Symbol);
//SYMB.SetProperty(SYMBOL_DESCRIPTION, Symbol());
//SYMB.SetProperty(SYMBOL_DIGITS, _Digits);
//SYMB.SetProperty(SYMBOL_POINT, _Point);
   SYMB.On();
   MqlTick ticks_add[];

В ООП я вообще полный ноль, поэтому добавил отсебятины, и совсем не уверен, что это правильно. Но оно работает)

public:
   const string      Name;
   const string      NameOrigin;

                     SYMBOL(const string Symb = NULL, const string Path = NULL, const string NameOrig="") : Name((Symb == NULL) ? _Symbol : Symb)
     {
      if(!SYMBOL::SymbolIsExist(this.Name))
         ::CustomSymbolCreate(this.Name, Path, this.NameOrigin);
 
Aleksandr Slavskii # :

Если просто скопировать свойства символа оригинала, то всё работает корректно.

В коде индикатора изменил следующие строки

В ООП я вообще полный ноль, поэтому добавил отсебятины, и совсем не уверен, что это правильно. Но оно работает)

Ваш совет действительно полезен. Я изменил строку следующим образом:

   const SYMBOL SYMB(local_symbol, Orig_Symbol_Name);
   //SYMB.CloneProperties(Orig_Symbol_Name);
   SYMB.SetProperty(SYMBOL_DESCRIPTION, Symbol());
   //SYMB.SetProperty(SYMBOL_DIGITS, 10);

И, кажется, работает нормально.

 
Alexey Viktorov #:

Если я правильно понял о чём речь, то вот ответ


Это не ответ. Вопрос был, каков разрешенный диапазон вводимых значений точности и что делает терминал, если в коде установлено значение вне диапазона. Ответ знает только MQ.

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