Bibliotecas: Virtual - página 2

 
Todo o tópico de discussão que estava aqui desapareceu.
 
hmm, foi limpo por acidente ou os pontos de classificação foram removidos? lamentável, tópico útil.
 

Esqueci-me de uma maneira gratuita de acelerar alguns EAs.

Este EA é um exemplo.

#include <MT4Orders.mqh> // https://www.mql5.com/pt/code/16006
/*
#define VIRTUAL_LIMITS_TP_SLIPPAGE // Limitadores e TPs são executados no primeiro preço de aceitação - slippages positivos
#define VIRTUAL_TESTER_FAST // Isso pode acelerar o Expert Advisor no testador.
#include <fxsaber\Virtual\Virtual.mqh> // https://www.mql5.com/pt/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);
  }
}


Otimização.

Velocidade de otimização no modo por pips e ticks reais.

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%)


Depois de descomentar a fonte.

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%)


Obtivemos uma aceleração gratuita da otimização em cinco vezes.


Passagem única.

Sem o 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).


Com o 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).


Aceleração gratuita de 12 vezes. Gratuita - as negociações são feitas no testador, os gráficos são construídos, as tabelas são preenchidas, etc.


Na prática, o uso desse método geralmente proporciona uma aceleração de 10 a 20%. Isso ocorre até cinco horas por dia.

 
É triste que os tópicos úteis estejam sendo limpos. Havia muita coisa sobre instalação no início.
 
fxsaber:
Todo o tópico de discussão que estava aqui desapareceu.

Sim, e o próprio tópico foi recriado. Ele desapareceu dos meus favoritos (

 
Andrey Khatimlianskii:

Sim, e o próprio tópico foi recriado. Ele desapareceu dos meus favoritos (

Isso é um fato, obrigado, acabei de notar.

 
Andrey Khatimlianskii:

Sim, e o próprio tópico foi recriado. Ele desapareceu dos meus favoritos (

Infelizmente, não há chance de recuperação. Havia muitos exemplos e ideias lá, aos quais eu mesmo retornava de tempos em tempos. Aqui havia uma espécie de aperto: uma base de conhecimento e habilidades sobre a Bíblia.

Tudo isso se foi. Espero que o gatilho para a exclusão não tenha sido a atualização de código de ontem. Você vai se perguntar se deve atualizar outras bíblias agora.

 

É considerado de boa educação ter backups. Considera-se ainda mais de bom tom uma explicação pública dos motivos do que aconteceu.

Mas tudo isso, se a culpa for do site, não do usuário. E aqui surge uma situação estranha...

Por enquanto, esperamos apenas no arquivo da Internet.

 
Stanislav Korotky:

É considerado de boa educação ter backups. É ainda mais educado explicar publicamente os motivos do que aconteceu.

Por enquanto, a única esperança é o arquivo da Internet.

A propósito, sim, o arquivo da Web deve ser examinado, se ainda estiver ativo, mas não todos, é claro, pois eles não têm pontos de salvamento frequentes.

 
Stanislav Korotky:

Por enquanto, a única esperança é o Internet Archive.

Fora do tópico. Se alguém puder publicá-lo, seria bom.