Библиотеки: Virtual - страница 87

 
fxsaber #:

Выше показал через макрос ускорение - просто отключает VIRTUAL_SELECTORDERS_OBJECT.

Дополнительные расходы только на переключение между виртуальными окружениями и проброс в них тиков.

Огромное спасибо автору за улучшения!
 
fxsaber #:

Выше показал через макрос ускорение - просто отключает VIRTUAL_SELECTORDERS_OBJECT.

Дополнительные расходы только на переключение между виртуальными окружениями и проброс в них тиков.

Если используете только свое виртуальное окружение, то можно сделать подмену EAToMath-окружения на свое. И тогда скорость будет наивысшая.
//#define EATOMATH_VIRTUAL_USE       // Если используется виртуальное окружение, то повышает производительность, иначе - понижает.
#include <fxsaber\EAToMath\EAToMath.mqh> // https://www.mql5.com/ru/code/61283

void OnTick()
{
  static const bool IsNewVirtual = (VIRTUAL::GetID() == "EAToMath.mqh") && !g_virtual_env.IsNull() &&
                                   VIRTUAL::CopyTo(g_virtual_env.GetHandle()) && g_virtual_env.Select();
  static const bool Init = !IsNewVirtual && g_virtual_env.Select();

  if (Init)
    VIRTUAL::NewTick_NoCheck();

  TradeStep();
}
Даже пробрасывать тики не понадобится. Все будет автоматически происходить с виртуальным окружением, которое создали сами.
 
fxsaber #:
Если используете только свое виртуальное окружение, то можно сделать подмену EAToMath-окружения на свое. И тогда скорость будет наивысшая. Даже пробрасывать тики не понадобится. Все будет автоматически происходить с виртуальным окружением, которое создали сами.
Хорошая функция, но в моей стратегии может быть не одна виртуальная среда, а две или три. В итоге всё равно можно будет переключаться только между средами? Думаю, проще вообще разместить все стратегии в одной среде и различать их только по magicNumber — так, похоже, будет быстрее всего.
 
hini #:
Думаю, проще вообще разместить все стратегии в одной среде и различать их только по magicNumber — так, похоже, будет быстрее всего.

Это будет медленнее. Представьте, что у вас 5 стратегий по 10 ордеров. Если они независимы, то вы на каждом тике работаете со своими 10 ордерами. Итого 5x10 переборов.

Если же все в одной куче, то каждая стратегия должна из 50 ордеров найти свои 10. А это значит, что нужно перебрать 5x50 ордеров.

Мультивалютный Apart-режим.
Мультивалютный Apart-режим.
  • 2025.01.10
  • www.mql5.com
Большинство мультивалютных советников представляют из себя портфель независимых (по логике торговых сигналов) друг от друга ТС, где если связь и есть, то за счет ММ - все ТС оказывают влияние на общие
 
fxsaber #:
Если же все в одной куче, то каждая стратегия должна из 50 ордеров найти свои 10. А это значит, что нужно перебрать 5x50 ордеров.
Хорошо, это действительно проблема.
 
Может ли библиотека Virtual, как в MT4, устанавливать уровень тейк-профит для коротких позиций выше цены открытия?
 
hini #:
Может ли библиотека Virtual, как в MT4, устанавливать уровень тейк-профит для коротких позиций выше цены открытия?
Такого ограничения нет в MT5 и в Virtual, если правильно понял вопрос.
 
fxsaber #:
Такого ограничения нет в MT5 и в Virtual, если правильно понял вопрос.
В MT5 так нельзя. Допустим, короткая позиция открыта по цене 3000, тогда уровень тейк-профита можно установить только ниже 3000.
 
Я изучил код, и в Virtual нет никаких ограничений.
 
hini #:
В MT5 так нельзя. Допустим, короткая позиция открыта по цене 3000, тогда уровень тейк-профита можно установить только ниже 3000.

TP SELL-позиции зависит только от Ask-цены - TP нельзя поставить выше текущей Ask-цены.

Закрытие TP с отрицательным профитом - частая ситуация.