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

 

Virtual:

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

Author: fxsaber

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

Забыл про бесплатный способ ускорения некоторых советников.

В качестве примера такой советник.

#include <MT4Orders.mqh> // https://www.mql5.com/ru/code/16006
/*
#define VIRTUAL_LIMITS_TP_SLIPPAGE // Лимитники и TP исполняются по первой цене акцепта - положительные проскальзывания
#define VIRTUAL_TESTER_FAST // Возможно, это ускорит советник в Тестере.
#include <fxsaber\Virtual\Virtual.mqh> // https://www.mql5.com/ru/code/22577
*/
input int inRange = 0;
input int inOffset = 10;

void OnTick( void )
{
  static double Offset = inOffset * _Point;
  
  MqlTick Tick;
  
  if (SymbolInfoTick(_Symbol, Tick) && Tick.bid && Tick.ask)
  {
    const double PriceHigh = NormalizeDouble(MathMax(Tick.bid + Offset, Tick.ask + _Point), _Digits);
    const double PriceLow = NormalizeDouble(MathMin(Tick.ask - Offset, Tick.bid - _Point), _Digits);
    
    bool BuyLimit = false;
    bool SellLimit = false;
    
    for (int i = OrdersTotal() - 1; i >= 0; i--)
      if (OrderSelect(i, SELECT_BY_POS))
        switch (OrderType())
        {
          case OP_BUY:
            BuyLimit = true;
            
            if (OrderTakeProfit() != PriceHigh)
              OrderModify(OrderTicket(), OrderOpenPrice(), OrderStopLoss(), PriceHigh, 0);
            break;
          case OP_SELL:
            SellLimit = true;
            
            if (OrderTakeProfit() != PriceLow)
              OrderModify(OrderTicket(), OrderOpenPrice(), OrderStopLoss(), PriceLow, 0);
            break;
          case OP_BUYLIMIT:
            BuyLimit = true;
            
            if ((OrderTakeProfit() != PriceHigh) || (OrderOpenPrice() != PriceLow))
              OrderModify(OrderTicket(), PriceLow, OrderStopLoss(), PriceHigh, 0);
            break;
          case OP_SELLLIMIT:
            SellLimit = true;
          
            if ((OrderTakeProfit() != PriceLow) || (OrderOpenPrice() != PriceHigh))
              OrderModify(OrderTicket(), PriceHigh, OrderStopLoss(), PriceLow, 0);
        }

    if (!BuyLimit)
      OrderSend(_Symbol, OP_BUYLIMIT, 1, PriceLow, 0, 0, PriceHigh);
  
    if (!SellLimit)
      OrderSend(_Symbol, OP_SELLLIMIT, 1, PriceHigh, 0, 0, PriceLow);
  }
}


Оптимизация.

Скорость оптимизации в режиме по пипсам и реальным тикам.

optimization finished, total passes 6
optimization done in 9 minutes 12 seconds
shortest pass 0:01:30.359, longest pass 0:01:33.652, average pass 0:01:32.059
local 6 tasks (100%), remote 0 tasks (0%), cloud 0 tasks (0%)


После расскомментирования исходника.

optimization finished, total passes 6
optimization done in 1 minutes 54 seconds
shortest pass 0:00:18.341, longest pass 0:00:21.834, average pass 0:00:19.104
local 6 tasks (100%), remote 0 tasks (0%), cloud 0 tasks (0%)


Получили бесплатное ускорение оптимизации в пять раз.


Одиночный проход.

Без Virtual.

23366361 ticks, 213919 bars generated. Environment synchronized in 0:00:00.073. Test passed in 0:04:31.191 (including ticks preprocessing 0:00:02.984).


Вместе с Virtual.

23366361 ticks, 213919 bars generated. Environment synchronized in 0:00:00.070. Test passed in 0:00:22.723 (including ticks preprocessing 0:00:03.047).


Бесплатное ускорение в 12 раз. Бесплатное - сделки совершаются в Тестере, графики строятся, таблицы заполняются и т.д.


ЗЫ На практике использование такого метода чаще всего дает ускорение на 10-20%. Это до пяти часов в сутки.

 
Грусть просто, что полезные ветки чистят. Вначале много по установке было.
 
fxsaber:
Исчезла вся ветка с обсуждением, что располагалась здесь.

Да, и сама тема пересоздалась. У меня исчезла из Избранного (

 
Andrey Khatimlianskii:

Да, и сама тема пересоздалась. У меня исчезла из Избранного (

Факт, спасибо, только заметил.(

 
Andrey Khatimlianskii:

Да, и сама тема пересоздалась. У меня исчезла из Избранного (

К сожалению, нулевая вероятность восстановления. Там было очень много примеров и идей, к которым сам возвращался время от времени. Здесь была своего рода выжимка: база знаний и умений по библе.

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

 

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

Но все это, если косяк со стороны сайта, а не пользователя. А тут странная ситуация вырисовывается...

Пока надежда только на интернет-архив.

 
Stanislav Korotky:

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

Пока надежда только на интернет-архив.

Кстати да, вебархив глянуть надо, если живой еще, не все конечно, точки сохранения у них не часто.

 
Stanislav Korotky:

Пока надежда только на интернет-архив.

Не в теме. Если кто выложит - будет хорошо.