Новая версия платформы MetaTrader 5 build 1930: Плавающие окна графиков и .Net библиотеки в MQL5 - страница 146

 
На днях считал глупостью 300 миллионов тиков по символу, но бывает и больше, оказывается.
 
fxsaber:

Опечатка, видимо.

Не опечатка: https://www.mql5.com/ru/docs/customsymbols/custombookadd
Документация по MQL5: Пользовательские символы / CustomBookAdd
Документация по MQL5: Пользовательские символы / CustomBookAdd
  • www.mql5.com
Передает состояние стакана цен по пользовательскому инструменту. Функция позволяет транслировать стакан цен так, как если бы он приходил от сервера брокера. [in]   Массив данных типа MqlBookInfo, полностью описывающих состояние стакана цен — все заявки на покупку и продажу. Переданное состояние стакана цен полностью заменяет предыдущее. При...
 

Вышла бета 1983, кстати.

На следующей неделе будет релиз.

 
Renat Fatkhullin:
Не опечатка: https://www.mql5.com/ru/docs/customsymbols/custombookadd

Это очень интересно, спасибо.

 
Renat Fatkhullin:

Ренат, через OnTradeTransaction корифеи форума не смогли решить простую по формулировке торговую задачу

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

Обработка транзакций OnTradeTransaction

fxsaber, 2019.02.08 12:37

Задача

На Неттинге выставлены отложенные ордера (могут быть разнонаправленные и каждого типа любое количество). Нужно при каждом срабатывании исходного отложенного ордера выставлять свои SL/TP в виде Stop/Limit отложенных ордеров. При этом SL/TP ордера должны быть зависимы: сработал один - удалился второй. Исходные и SL/TP отложенные ордера могут срабатывать частично. Советник может в любой момент перезагружаться, включая перенос на другой Терминал.

Сложно сказать, с чем это связано.

 
Renat Fatkhullin:

Вышла бета 1983, кстати.

На следующей неделе будет релиз.

Обратите, пожалуйста внимание на вероятные ошибки в билде 1983.

 
Renat Fatkhullin:
Не опечатка: https://www.mql5.com/ru/docs/customsymbols/custombookadd

Ренат, хочу еще раз обратить Ваше внимание на то, что нужно добавить время  формирования слепка стакана!

Вот Вы добавили функцию транслирования стакана по пользовательскому инструменту. Хорошо. А как его синхронизовать с тиковой историей если у слепков скатана нет времени?

Аналогично, сейчас не ясно как по рыночным инструментам привязывать стакан к тикам!

 

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

Новая версия платформы MetaTrader 5 build 1930: Плавающие окна графиков и .Net библиотеки в MQL5

fxsaber, 2019.02.05 14:53

В Тестере не работает корректно CopyTicksRange - зависает. Код для воспроизведения
input int EveryHours = 24;    // Через столько часов запрашиваем тики
input int IntervalHours = 72; // Запрашиваем тики такого количества последних рабочих часов

const bool Init = EventSetTimer(EveryHours * 3600); // Установили таймер

// Возвращает время равное Offset-торговым секундам назад.
datetime GetTime( const datetime Offset )
{
  static const ENUM_TIMEFRAMES Periods[] = {PERIOD_CURRENT, PERIOD_M1, PERIOD_M5, PERIOD_M15, PERIOD_M30, PERIOD_H1, PERIOD_H4, PERIOD_D1};
  
  datetime Res = 0;
  
  for (int i = 0; !Res && (i < ArraySize(Periods)); i++)
    Res = iTime(_Symbol, Periods[i], (int)Offset / PeriodSeconds(Periods[i]));
    
  return(Res);
}

template <typename T>
T MyPrint( const T Value, const string Str, const bool DebugFlag = false )
{
  Print(Str + " = " + (string)Value);

  return(Value);
}

// Удобный вывод в лог
#define _P(A) MyPrint(A, __FUNCSIG__ ", Line = " + (string)__LINE__ + ": " + #A)

void OnTimer()
{  
  const datetime BeginTime = GetTime(IntervalHours * 3600); // От этого времени запрашиваем тики
  const datetime EndTime = TimeCurrent();                   // До этого времени запрашиваем тики
  MqlTick Ticks[];
  
  _P(BeginTime);
  _P(EndTime);
  
  // Запрос тиков с даты по дату.
  _P(::CopyTicksRange(_Symbol, Ticks, COPY_TICKS_INFO, (ulong)BeginTime * 1000, (ulong)EndTime * 1000));  
}


Запускать по реальным тикам за январь 2019 EURUSD M1 MQ-Demo.

Просьба исправить.


1983 - все так же виснет.

 
fxsaber:

Ренат, через OnTradeTransaction корифеи форума не смогли решить простую по формулировке торговую задачу

Сложно сказать, с чем это связано.

Предполагаю, в этом причина

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

Обработка транзакций OnTradeTransaction

fxsaber, 2019.02.09 11:43

Попытка решить задачу через OnTradeTransaction - это слабое представление о количестве подводных камней. Обойти которые в конкретной задаче еще иногда можно. Но стоит только немного задачу поменять, как вся логика нарушается при OnTradeTransaction-реализации.

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

Поэтому рекомендовал бы смотреть в сторону синхронных торговых операций и OnTrade-функции. Там все на порядки проще и логика очень гибкая для изменений. Более того, надежней.


Переход на Async+Transactions сравни переходу с высокоуровневого языка на ассемблер. Т.е. его нужно производить на самом последнем этапе создания ТС, когда она ПОЛНОСТЬЮ исследована, готова к РЕАЛУ и осталось последнее - ускорить торговые операции БЕЗ изменения торговой логики.