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

 
Forester #:

У меня одного перестало работать или у других пользователей тоже?

У меня (b5370) идет нормально оптимизация на кастомных (даже на бажно-безбаровых).
 
fxsaber #:
У меня (b5370) идет нормально оптимизация на кастомных (даже на бажно-безбаровых).
У меня на рабочем компе Win7 и до b5370 уже не обновляется из за прекращения поддержки Win7-8. И там этот баг не дает оптимизировать на кастомных символах.
Проверил на другом компе с Win10 - с b5370 всё оптимизируется.
 

b5488, CustomTicksReplace меняет тики с нулевым флагом (цены не поменялись) на ненулевой.

void OnStart()
{    
  MqlTick Ticks[];
  
  if (CopyTicks(_Symbol, Ticks, COPY_TICKS_ALL, 0, 2) > 1)
  {
    ArrayPrint(Ticks);
    
    Ticks[0].flags = TICK_FLAG_BID | TICK_FLAG_ASK; // Первый тик - все флаги.
    
    // Цены следующего тика делаем равными предыдущему.
    Ticks[1].bid = Ticks[0].bid;
    Ticks[1].ask = Ticks[0].ask;
    
    Ticks[1].flags = 0; // Цены повторяются - флаг нулевой.
    
    const string Name = "TEST03";
    
    CustomSymbolCreate(Name, NULL, _Symbol);
    CustomTicksReplace(Name, 0, LONG_MAX, Ticks);    
  }
}

Должен быть нулевой флаг - поменялось только время. Просьба для таких тиков сохранять нулевой флаг (конечно, такие тики выкидывать нельзя, если кто-то видит в них бессмысленность).

Строка для поиска: Uluchshenie 148.
 
fxsaber #:

b5488, CustomTicksReplace меняет тики с нулевым флагом (цены не поменялись) на ненулевой.

Должен быть нулевой флаг - поменялось только время. Просьба для таких тиков сохранять нулевой флаг (конечно, такие тики выкидывать нельзя, если кто-то видит в них бессмысленность).

Строка для поиска: Uluchshenie 148.

Документация:

https://www.mql5.com/ru/docs/customsymbols/customticksadd

Если значение полей ticks[k].bid, ticks[k].ask, ticks[k].last или ticks[k].volume больше нуля, то в поле ticks[k].flags пишется комбинация соответствующих флагов:

  • TICK_FLAG_BID – тик изменил цену бид
  • TICK_FLAG_ASK  – тик изменил цену аск
Документация по MQL5: CustomTicksAdd / Пользовательские символы
Документация по MQL5: CustomTicksAdd / Пользовательские символы
  • www.mql5.com
Добавляет в ценовую историю пользовательского инструмента данные из массива типа MqlTick . Пользовательский символ должен быть выбран в окне...
 
Anton #:
  • TICK_FLAG_BID – тик изменил цену бид
  • TICK_FLAG_ASK  – тик изменил цену аск
Цены не менялись.
 
fxsaber # :

b5488,  CustomTicksReplace меняет тики с нулевым флагом (цены не поменялись) на ненулевой.

Должен быть нулевой флаг - поменялось только время. Просьба для таких тиков сохранять нулевой флаг (конечно, такие тики выкидывать нельзя, если кто-то видит в них бессмысленность).

Строка для поиска : Uluchshenie 148.

Как может появиться клещевой тик, если ничего не изменилось (кроме времени)?

По определению, тик — это событие, когда что-то изменилось (цена/объем).

 
Alain Verleyen #:

По определению, тик — это событие, когда что-то изменилось (цена/объем).

С появлением пользовательских символов тики стали технической сущностью - вызов OnTick.

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


Есть много сценариев использования пользовательских символов.

 
fxsaber # :

С появлением пользовательских символов тики стали технической сущностью - вызов OnTick.

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


Есть много сценариев использования пользовательских символов.

Извините, но я не понимаю. Перевод невнятный.

Можете объяснить, пожалуйста?

 
Alain Verleyen #:

Извините, но я не понимаю. Перевод невнятный.

Можете объяснить, пожалуйста?

Есть мультивалютный советник, который запускается на EURUSD, но торгует еще и GBPUSD. Есть простой принцип индикатора-шпиона.

А можно создать кастомный символ OnTickActivate, который последовательно содержит хронологию приходов тиков EURUSD и GBPUSD, при этом в MqlTick.bid содержит номер символа (0 - EURUSD, 1 - GBPUSD).


Тогда мультивалютный советник запускается на символе OnTickActivate. И получает вызов OnTick на каждом тике EURUSD и GBPUSD (почти).

Очевидно, что OnTickActivate будет содержать подпоследовательности тиков с одинаковыми "ценами".


Это только один из сценариев использования пользовательских символов. Могут быть и другие, когда нужен тик с ценами предыдущего.

OnTickMulti
OnTickMulti
  • 2023.12.13
  • www.mql5.com
Мультисимвольный OnTick.
 
Alain Verleyen #:

Извините, но я не понимаю. Перевод невнятный.

Можете объяснить, пожалуйста?

Требуются штатные функции обработчики

OnTick(string & TickFromSymbolName, "EURUSD", "GBPUSD", "GOLD", "BRENT", ... etc)

OnCalculate(string & TickFromSymbolName, "EURUSD", "GBPUSD", "GOLD", "BRENT", ... etc)

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

string & TickFromSymbolName



Реализовав штатный много-символьный обработчик

OnTick(string & TickFromSymbolName, "EURUSD", "GBPUSD", "GOLD", "BRENT", ... etc)

так-же разрешить его использование в программе сервис.