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

 

Virtual:

Виртуальное торговое окружение

Virtual

Автор: fxsaber

 
Почти статья, только без модерации.
 
fxsaber:
Почти статья, только без модерации.

А оно Вам надо? 

 
Алексей Тарабанов:

А оно Вам надо? 

сам себя если не похвалишь..,))

посмотрим что это такое

 
Пробуем Оптимизировать вот такой советник
#include <MT4Orders.mqh> // https://www.mql5.com/ru/code/16006

#define VIRTUAL_TESTER // Запуск в виртуальном торговом окружении
#include <fxsaber\Virtual\Virtual.mqh> // https://www.mql5.com/ru/code/22577

input int Range = 0;       // Меняем от 1..10
input double Lots = 1;
input int Interval = 100;  // Время жизни позиции

// Переворотная ТС
void OnTick()
{
  if (!OrderSelect(OrdersTotal() - 1, SELECT_BY_POS))
    OrderSend(_Symbol, OP_BUY, Lots, SymbolInfoDouble(_Symbol, SYMBOL_ASK), 100, 0, 0); // Если нет позиции - открываем
  else if (TimeCurrent() - OrderOpenTime() > Interval) // Если позиция прожила больше заданного времени
  {
    // Перевернули позицию
    OrderClose(OrderTicket(), OrderLots(), OrderClosePrice(), 100);
    OrderSend(_Symbol, 1 - OrderType(), Lots, OrderClosePrice(), 100, 0, 0);
  }
} 


В режиме VirtualTester = false

Core 1  pass 0 returned result 997711199.00 in 0:00:03.354
Core 1  pass 1 returned result 997711199.00 in 0:00:02.559
Core 1  pass 2 returned result 997711199.00 in 0:00:02.606
Core 1  pass 3 returned result 997711199.00 in 0:00:02.574
Core 1  pass 4 returned result 997711199.00 in 0:00:02.621
Core 1  pass 5 returned result 997711199.00 in 0:00:02.574
Core 1  pass 6 returned result 997711199.00 in 0:00:02.636
Core 1  pass 7 returned result 997711199.00 in 0:00:02.558
Core 1  pass 8 returned result 997711199.00 in 0:00:02.590
Core 1  pass 9 returned result 997711199.00 in 0:00:02.621
Tester  optimization finished, total passes 10
Statistics      optimization done in 0 minutes 27 seconds
Statistics      local 10 tasks (100%), remote 0 tasks (0%), cloud 0 tasks (0%)


В режиме VirtualTester = true

Core 1  pass 0 returned result 997711199.00 in 0:00:01.545
Core 1  pass 1 returned result 997711199.00 in 0:00:00.780
Core 1  pass 2 returned result 997711199.00 in 0:00:00.795
Core 1  pass 3 returned result 997711199.00 in 0:00:00.796
Core 1  pass 4 returned result 997711199.00 in 0:00:00.811
Core 1  pass 5 returned result 997711199.00 in 0:00:00.780
Core 1  pass 6 returned result 997711199.00 in 0:00:00.780
Core 1  pass 7 returned result 997711199.00 in 0:00:00.780
Core 1  pass 8 returned result 997711199.00 in 0:00:00.780
Core 1  pass 9 returned result 997711199.00 in 0:00:00.795
Tester  optimization finished, total passes 10
Statistics      optimization done in 0 minutes 09 seconds
Statistics      local 10 tasks (100%), remote 0 tasks (0%), cloud 0 tasks (0%)


Результат идентичен, только скорость Оптимизации выросла в 3 раза! 

 

Разные методы ускорения Тестера "по реальным тикам" в одной таблице: во сколько раз увеличивается скорость Оптимизации без потери качества результата.

Original SymbolOriginal Symbol + VirtualTesterCustom SymbolCustom Symbol + VirtualTester
 1 2 32.5 94

Цифры примерные и могут плавать от разных условий. В сотню раз ускорить - реально.

 
fxsaber:

Разные методы ускорения Тестера "по реальным тикам" в одной таблице: во сколько раз увеличивается скорость Оптимизации без потери качества результата.

Original SymbolOriginal Symbol + VirtualTesterCustom SymbolCustom Symbol + VirtualTester
 1 2 32.5 94

Цифры примерные и могут плавать от разных условий. В сотню раз ускорить - реально.

Следующий шаг в эволюции - выкинуть тестер "в пропасть" и использовать свой. Можно еще ускорить.
 

Dmitriy Skub:
Следующий шаг в эволюции - выкинуть тестер "в пропасть" и использовать свой.

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

Выкладывается то, что может быть полезно не только себе.

Можно еще ускорить.

Например?

 

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

Автору библиотеки большое спасибо.

 
fxsaber:

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

Выкладывается то, что может быть полезно не только себе.

Например?

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

Имелось ввиду ускорение вне рамок (точнее сказать "раковин") МТ-тестера.

 
Dmitriy Skub:

Имелось ввиду ускорение вне рамок (точнее сказать "раковин") МТ-тестера.

Поэтому и спрашивал, поскольку сам когда-то делал стороннюю быструю считалку.

А данная библиотека, конечно, сделана не ради п.5, а ради п. 4.

Бесплатное ускорение Тестера - это бонус для тех, кто хочет быстрее делать Оптимизацию своего MT4-style советника в MT5-Тестера (многоядерность + Облако) и не заморачиваться совсем (код менять не нужно).


ЗЫ MT5-тестер немного озадачил своей производительностью... Кто-то в Облаке очень много лишних вычислений (и денег) совершает.

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