Aprendizado de máquina no trading: teoria, prática, negociação e não só - página 985

 

jogue fora o seu refinamento com paradas de 50 pips irrealistas.

É o seu primeiro dia atrás do testador.

os desenvolvedores são maquinistas, por amor de Deus!

 
SanSanych Fomenko:

Estou farto de te exigir os resultados!

O que você mostrou? Algumas curvas de origem desconhecida com um figo no bolso sob a forma de um período de aprendizagem no final do gráfico? Nem sequer um testador!

E aqui está o resultado, 360% em 14 meses, com um gráfico de equilíbrio decente, com um conjunto de características, com texto fonte.


E ao MO tem um resultado directo.

Esta é uma refinada EA daqui.

O input é uma variável aleatória uniformemente distribuída da qual obtemos compra/venda. Está a ver - ao acaso.

Mas nos exercícios de modelo neste ramo o erro é sempre inferior a 50%, e a relação entre rentável e não rentável no caso base é de 47/53.

Então porque precisas do modus operandi? E por que você precisa do MO na sua versão? Afinal de contas, você não fornece nenhuma prova de que o modelo não é recondicionado! E se NÃO for para lidar com o problema da reciclagem, aqui está uma EA gratuita dePetr Voytenko para todos os participantes.

Parece ser um grande conselheiro (!!!!)

link quebrado

 
SanSanych Fomenko:

Este é um Expert Advisor revisado a partir daqui

O input é uma variável aleatória uniformemente distribuída da qual obtemos compra/venda. Você sabe - aleatório.

Também já passei por isto, há uns 10 anos. Eu escrevi sobre isso em algum lugar. Fiz acordos de apoio ideais e fiz minhas entradas aleatórias para não incomodar. A idéia era minimizar as perdas usando métodos de rastreamento-fechamento. Para minha surpresa, o meu lucro era cerca de 10-15% por mês.

 
Renat Akhtyamov:

parece que um conselheiro legal foi(!!!!)

A ligação está quebrada.

Porque é que está partido? Para mim funciona.

Aqui está o 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:

Eu também passei por isto, no ano 10. Eu escrevi sobre isso em algum lugar. Eu trabalhei a transação de fechamento de suporte ideal, e fiz as entradas aleatórias, de modo a não estar pensando demais. A idéia era minimizar as perdas usando métodos de rastreamento-fechamento. Para minha surpresa, eu tenho o lucro de cerca de 10-15% por mês.

Quando o vi, fiquei emocionado - é a prova mais clara de que devemos lidar com a capacidade de previsão dos preditores, e necessariamente com a prova de que essa capacidade de previsão não muda muito.

É quando o testador nos vai provar este facto.

E o que é que o testador prova para o Random Advisor? Isso só prova que há uma seleção aleatória de ordem na entrada. O testador para esta EA prova o comportamento futuro da EA? Não é assim, a pergunta não foi colocada assim.

 
SanSanych Fomenko:

Porque é que está partido? Para mim funciona.

Aqui está o texto.

legal

aqui está uma versão automatizada de negociação manual

 

E aqui está outra opção por causa de outros take/stops

A perda, que vem se acumulando há muito tempo em pequenas porções, está aqui tudo de uma só vez.


Ao alterar os parâmetros você pode obter todo tipo de visual diferente.

 
SanSanych Fomenko:

Quando vi isso, fiquei encantado - a prova mais clara de que devemos lidar com a capacidade de previsão dos preditores, e necessariamente com a prova de que essa capacidade de previsão não muda muito.

É quando o testador nos vai provar este facto.

E o que é que o testador prova para o Random Advisor? Isso só prova que há uma seleção aleatória de ordem na entrada. O testador para esta EA prova o comportamento futuro da EA? Não, a questão nunca foi colocada de tal forma.

Parece-me ser apenas uma prova de aleatoriedade de mercado, pelo menos, aleatória para um observador.

Na verdade, eu trabalho como se fosse um processo aleatório. Sim, alguma parte das tendências é perdida, mas é compensada por um maior número de negócios, porque o ruído é mais freqüente.

Hmm. No final, a maior parte do lucro é feita pelo apoio ao comércio. Bem, e provavelmente o MM, que eu nunca entendi).

 
Yuriy Asaulenko:

Acho que isto é apenas uma prova da aleatoriedade do mercado, pelo menos para o observador.

Na verdade, eu trabalho como um processo aleatório. Sim, alguma parte das tendências é perdida, mas é compensada por mais negócios, porque o ruído é mais freqüente.

Sim, tem um lugar.

A teoria do jogo começa com o seguinte problema.

Numa sala completamente escura, com os olhos vendados, o rei está tentando pegar sua página, que também está vendada.

Pergunta nº 1: Que estratégia deve seguir o rei para apanhar o rapaz, que está escondido nos cantos, no número mínimo de passos?

Pergunta 2: Que estratégia deve usar o capanga para evitar o rei, que está escondido nos cantos, para um número mínimo de passos?


A resposta é a mesma: uma variável aleatória uniformemente distribuída.

Atrás de um gráfico de balanço muito positivo está esta mesma posição que o incremento da cotação é um valor uniformemente distribuído

 
SanSanych Fomenko:

Sim, é verdade.

Atrás do gráfico de balanço muito positivo encontra-se esta mesma posição de que a cotação incremental é uma quantidade uniformemente distribuída

Bem, aqui estamos nós com o processo do Wiener, ou processo do tipo Wiener. O que há para prever? O melhor prognosticador é o próprio valor.

Mas podemos prever uma distribuição normal (ou uma distribuição quase normal). Não no sentido literal, é claro, como um traço de uma vela.

Razão: