Scripts: ThirdPartyTicks - página 2

 
Maxim Dmitrievsky:

Sólo pensaba en voz alta, lo siento, puedo borrar mensajes anteriores, ¿debería? )

Yo no lucho por la pureza de las filas, dejarlo vivir. Ya que tienes algo en la caja de herramientas, escribe.

Para los MO-extraños, lo primero que haría sería una comparativa de resultados con otras fuentes.

Y para los más realistas - Tester.


ZЫ Sugerir a los "camaradas en la tienda".

Машинное обучение в трейдинге: теория и практика (торговля и не только)
Машинное обучение в трейдинге: теория и практика (торговля и не только)
  • 2016.05.26
  • www.mql5.com
Добрый день всем, Знаю, что есть на форуме энтузиасты machine learning и статистики...
 
fxsaber:

No lucho por la pureza de las filas, déjalo vivir. Si tienes algo sobre la caja de herramientas, escríbeme.

Para MO-extraños, lo primero que haría es características comparativas con otras fuentes.

Y para los más realistas - Tester.


ZY Sugerir a los "compañeros de armas".

poco probable que sea percibido por nadie más que yo, hasta que los muestro en mis dedos, pero escribí :)

 

Foro sobre trading, sistemas automatizados de trading y prueba de estrategias de trading

Bibliotecas: Symbol

fxsaber, 2018.04.07 22:37

Al mismo tiempo una pequeña prueba de esta implementación también (solo bar spread contado de forma diferente)

Se comparan dos modos: "Todos los ticks" y "OHLC M1".


Todos los ticks

final balance 10006150.00 EUR
TESTER4_Censored,M1: 6576734 ticks, 60353 bars generated. Test passed in 0:00:04.587 (including ticks preprocessing 0:00:00.343).
394 Mb memory used including 27 Mb of history data, 128 Mb of tick data


OHLC M1

final balance 10006119.00 EUR
TESTER_Censored,M1: 240366 ticks, 60353 bars generated. Test passed in 0:00:00.359 (including ticks preprocessing 0:00:00.031).
306 Mb memory used including 27 Mb of history data, 64 Mb of tick data


La calidad del backtest es la misma, el rendimiento de la segunda variante en una sola ejecución es 12 veces superior.

 
Исторически сложилось, что для MetaTrader 4 пользуются популярностью сторонние приложения, позволяющие получать тиковую историю из различных источников. Как правило, ее используют в Тестере Стратегий как полигон для проверки советников, а также для исследований (машинное обучение и т.д.). Некоторые источники котировок в обсуждениях стали почти стандартом при поиске "грааля".
Un simple ejemplo que demuestra que tanta gente sufre por tonterías cuando busca un TC que funcione. En particular, los aficionados al aprendizaje automático.

Vamos a ejecutar la Optimización EA (por ticks reales) en la primera semana de abril en el modo "Todos los símbolos seleccionados en la ventana Market Watch".

#include <fxsaber\ThirdPartyTicks\Data.mqh>

input double inCommissionProcent = 0.002;
sinput bool inLog = true;
sinput int inOnTester = 0;

#define  RESERVE 100000

// Beneficio potencial en valores relativos y absolutos (pips)
class MAXPROFIT : public DATA<double>
{
private:    
  bool FlagUP;
  double MinMax;

  const double MarkupAsk;  
  const double MarkupBid;

  void SetMarkup( MqlTick &Tick ) const
  {
    Tick.bid *= this.MarkupBid;
    Tick.ask *= this.MarkupAsk;
    
    return;
  }
  
  static void MathLog( MqlTick &Tick )
  {
    Tick.bid = ::MathLog(Tick.bid);
    Tick.ask = ::MathLog(Tick.ask);
    
    return;
  }
  
  double MathRelative( const double Value ) const
  {
    return(this.Relative ? ::MathExp(Value) : Value);
  }
  
public:  
  const bool Relative;
  
  MAXPROFIT( const double Commission = 0, const bool inRelative = false ) : FlagUP(true), MinMax(-DBL_MAX), Relative(inRelative),
                                                                            MarkupBid(1 - Commission), MarkupAsk(1 + Commission)
  {
  }
  
  void AddTick( MqlTick &Tick )
  {
    this.SetMarkup(Tick);
    
    if (this.Relative)
      MAXPROFIT::MathLog(Tick);
    
    if (this.FlagUP)
    {
      if (Tick.bid > this.MinMax)
        this.MinMax = Tick.bid;
      else if (Tick.ask < this.MinMax)
      {
        this.Add(this.MinMax, RESERVE);
        
        this.MinMax = Tick.ask;
        this.FlagUP = false;
      }
    }
    else
    {
      if (Tick.ask < this.MinMax)
        this.MinMax = Tick.ask;
      else if (Tick.bid > this.MinMax)
      {
        this.Add(this.MinMax, RESERVE);
        
        this.MinMax = Tick.bid;
        this.FlagUP = true;
      }
    }
    
    return;
  }
  
  double GetProfit() const
  {
    double Res = 0;
    
    const uint Size = this.GetAmount();
    
    for (uint i = 1; i < Size; i++)
      Res += this.MathRelative(::MathAbs(this.Data[i] - this.Data[i - 1]));
      
    if (Size)
      Res += this.MathRelative(::MathAbs(this.MinMax - this.Data[Size - 1]));
      
    return(Res);
  }
};

MAXPROFIT MaxProfit(inCommissionProcent / 100, inLog);

void OnTick()
{  
  MqlTick Tick;
  
  if (SymbolInfoTick(_Symbol, Tick))
    MaxProfit.AddTick(Tick);
}

double OnTester()
{  
  switch (inOnTester)
  {
  case 0:
    return(MaxProfit.Relative ? MaxProfit.GetProfit() : (int)(MaxProfit.GetProfit() / _Point + 0.1));
  case 1:
    return(MaxProfit.GetAmount());
  case 2:
    return((MaxProfit.Relative ? MaxProfit.GetProfit() : (int)(MaxProfit.GetProfit() / _Point + 0.1)) / MaxProfit.GetAmount());
  }
  
  return(0);
}


Resultado

El valor numérico es el beneficio máximo posible en el historial (incluida la comisión).

En la captura de pantalla, EURUSD está resaltado, el cual está tomado de MQ-Demo, los otros símbolos son ThirdPartyTicks. Podemos ver que EURUSD tiene 8878.74, mientras que su homónimo de terceros tiene 15134.94. Esto significa que cualquier TS en EURUSD mostrará menos beneficios que en su homónimo.

Resulta que cualquiera que realice el mismo MO en MQ-Demo EURUSD se perderá toda una capa de posibles TS rentables. Y subestimará en gran medida el símbolo FOREX.


En la parte superior es GBPAUD. Su nivel muestra que es muy fácil escribir un pipsarist, que mostrará el espacio en OOS en Tester con ejecución perfecta.

No es la demo la que romperá la ilusión del grial, porque la demo también mostrará un resultado perfecto. Pero, por supuesto, el real.


En primer lugar, la comisión interferirá, porque la expectativa de un piper es baja ~ 8 pips (* miles de operaciones por semana). Pero lo que es aún peor, distorsionará el resultado de la ejecución.

En caso de realización a través de los mercados, obtendremos una gran cantidad de deslizamientos negativos, que junto con la comisión se superpondrán a la expectativa mat. Y se producirá una sangría.

En el caso de la realización a través de órdenes limitadas, obtendremos la ausencia de deslizamientos negativos (a veces habrá positivos), pero nos arruinaremos por re-jackets muy frecuentes de órdenes, cuando simplemente no se ejecutarán. Por lo tanto, un gran número de operaciones rentables que habrían estado en la misma demo serán simplemente ignoradas. Y eso conducirá a una fuga de nuevo. Si esto no fuera forex, sino una bolsa de valores, la situación sería sin duda mucho mejor con la ejecución.


La conclusión de este sencillo ejemplo probablemente todavía se puede hacer. Antes de escribir un TS, elegir las mejores condiciones de negociación (cotizaciones) no sólo por la fuente de cotizaciones (corredor), sino también por el símbolo. Este EA puede ayudar en esto con bastante claridad. Usando esta metodología puedes comprobar un broker en MT5 y luego otro. E inmediatamente entender dónde y por qué símbolo será más rentable trabajar cualquier TS.

 

Nadie lo hace, porque esas estrategias de tick son fácilmente aniquiladas por los brokers

Está claro que nadie prueba sobre las cotizaciones de los metaquotes demo, sino sobre las cotizaciones del broker donde van a operar.

Y lo que tiene que ver el MO con esto todavía no está claro :)

 
Maxim Dmitrievsky:

Nadie lo hace, porque estas estrategias de tick son fácilmente eliminadas por los brokers.

No creo que hayamos hablado aquí de TSs basadas en tick. La baja expectativa no es pipsing.

Está claro que nadie testea sobre las cotizaciones de metaquotes demo, sino sobre las cotizaciones del broker donde van a operar.

MQ-Demo fue por ejemplo. Cuál es el argumento a la hora de elegir un dts para que la búsqueda de TS vaya sobre él?

Y que tiene que ver el MO con esto todavía no está claro :)

Hay que tener en cuenta que primero se toma un objeto razonable y de investigación, y no un AUDCAD de una casa de bolsa al azar.

 
fxsaber:

No creo que aquí se haya hablado de TSs de tick. Bajo mat. expectativa no es pipsing.

MQ-Demo lo era por ejemplo. ¿Cuál es el argumento al elegir una casa de bolsa que la búsqueda de TS se lleva a cabo en él?

Hay que tener en cuenta que primero se toma un objeto razonable y de investigación, no un AUDCAD de una casa de bolsa al azar.

Normalmente las estrategias se toman a precios de apertura, los ticks no les afectan en absoluto. Entonces no importa que broker

 
Maxim Dmitrievsky:

Por lo general, las estrategias sólo se toman a precios de apertura, los ticks no influyen en absoluto. Entonces no importa que broker

También puede tomar H1 o mejor D1 para ser completamente independiente. En general, tipos extraños.

 
fxsaber:

Y también puedes coger el H1 o, mejor aún, el D1 para independizarte por completo. En general, tipos raros.

Bueno, en 1-5 minutos está bien :) usted puede hacer su propia TFs, entonces usted necesita buenas garrapatas, sí.

por cierto, de acuerdo a su archivo - que tienen LP Admiral Markets, tal vez tenga sentido para tomar las cotizaciones directamente de ellos, debe ser el mismo.

 
Maxim Dmitrievsky:

Bueno, a los 1-5 minutos es normal).

¿Y dónde está el límite, donde antes es "normal" y después es "no normal"?