Новая версия платформы MetaTrader 5 build 3620: улучшения веб-терминала, поддержка ONNX и ускоренное умножение матриц в MQL5 - страница 17

 
JRandomTrader #:

Что такое memcpy, я представляю как минимум со времён LDI, LDD, LDIR, LDDR.

Я пытаюсь понять, откуда берутся исходные данные по всем ордерам.

Ну тут обычное копирование с торгового окружения, с реалтайм истории и неактивной истории, ордеров.  

 
BillionerClub #:

Ну тут обычное копирование с торгового окружения, с реалтайм истории и неактивной истории, ордеров.  

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

Иначе можно нарваться на ситуацию, когда ордер уже отправлен, но в действующих его ещё нет, или когда ордера уже нет в действующих, но ещё нет в истории (при этом сделка в истории может как уже присутствовать, так и ещё отсутствовать).

 
JRandomTrader #:

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

Иначе можно нарваться на ситуацию, когда ордер уже отправлен, но в действующих его ещё нет, или когда ордера уже нет в действующих, но ещё нет в истории (при этом сделка в истории может как уже присутствовать, так и ещё отсутствовать).

очень удобный признак для таких проверок - изменение AccountMargin. Маржа поменялась, значит сработала отложка/стоп/тейк или был вход/выход по рынку. Значит надо проверить свои ордера.

просто сам так делаю (храню свои ордера/позиции в своих структурах и синхронизирую по мере надобности), единственное не пытаюсь их сортировать сразу. При необходимости сортировки всегда можно сделать массив указателей и из него сотворить индекс.

 
Maxim Kuznetsov #:

очень удобный признак для таких проверок - изменение AccountMargin. Маржа поменялась, значит сработала отложка/стоп/тейк или был вход/выход по рынку. Значит надо проверить свои ордера.

просто сам так делаю (храню свои ордера/позиции в своих структурах и синхронизирую по мере надобности), единственное не пытаюсь их сортировать сразу. При необходимости сортировки всегда можно сделать массив указателей и из него сотворить индекс.

Собственно, я массив не сортирую, просто сразу вставляю ордер в нужное место, и сдвигаю массив при попадании ордера в историю, я тут где-то и код выкладывал.

 
JRandomTrader #:

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

Иначе можно нарваться на ситуацию, когда ордер уже отправлен, но в действующих его ещё нет, или когда ордера уже нет в действующих, но ещё нет в истории (при этом сделка в истории может как уже присутствовать, так и ещё отсутствовать).

У каждого свои задачи в трейдинге делает эксперт. У меня эксперт копирует максимально быстро сделки на разные терминалы. Для вашей задачи действительно может лучше всего подойти проверка маржи на счете. 

 
MetaQuotes:

8. MQL5: Добавлена новая функция CopySeries для копирования синхронизированных таймсерий из MqlRates в отдельные массивы.

Функция CopySeries позволяет за один раз получать только нужные таймсерии в разные указанные массивы, при этом они все синхронизированы между собой. Это означает, что все значения в полученных массивах по конкретному индексу N будут принадлежать одному и тому же бару на указанной паре символ/таймфрейм. В этом случае не требуется заботиться о том, чтобы все полученные таймсерии были синхронизированы по времени открытия бара.

В отличие от CopyRates, которая возвращает полный набор таймсерий в виде массива MQLRates, функция CopySeries позволяет программисту получать только нужные таймсерии на основе комбинации флагов, указывающих тип запрашиваемых таймсерий. При этом порядок массивов, передаваемых в функцию, должен соответствовать порядку полей в структуре MqlRates:

Таким образом, если необходимо получить значения таймсерий time, close и real_volume для последних 100 баров текущего символа/таймфрейма, вызов должен быть следующим:

При этом важен порядок массивов "time, close, volume" — он должен соответствовать порядку полей в структуре MqlRates. А вот порядок значений в маске rates_mask значения не имеет, маска могла быть такой :

Не планируется ли вот это в 4ке? Для обратной совместимости, так сказать. Хотелось бы работать с сериями одинаково.

 

Есть большая просьба. Можно в тестере стратегий выделенную строку зафиксировать, хоть сверху, хоть снизу, а то когда открыто несколько десятков позиций и постоянно открываются новые - итоговая строка уползает и нельзя визуально отследить все параметры, постоянно скролить бесит уже.


 
Maksim Emeliashin #:

Есть большая просьба. Можно в тестере стратегий выделенную строку зафиксировать, хоть сверху, хоть снизу, а то когда открыто несколько десятков позиций и постоянно открываются новые - итоговая строка уползает и нельзя визуально отследить все параметры, постоянно скролить бесит уже.


чтобы не бесится, в робот добавьте несколько строк и выведите нужные AccountInfoDouble(ACCOUNT_BALANCE) и прочие на чарт.

честное слово, это быстрее и эффективнее чем ждать милостей от природы

 
Maxim Kuznetsov #:

чтобы не бесится, в робот добавьте несколько строк и выведите нужные AccountInfoDouble(ACCOUNT_BALANCE) и прочие на чарт.

честное слово, это быстрее и эффективнее чем ждать милостей от природы

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