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

 
Andrey Khatimlianskii #:

Виртуал теперь может быть мультивалютным?

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

 

MT5-Тестер подвергался жесткой проверке на корректность работы через сравнение с Virtual (можно, конечно, сказать и наоборот).

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

Не совпадают результаты оптимизации и одиночного прогона

fxsaber, 2021.11.25 12:05

Ни разу не использовал режим "Форвард-оптимизации". Могу сказать только за обычную оптимизацию.

Эта штука автоматически проверила на совпадение многие тысячи результатов одиночных прогонов и их значений в таблицах оптимизаций на сотнях символах. Все совпадает.


Поэтому почти 100%, причина различий в исходном коде.


Также проверялся на баги и сам Тестер (мало ли где некорректно сработал). Не нашел проблем среди миллионов сделок. Идеальное совпадение с другим тестером. Единственное НО - досконально проверял только моновалютный режим.


Если в будущих билдах MT5 появятся косяки в Тестере, то с большой вероятностью обнаружу их.

Сильный аргумент, чтобы доверять результатам.

 

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

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

traveller00, 2021.12.04 17:55

При расчёте свопов SWAP_MODE игнорируется, я понимаю? Т.е. теоретически он может складывать кирпичи с вёдрами, если свопы задаются не в тех величинах, как ожидается?

static bool CalcSwaps( const double SwapShort, const double SwapLong,
                       datetime RolloverTime = 0, const int Rollover3Days = WEDNESDAY );
 
Обновлен: 2021.12.29 06:12

Тихое обновление? Что поменялось?

 
traveller00 #:
Обновлен: 2021.12.29 06:12

Тихое обновление? Что поменялось?

Добавляется новый функционал. За осень около десятка обновлений было.

 
bot #:

I am trying to understand how Virtual works, but not able to figure it out yet. Question I have are:

  1. How to set up a virtual environment with multiple virtual modes?
  2. How to do hedging in MT5 in a Netting account?
  3. How to hide TP and SL?

I have drawn the diagram showing various structs and classes in the Virtual

В Virtual входят только следующие файлы.

Virtual.mqh
Orders.mqh
HistoryOrders.mqh
Order.mqh
Order_Base.mqh


Только сущности из этих файлов являются частью Virtual. Для обывателя нужны только эти три метода.

VIRTUAL::Create
VIRTUAL::SelectByHandle
VIRTUAL::NewTick

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


И больше ничего не нужно знать для ответа на ваши вопросы, если хотите решать их через Virtual.


Сами вопросы носят общий характер, не зависящий от реализации. Вам непонятно, как с помощью виртуальных окружений (не обязательно Virtual, любых) наделить Netting возможностью торговли, как на хедже? Или как скрыть SL/TP? Но эти вопросы не относятся непосредственно к Virtual. Приводил какие-то примеры. Наверное, стоит сначала вообще понять, что такое виртуальное окружение. А потом самому дойти до понимания возможных сценариев применения.


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

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


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

 

Несколько часов ломал голову, почему при Оптимизации Агенты стали потреблять в 5-10 раз больше памяти (до трех гигабайтов на агента), чем раньше. Из-за такого дикого потребления утыкался в нехватку памяти, пришлось отключать больше половины агентов.


Почти поверил, что дело в параллельности. А причина оказалась неожиданной.


Раньше торговал через Virtual, но случайно отключил его. И оказалось, что если в Тестере оптимизируете в реальном окружении (99.9% так делают), то история торговли MT5 выжирает огромное количество памяти! И получается, что каждый Агент генерирует столько MT5-истории, что вся память на машине забивается. Но стоит только переключить историю в Virtual, как все проходит без каких-либо затыков с этой стороны.


Отсюда неожиданный вывод. Что если хотите оптимизировать ТС на всех Агентах (включая Облако), то иногда просто необходимо отказываться от MT5-истории в пользу Virtual. Это даст не только скорость на каждого Агента, но и позволит включить всех Агентов, не упираясь в потолок по RAM.

 

Есть предложение.

Добавить в Orders.mqh

  void SetBalance( const double balance )
  {
    double diff = balance - this.Balance;
    
    this.Balance = balance;
    this.Equity += diff;
  }

и в Virtual.mqh

  static void SetBalance( const double balance )
  {
    if(VIRTUAL::SelectOrders)
      VIRTUAL::SelectOrders.SetBalance( balance );
  }
 
Oleksii Chepurnyi #:

Есть предложение.

#include <fxsaber\Virtual\Virtual.mqh> // https://www.mql5.com/ru/code/22577

void OnStart()
{
  if (VIRTUAL::SelectByHandle(VIRTUAL::Create(-1.0)))
  {
    TesterDeposit(1234);
    TesterWithdrawal(567);
    
    Print(VIRTUAL::ToString(5));
  }
}
 
fxsaber #:

Это видел, спасибо. Но нужно постоянно корректировать. И без ордеров депозитных в истории

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