Пользовательские символы. Ошибки, баги, вопросы, предложения. - страница 14

 

Баг 21.


2085

После реконекта сервера, все созданные кастомные символы, сами добавляются в обзор рынка.
Это хорошо проявляется когда рынок закрыт в выходные. 
Сервер периодически иногда реконектится, или после перезагрузки терминала в момент установки коннекта,
график стандартного символа может перезагрузиться и сделать один тик, в этот момент все созданные кастомные символы сами добавляются в обзор рынка. 

 

Предложение.

Прошу добавить идентификатор SYMBOL_VOLUME_INITIAL для свойств символа, и отображение его значения в спецификации.
И добавить соответствующий идентификатор для вызова его значения.

CustomSymbolSetDouble(SName, SYMBOL_VOLUME_INITIAL, 0.00000000);           Результат: Initial volume == 0.00000000
 
Roman:

Баг 20.

2085
Не корректная установка свойств кастомного символа.



Где код для воспроизведения?

 
Slava:

Где код для воспроизведения?

В сообщении с багом 20, указаны идентификаторы. Они у вас не отображаются в сообщении?

 

Баг 22.

Проброс тика изменяет его цены в 10 раз.

#define PRINT(A) Print(#A + " = " + (string)(A))

void OnStart()
{
  MathSrand((int)TimeLocal());  
  const string Name = "CUSTOM_" + _Symbol + (string)MathRand(); // Создали символ    
  
  PRINT(CustomSymbolCreate(Name)); // Создали символ по-умолчанию.
  
  // Если удалить любую из двух строк ниже, то результат будет нормальным.
  PRINT(CustomTicksDelete(Name, 0, LONG_MAX)); // Удалили тиковую историю (ее на самом деле нет).
  PRINT(CustomSymbolDelete(Name)); // Удалили символ
  
  PRINT(CustomSymbolCreate(Name, NULL, _Symbol)); // Создали символ на основе главного.
    
  PRINT(SymbolSelect(Name, true)); // Добавили в Обзор рынка.

  MqlTick Tick[1];
  PRINT(SymbolInfoTick(_Symbol, Tick[0])); // Взяли свежий тик для проброса.
  ArrayPrint(Tick); // Показали тик.
  
  PRINT(CustomTicksAdd(Name, Tick)); // Пробросили тик.
  
  MqlTick NewTicks[];
  PRINT(CopyTicksRange(Name, NewTicks));  
  ArrayPrint(NewTicks); // Показали, что на самом деле пробросили.
}


Результат

CustomSymbolCreate(Name) = true
CustomTicksDelete(Name,0,LONG_MAX) = 0
CustomSymbolDelete(Name) = true
CustomSymbolCreate(Name,NULL,_Symbol) = true
SymbolSelect(Name,true) = true
SymbolInfoTick(_Symbol,Tick[0]) = true
                 [time]   [bid]   [ask] [last] [volume]    [time_msc] [flags] [volume_real]
[0] 2019.06.17 02:08:35 1.12152 1.12157 0.0000        0 1560737315178       2       0.00000
CustomTicksAdd(Name,Tick) = 1
CopyTicksRange(Name,NewTicks) = 1
                 [time]    [bid]    [ask] [last] [volume]    [time_msc] [flags] [volume_real]
[0] 2019.06.17 02:08:35 11.21520 11.21570 0.0000        0 1560737315178       6       0.00000
 

всем привет

я впервые запустил мт, нужен для анализа данных и построения графиков

создал символ, загрузил бары из csv, в каталоге инстанта толстый файл с данными вижу

символ активировал, в обзоре рынка есть

не отображается график - "Ожидание обновления"


что-то пропустил я?

пробовал и в мт4 и в мт5 - одинаково всё

демо графики - бегают прыгают

 
Roman:

В сообщении с багом 20, указаны идентификаторы. Они у вас не отображаются в сообщении?

Ещё раз. Где воспроизводимый код?

Идентификаторы отображаются. В связи с этим вопрос: при чём здесь ORDER_FILLING_XXX? Вы документацию внимательно читали?

 
Slava:

Ещё раз. Где воспроизводимый код?

Идентификаторы отображаются. В связи с этим вопрос: при чём здесь ORDER_FILLING_XXX? Вы документацию внимательно читали?

При том, что мы устанавливаем режим заполнения для SYMBOL_FILLING_MODE
Но в самих идентификаторах наблюдается смещение выводимого результата.
Посмотри на результат.
FOK устанавливает в спецификацию None
IOC устанавливает в спецификацию FOK
RETURN устанавливает в спецификацию IOC

ORDER_FILLING_FOK     Результат: Filling == None
или
ORDER_FILLING_IOC     Результат: Filling == Fill or Kill
или
ORDER_FILLING_RETURN  Результат: Filling == Immediate or Cancel

А если всё же нужно использовать другие идентификаторы, из другого ENUM, типа SYMBOL_FILLING_XXX

То в этом ENUM всего два идентификатора 
SYMBOL_FILLING_FOK
SYMBOL_FILLING_IOC

И для биржевого режима, идентификатора нет!
Как тогда установить биржевой режим без идентификатора или его значения ?
Вы сами загляните в документацию.
И убедитесь что для 
SYMBOL_FILLING_RETURN идентификатор отсутствует

 
Roman:

Как тогда установить биржевой режим без идентификатора или его значения ?

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

Библиотеки: Symbol

fxsaber, 2018.04.06 09:21

Symb.SetProperty(SYMBOL_TRADE_EXEMODE, SYMBOL_TRADE_EXECUTION_EXCHANGE);
Symb.SetProperty(SYMBOL_TRADE_CALC_MODE, SYMBOL_CALC_MODE_EXCH_FUTURES);

Помимо разработчиков, Ваши сообщения и мне совсем не понятны. Посмотрите, как можно конструктивно сообщить о проблеме.

 
Ну что же тут не понятного, в сообщении с багом #20 я указал установку идентификатора, и указал причину не соответствия. 
SYMBOL_TRADE_EXEMODE
SYMBOL_TRADE_CALC_MODE
Это совсем другие режимы, и к проблеме не относятся.

Так яснее наверно будет.

void OnStart()
{
   string SName = "SYMBOL";
   
   if(CustomSymbolCreate(SName))
      CustomSymbolSetInteger(SName, SYMBOL_FILLING_MODE, ORDER_FILLING_RETURN);
      //CustomSymbolSetInteger(SName, SYMBOL_FILLING_MODE, ORDER_FILLING_FOK);  
      //CustomSymbolSetInteger(SName, SYMBOL_FILLING_MODE, ORDER_FILLING_IOC);
   
}

А если нужно использовать всё таки другой идентификатор из ENUM   SYMBOL_FILLING_XXX
То для 
SYMBOL_FILLING_RETURN идентификатора нет!

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