Aprendizaje automático en el trading: teoría, práctica, operaciones y más - página 985

 

tirar su refinamiento con paradas de 50 pips irreales.

Es tu primer día detrás del probador

los desarrolladores son maquinadores, por el amor de Dios.

 
SanSanych Fomenko:

¡Estoy harto de que exijas los resultados!

¿Qué has mostrado? ¿Unas curvas de origen desconocido con una higa en el bolsillo en forma de periodo de aprendizaje al final del gráfico? ¡Ni siquiera un probador!

Y aquí está el resultado, 360% en 14 meses, con un gráfico de balance decente, con un montón de características, con texto de origen.


Y a MO tiene un resultado directo.

Este es un EA refinado de aquí

La entrada es una variable aleatoria uniformemente distribuida de la que obtenemos la compra/venta. Ya ves, al azar.

Pero en los ejercicios de los modelos de esta rama el error es inferior al 50% todo el tiempo, y la relación entre rentable y no rentable en el caso base es de 47/53.

Entonces, ¿por qué necesitas el modus operandi? ¿Y por qué necesitas el MO en tu versión? Al fin y al cabo, ¡no aportas ninguna prueba de que el modelo no esté reentrenado! Y si no se trata del problema de la reconversión, aquí hay un EA gratuito dePetr Voytenko para todos los interesados.

parece un gran asesor (!!!!)

enlace roto

 
SanSanych Fomenko:

Este es un Asesor Experto revisado de aquí

La entrada es una variable aleatoria uniformemente distribuida de la que obtenemos la compra/venta. Ya sabes, al azar.

También pasé por esto, hace como 10 años. Ya escribí sobre ello en alguna parte. Elaboré los acuerdos óptimos de cierre de soporte e hice mis entradas al azar para no molestar. La idea era minimizar las pérdidas utilizando métodos de cierre de pistas. Para mi sorpresa, mi beneficio era de un 10-15% al mes.

 
Renat Akhtyamov:

parece que un asesor genial fue(!!!!)

El enlace está roto.

¿Por qué está roto? A mí me funciona.

Este es el texto

//+------------------------------------------------------------------+
//|                                                     RandomEA.mq4 |
//|                                                             Pete |
//|                                                  www.izimoney.ru |
//+------------------------------------------------------------------+
#property copyright "Pete"
#property link      "https://www.mql5.com/ru/users/m0rg4n"
#property version   "1.00"
#property strict
//--- input parameters

input double   lot_persent=0;   //lot in percent of balance, 0=minimal lot
input double   clot=0;          //constant lot, 0=off
input int      com=5;           //your commission on 1 lot
input int      tp_and_sl=100;   //takeprofit and stoploss
input double   k=2;             //martingale multiplier
input int      maxspread=25;    //maximal spread
input int      friday_stop=12;  //friday OFF hour
input int      monday_start=1;  //monday ON hour
input int      slip=10;         //slippage


double minlot,maxlot,lot,acc=0,lot2;
bool b;
int h;
//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
  {
//---
   Comment("");
   MathSrand(GetTickCount());   //turn on randomize function
//---
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
//---
 Comment("");
  }
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
  {
//---

   minlot=MarketInfo(Symbol(),MODE_MINLOT);                        //
   maxlot=MarketInfo(Symbol(),MODE_MAXLOT);                        //
   lot=NormalizeDouble(lot_persent*AccountBalance()/100000,2);     // calculating lots
   if(lot<minlot){lot=minlot;}                                     //
   if(lot>maxlot){lot=maxlot;}                                     //
   lot=NormalizeDouble(lot,2);                                     //

   if (clot!=0){lot=clot;}
   
   
   
   //if there are no orders open trade according signal
   if(OrdersTotal()==0)
     {
     
      if (MarketInfo(Symbol(),MODE_SPREAD)>maxspread){Comment("Spread too big");return;}
     
     
      if (
          ((DayOfWeek()==5)&&(Hour()>friday_stop))
          ||
          (DayOfWeek()==6)
          ||
          (DayOfWeek()==0)
          ||
          ((DayOfWeek()==1)&&(Hour()<monday_start))
         ){Comment("Not trading time");return;} //hollydays off    
 
      if(signal()==1){if(AccountBalance()<acc){lot=lot2*k;}buy_(lot);return;}

      if(signal()==-1){if(AccountBalance()<acc){lot=lot2*k;}sell_(lot);return;}
     }

   
   // if there is one order we are turn take profit and stop loss on
   if(OrdersTotal()==1)
     {
      acc=AccountBalance();
      b=OrderSelect(0,SELECT_BY_POS);
      lot2=OrderLots();
      if((OrderStopLoss()==0)&&(OrderType()==OP_BUY)) 
      {b=OrderModify(OrderTicket(),OrderOpenPrice(),OrderOpenPrice()-tp_and_sl*Point,OrderOpenPrice()+tp_and_sl*Point+2*com*Point,0,Blue);}
      if((OrderStopLoss()==0)&&(OrderType()==OP_SELL))
      {b=OrderModify(OrderTicket(),OrderOpenPrice(),OrderOpenPrice()+tp_and_sl*Point,OrderOpenPrice()-tp_and_sl*Point-2*com*Point,0,Red);}

     }
   
   
   // if there are more than one trade is on then close all positions (becouse some error with it)
   if(OrdersTotal()>1){CloseAll();}


  }
//+------------------------------------------------------------------+

int signal() //return random signal , buy or sell
  {
   int r0;
   double r1;

   r0=MathRand();
   r1=MathMod(r0,2);
   if(r1!=0){return(-1);}
   if(r1==0){return(1);}
   return(0);
  }
//*****************************************************************

//+------------------------------------------------------------------+
void buy_(double lot998) // opening buy function
  {
   lot=NormalizeDouble(lot998,2);
//   sl_=NormalizeDouble(Ask-sl*Point,Digits);
//   tp_=NormalizeDouble(Ask+tp*Point,Digits);
   b=OrderSend(Symbol(),OP_BUY,lot998,Ask,slip,0,0,"",0,0,Blue);
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
void sell_(double lot999) //opening sell function
  {
   lot=NormalizeDouble(lot999,2);
//   sl_=NormalizeDouble(Bid+sl*Point,Digits);
//   tp_=NormalizeDouble(Bid-tp*Point,Digits);
   b=OrderSend(Symbol(),OP_SELL,lot999,Bid,slip,0,0,"",0,0,Red);
  }
//*************************************************************

void CloseAll() // close all trades function
  {
   int i,tik;
   i=OrdersTotal();
   while(i!=0)
     {
      b=OrderSelect(i-1,SELECT_BY_POS);
      if(b==true)
        {
         tik=OrderTicket();
         if(OrderType()==OP_BUY) {b=OrderClose(OrderTicket(),OrderLots(),Ask,slip,clrNONE);}
         if(OrderType()==OP_SELL){b=OrderClose(OrderTicket(),OrderLots(),Bid,slip,clrNONE);}
         if((OrderType()==OP_BUYSTOP) || (OrderType()==OP_SELLSTOP) || (OrderType()==OP_BUYLIMIT) || (OrderType()==OP_SELLLIMIT)){b=OrderDelete(tik,clrNONE);}
        }
      i=i-1;
     }
  }

//+------------------------------------------------------------------+
 
Yuriy Asaulenko:

Yo también pasé por eso, en el año 10. Ya escribí sobre ello en alguna parte. He calculado la operación óptima de cierre del soporte, y he hecho las entradas al azar, para no darle demasiadas vueltas. La idea era minimizar las pérdidas utilizando métodos de cierre de la pista. Para mi sorpresa, he obtenido un beneficio de alrededor del 10-15% al mes.

Cuando lo vi, me emocioné: es la prueba más clara de que debemos tratar con la capacidad de predicción de los predictores, y necesariamente con la prueba de que esta capacidad de predicción no cambia mucho.

Es entonces cuando el probador nos demostrará este hecho.

¿Y qué es lo que prueba el probador para el asesor aleatorio? Sólo demuestra que hay una selección de orden aleatorio en la entrada. ¿Prueba el probador de este EA el comportamiento futuro del mismo? No es así, la pregunta no estaba planteada así.

 
SanSanych Fomenko:

¿Por qué está roto? A mí me funciona.

Este es el texto.

cool

esta es una versión automatizada de la negociación manual

 

Y aquí hay otra opción debido a otras tomas/paradas

La pérdida, que se ha ido acumulando durante mucho tiempo en pequeñas porciones, ha llegado de golpe.


Cambiando los parámetros puedes conseguir todo tipo de looks diferentes.

 
SanSanych Fomenko:

Cuando lo vi, me encantó: la prueba más clara de que debemos ocuparnos de la capacidad de predicción de los predictores, y necesariamente de la prueba de que esta capacidad de predicción no cambia mucho.

Es entonces cuando el probador nos demostrará este hecho.

¿Y qué es lo que prueba el probador para el asesor aleatorio? Sólo demuestra que hay una selección de orden aleatorio en la entrada. ¿Prueba el probador de este EA el comportamiento futuro del mismo? No es así, la pregunta nunca se planteó de esa manera.

Me parece que es sólo una prueba de la aleatoriedad del mercado, al menos, de la aleatoriedad para un observador.

De hecho, trabajo como si fuera un proceso aleatorio. Sí, se pierde una parte de las tendencias, pero se compensa con un mayor número de operaciones, porque el ruido es más de alta frecuencia.

Hmm. Al final, el grueso del beneficio lo obtiene el soporte comercial. Bueno, y probablemente el MM, que nunca entendí).

 
Yuriy Asaulenko:

Creo que esto es sólo una prueba de la aleatoriedad del mercado, al menos para el observador.

De hecho, trabajo como si fuera un proceso aleatorio. Sí, se pierde una parte de las tendencias, pero se compensa con más operaciones, porque el ruido es más de alta frecuencia.

Sí, tiene un lugar.

La teoría de los juegos comienza con el siguiente problema.

En una habitación completamente oscura y con los ojos vendados, el rey intenta atrapar a su paje, que también tiene los ojos vendados.

Pregunta nº 1: ¿Qué estrategia debe seguir el rey para atrapar al niño, que se esconde en las esquinas, en el mínimo número de pasos?

Pregunta 2: ¿Qué estrategia debe utilizar el esbirro para evitar al rey, que se esconde en las esquinas, durante un número mínimo de pasos?


La respuesta es la misma: una variable aleatoria uniformemente distribuida.

Detrás de un gráfico de balance muy positivo está esta misma posición de que el incremento de la cotización es un valor uniformemente distribuido

 
SanSanych Fomenko:

Sí, así es.

Detrás del gráfico de balance muy positivo se encuentra esta misma posición de que la cotización incremental es una cantidad uniformemente distribuida

Pues bien, aquí estamos con el proceso de Wiener, o proceso similar a Wiener. ¿Qué hay que predecir? El mejor predictor es el propio valor.

Pero podemos predecir una distribución normal (o casi normal). No en el sentido literal, por supuesto, como el rastro de una vela.