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

 
Sergey Chalyshev:

Вы очень близки к правильному решению.

Вы кто?

Но пробовать скачивать и запускать пример второй раз не хочется.

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

По моему одного инклуда достаточно, чтобы оставаться в рамках вашей МТ4 логики и работать на МТ5.

Если не в курсе, 100 инклудов равносильны одному.

 
fxsaber:

Вы кто?


 

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

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

fxsaber, 2019.04.30 12:12

// Торговая панель в виртуальном окружении в реальном времени.

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

// Создали виртуальное окружение и сделали его текущим.
const bool VirtualInit = VIRTUAL::SelectByHandle(VIRTUAL::Create());

// Расширение графического интерфейса Терминала/Тестера.
#include <IgorM\TradePanel_C#\TradePanel_C#.mqh> // https://www.mql5.com/ru/code/24829

void OnTick()
{  
  VIRTUAL::NewTick(); // Пробрасываем приходящие тики в виртуальное окружение.
}

void OnTimer() {} // Наличие OnTimer (даже пустого) требует TradePanel_C#.


Никак не ожидал, что настолько просто получится вести виртуальную торговлю (включая неттинг) в реальном времени.

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

 

fxsaber:

Никак не ожидал, что настолько просто получится вести виртуальную торговлю (включая неттинг) в реальном времени.

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

В идеале добавить бы в Virtual поддержку работы со множеством символов, а не только с текущим символом графика, научить синхронизировать историю ордеров (вероятно через общий файл) разных виртуальных торговых окружений между собой, чтобы можно было различные советники, индикаторы, скрипты (с подключенной библиотекой) запускать превычным способом на разных графиках и они обращались к общей виртуальной хистори закрытых и открытых ордеров, + панель + возможность написать ещё кучу всего, что только понадобится, т.е. получился бы полноценный виртуальный терминал внутри реального, но с бОльшими возможностями.

 
Aleksandr Volotko:

В идеале добавить бы в Virtual поддержку работы со множеством символов, а не только с текущим символом графика, научить синхронизировать историю ордеров (вероятно через общий файл) разных виртуальных торговых окружений между собой, чтобы можно было различные советники, индикаторы, скрипты (с подключенной библиотекой) запускать превычным способом на разных графиках и они обращались к общей виртуальной хистори закрытых и открытых ордеров, + панель + возможность написать ещё кучу всего, что только понадобится, т.е. получился бы полноценный виртуальный терминал внутри реального, но с бОльшими возможностями.

  1. Виртуальное окружение нужно мизеру людей.
  2. Из них Virtual-реализацией будут пользоваться еще в разы меньше.
  3. Выкладываю, что сам использую.

 

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

Спасибо Вам, что делитесь такими качественными и полезными инструментами, это мега-ценно.

 

Неожиданный сценарий использования виртуального окружения.


Берем разогнанный Сигнал, который был замониторен совсем недавно. Сервис не покажет, какая была просадка. Но с помощью Virtual это очень легко выяснить.

В общем виде возможно построение ряда Эквити по стороннему стейтменту.

 
fxsaber:

Неожиданный сценарий использования виртуального окружения.


Берем разогнанный Сигнал, который был замониторен совсем недавно. Сервис не покажет, какая была просадка. Но с помощью Virtual это очень легко выяснить.

В общем виде возможно построение ряда Эквити по стороннему стейтменту.

Это интересно!

Правда, не представляю, как реализовывать...

 
Для компиляции под MT5 требуется build2085+.
 
Добавлена комиссия.
#define ORDER_COMMISSION -3.6 // Задание комиссии (OrderCommission() = OrderLots() * (ORDER_COMMISSION)), включая динамический вариант.



Комиссию можно задать не только стационарной, но и изменяющейся. Например, зависимой от волатильности или времени суток.


ЗЫ Самый простой способ задать комиссию в штатном тестере

sinput double VirtualCommission = -3.6; // Комиссия для виртуального окружения

#define ORDER_COMMISSION VirtualCommission // Задание комиссии (OrderCommission() = OrderLots() * (ORDER_COMMISSION)).

#define VIRTUAL_TESTER // Запуск в виртуальном торговом окружении
#include <fxsaber\Virtual\Virtual.mqh> // Виртуальное торговое окружение

void OnTick()
{
// ...
}
Причина обращения: