L'apprentissage automatique dans la négociation : théorie, modèles, pratique et algo-trading - page 985

 

gaspiller votre raffinement avec des stops de 50 pips irréalistes.

C'est votre premier jour derrière le testeur

les développeurs sont des machinistes, bordel !

 
SanSanych Fomenko:

J'en ai juste marre que tu exiges des résultats !

Qu'avez-vous montré ? Quelques courbes d'origine inconnue avec une figue dans la poche sous la forme d'une période d'apprentissage à la fin du graphique ? Même pas un testeur !

Et voici le résultat, 360% en 14 mois, avec un graphique d'équilibre décent, avec un tas de caractéristiques, avec le texte source.


Et le mode opératoire a un résultat direct.

Il s'agit d'un EA raffiné d'ici

L'entrée est une variable aléatoire uniformément distribuée à partir de laquelle nous obtenons l'achat/la vente. Vous voyez - au hasard.

Mais dans les exercices modèles de cette branche, l'erreur est toujours inférieure à 50 %, et le rapport entre rentable et non rentable dans le cas de base est de 47/53.

Alors pourquoi avez-vous besoin du MO ? Et pourquoi avez-vous besoin du MO dans votre version ? Après tout, vous ne fournissez aucune preuve que le modèle n'est pas réentraîné ! Et si ce n'est pas pour régler le problème de la reconversion, voici une EA gratuite dePetr Voytenko pour tous ceux qui viennent.

Il semble être un excellent conseiller ( !!!!)

lien brisé

 
SanSanych Fomenko:

Il s'agit d'un conseiller expert révisé d'ici

L'entrée est une variable aléatoire uniformément distribuée à partir de laquelle nous obtenons l'achat/la vente. Vous savez - au hasard.

Je suis passé par là, aussi, il y a 10 ans. J'ai écrit à ce sujet quelque part. J'ai élaboré des accords de fermeture de soutien optimaux et rendu mes entrées aléatoires afin de ne pas être dérangé. L'idée était de minimiser les pertes en utilisant des méthodes de clôture de suivi. À ma grande surprise, mon bénéfice était d'environ 10 à 15 % par mois.

 
Renat Akhtyamov:

on dirait que le conseiller était cool( !!!!)

Le lien est rompu.

Pourquoi est-il cassé ? Ça marche pour moi.

Voici le texte

//+------------------------------------------------------------------+
//|                                                     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:

Je suis passé par là aussi, en l'an 10. J'ai écrit à ce sujet quelque part. J'ai élaboré la transaction optimale de soutien et de fermeture, et j'ai rendu les entrées aléatoires, afin de ne pas trop y penser. L'idée était de minimiser les pertes en utilisant des méthodes de clôture de suivi. A ma grande surprise, j'ai obtenu un bénéfice d'environ 10-15% par mois.

Quand je l'ai vu, j'ai été ravi - c'est la preuve la plus claire que nous devrions nous occuper de la capacité prédictive des prédicteurs, et nécessairement de la preuve que cette capacité prédictive ne change pas beaucoup.

C'est alors que le testeur nous prouvera ce fait.

Et que prouve le testeur pour le conseiller aléatoire ? Cela prouve seulement qu'il y a une sélection aléatoire des ordres à l'entrée. Le testeur de cette EA prouve-t-il le comportement futur de l'EA ? Ce n'est pas le cas, la question n'a pas été posée comme ça.

 
SanSanych Fomenko:

Pourquoi est-il cassé ? Ça marche pour moi.

Voici le texte.

cool

voici une version automatisée du trading manuel

 

Et voici une autre option en raison d'autres prises/arrêts

La perte, qui s'est accumulée pendant longtemps par petites portions, est là d'un seul coup.


En modifiant les paramètres, vous pouvez obtenir toutes sortes de looks différents.

 
SanSanych Fomenko:

Quand je l'ai vu, j'ai été ravi - la preuve la plus claire que nous devrions traiter la capacité prédictive des prédicteurs, et nécessairement la preuve que cette capacité prédictive ne change pas beaucoup.

C'est alors que le testeur nous prouvera ce fait.

Et que prouve le testeur pour le conseiller aléatoire ? Cela prouve seulement qu'il y a une sélection aléatoire des ordres à l'entrée. Le testeur de cette EA prouve-t-il le comportement futur de l'EA ? Ce n'est pas le cas, la question n'a jamais été posée de cette manière.

Il me semble que c'est juste une preuve du caractère aléatoire du marché, du moins, du caractère aléatoire pour un observateur.

En fait, je travaille comme si c'était un processus aléatoire. Oui, une partie des tendances est perdue, mais elle est compensée par un plus grand nombre de transactions, car le bruit est plus haute fréquence.

Hmm. En fin de compte, la majeure partie des bénéfices est réalisée par le support commercial. Eh bien, et probablement le MM, que je n'ai jamais compris).

 
Yuriy Asaulenko:

Je pense que c'est juste une preuve du caractère aléatoire du marché, du moins pour l'observateur.

En fait, je travaille comme un processus aléatoire. Oui, une partie des tendances est perdue, mais elle est compensée par davantage de transactions, car le bruit est plus haute fréquence.

Oui, elle a sa place.

La théorie des jeux commence par le problème suivant.

Dans une pièce complètement sombre, les yeux bandés, le roi essaie d'attraper son page, qui a lui aussi les yeux bandés.

Question n° 1 : Quelle stratégie le roi doit-il suivre pour attraper le garçon, qui se cache dans les coins, en un nombre minimum de pas ?

Question 2 : Quelle stratégie le sbire doit-il utiliser pour éviter le roi, qui se cache dans les coins, pendant un nombre minimum de pas ?


La réponse est la même : une variable aléatoire uniformément distribuée.

Derrière un graphique de bilan très positif se cache cette même position selon laquelle l'incrément de cotation est une valeur uniformément répartie.

 
SanSanych Fomenko:

Oui, c'est vrai.

Derrière le graphique du bilan très positif se cache justement cette position selon laquelle la cotation incrémentale est une quantité uniformément distribuée

Eh bien, nous voici avec le processus de Wiener, ou processus de type Wiener. Qu'y a-t-il à prévoir ? Le meilleur prédicteur est la valeur elle-même.

Mais nous pouvons prévoir une distribution normale (ou quasi-normale). Pas au sens littéral, bien sûr, comme la trace d'une bougie.

Raison: