Librerías: Virtual - página 2

 
Todo el hilo de discusión que había aquí ha desaparecido.
 
hmm, limpiado por accidente o como puntos de calificación eliminado? lástima, hilo útil.
 

Me olvidé de una forma gratuita de acelerar algunos EAs.

Este EA es un ejemplo.

#include <MT4Orders.mqh> // https://www.mql5.com/es/code/16006
/*
#define VIRTUAL_LIMITS_TP_SLIPPAGE // Los Limitadores y TPs se ejecutan al primer precio de aceptación - deslizamientos positivos
#define VIRTUAL_TESTER_FAST // Esto puede acelerar el Asesor Experto en el Probador.
#include <fxsaber\Virtual\Virtual.mqh> // https://www.mql5.com/es/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);
  }
}


Optimización.

Velocidad de optimización en el modo por pips y ticks reales.

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


Después de descomentar la fuente.

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


Conseguimos una aceleración gratuita de la optimización por cinco veces.


Single pass.

Sin 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).


Con 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).


Aceleración gratuita en 12 veces. Libre - se realizan operaciones en el Probador, se construyen gráficos, se rellenan tablas, etc.


En la práctica, el uso de este método más a menudo da 10-20% de aceleración. Esto es hasta cinco horas al día.

 
Es triste que se limpien hilos útiles. Había un montón en la instalación en el principio.
 
fxsaber:
Todo el hilo de discusión que había aquí ha desaparecido.

Sí, y el hilo en sí ha sido recreado. Desapareció de mis favoritos (

 
Andrey Khatimlianskii:

Sí, y el propio tema ha sido recreado. Desapareció de mis favoritos (

Es un hecho, gracias, me acabo de dar cuenta.(

 
Andrey Khatimlianskii:

Ah, y el tema en sí ha sido recreado. Desapareció de mis favoritos (

Desgraciadamente, no hay ninguna posibilidad de recuperarlo. Allí había un montón de ejemplos e ideas, a las que yo mismo volvía de vez en cuando. Aquí había una especie de apretón: una base de conocimientos y habilidades sobre la biblia.

Todo ha desaparecido. Espero que el detonante de la eliminación no haya sido la actualización del código de ayer. Te preguntarás si actualizar otras biblias ahora.

 

Se considera de buena educación tener copias de seguridad. Aún más buen tono se considera una explicación pública de las razones de lo sucedido.

Pero todo esto, si la culpa es del sitio, no del usuario. Y aquí se avecina una situación extraña ...

Por ahora, la esperanza sólo en el archivo de Internet.

 
Stanislav Korotky:

Se considera de buena educación tener copias de seguridad. Y aún más de buena educación es explicar públicamente las razones de lo sucedido.

Por ahora, la única esperanza es el archivo de Internet.

Por cierto, sí, el archivo de Internet debe ser mirado, si todavía está vivo, no todos, por supuesto, no tienen puntos de guardado frecuentes.

 
Stanislav Korotky:

Por ahora, la única esperanza es el Archivo de Internet.

Fuera de tema. Si alguien puede publicarlo, estaría bien.