EA N7S_AO_772012 - page 9

 
Ma version avec chalut est optimisée normalement...
 

Accroché à un chalut "booby trawl". Les résultats et les sets de la semaine dernière ne sont pas mauvais. Le tirage au sort diminue. Les bénéfices sont en hausse.

Faites des tests.

Correction du code

void trl(){
      total= OrdersTotal(); spread = MarketInfo(Symbol(), MODE_SPREAD);
  for(  i = total - 1; i >= 0; i--) 
     { OrderSelect( i, SELECT_BY_POS, MODE_TRADES); MN=OrderMagicNumber();
       if(OrderSymbol() == Symbol() && MN>= 772012000 && MN<=772012199) 
         {  if ( MN==772012055) { sl = slx; tp = tpx* slx; mn= mnx1;}
            if ( MN==772012155) { sl = sly; tp = tpy* sly; mn= mny1;}
            if ( MN==772012011) { sl = slX; tp = tpX* slX; mn= mnX1;}
            if ( MN==772012111) { sl = slY; tp = tpY* slY; mn= mnY1;}
//Правим SL в зависимости от прибыли (от растояния в пипсах. Первый шаг = sl. ВТорой sl + sl/2 третий sl+ sl/2 + sl / 3 и т.п. 
         
           int prevticket = OrderTicket();if(OrderType() == OP_BUY) 
             {if(DayOfWeek( ) == 5 && Hour( ) >=22)  { OrderClose( prevticket,OrderLots( ) ,Bid,3,Red);} 
              if(Bid > (OrderStopLoss() + ( sl * 2  + spread) * Point)) 
                 { if( BTS()< 0) { OrderClose( prevticket,OrderLots( ) ,Bid,3,Red);} 
                   else  
                   TrailingUdavka(OrderTicket(), sl, sl, sl+ sl/2, sl/2, sl/4);}}
                   //Старый вариант
                   //{ OrderModify(OrderTicket(), OrderOpenPrice(), Bid - sl * Point,0, 0, Blue);}}} 
           else {if(DayOfWeek( ) == 5 && Hour( ) >=22) { OrderClose( prevticket,OrderLots( ) ,Ask,3,Blue);} 
                  if(Ask < (OrderStopLoss() - ( sl * 2 + spread) * Point)) 
                     {if( BTS() > 0) 
                           { OrderClose( prevticket,OrderLots( ) ,Ask,3,Blue);} 
                     else TrailingUdavka(OrderTicket(), sl, sl, sl+ sl/2, sl/2, sl/4);}}
                     //{ OrderModify(OrderTicket(), OrderOpenPrice(), Ask + sl * Point, 0, 0, Blue);}}}
          return(0);}}}
 

Le boa constrictor lui-même

---------------

void TrailingUdavka(int ticket,int trl_dist_1,int level_1,int trl_dist_2,int level_2,int trl_dist_3)
   { 
   double newstop = 0; // новый стоплосс
   double trldist; // расстояние трейлинга (в зависимости от "пройденного" может = trl_dist_1, trl_dist_2 или trl_dist_3)

   // проверяем переданные значения
   if (( trl_dist_1<MarketInfo(Symbol(),MODE_STOPLEVEL)) || ( trl_dist_2<MarketInfo(Symbol(),MODE_STOPLEVEL)) || ( trl_dist_3<MarketInfo(Symbol(),MODE_STOPLEVEL)) || 
   ( level_1<= trl_dist_1) || ( level_2<= trl_dist_1) || ( level_2<= level_1) || ( ticket==0) || (!OrderSelect( ticket, SELECT_BY_TICKET, MODE_TRADES)))
      {
      Print("Трейлинг функцией TrailingUdavka() невозможен из-за некорректности значений переданных ей аргументов.");
      return(0);
      } 
   
   // если длинная позиция (OP_BUY)
   if (OrderType()==OP_BUY)
      {
      // если профит <=trl_dist_1, то trldist=trl_dist_1, если профит>trl_dist_1 && профит<=level_1*Point ...
      if ((Bid-OrderOpenPrice())<= level_1*Point) trldist = trl_dist_1;
      if (((Bid-OrderOpenPrice())> level_1*Point) && ((Bid-OrderOpenPrice())<= level_2*Point)) trldist = trl_dist_2;
      if ((Bid-OrderOpenPrice())> level_2*Point) trldist = trl_dist_3; 
            
      // если стоплосс = 0 или меньше курса открытия, то если тек.цена (Bid) больше/равна дистанции курс_открытия+расст.трейлинга
      if ((OrderStopLoss()==0) || (OrderStopLoss()<OrderOpenPrice()))
         {
         if (Bid>(OrderOpenPrice() + trldist*Point))
         newstop = Bid -  trldist*Point;
         }

      // иначе: если текущая цена (Bid) больше/равна дистанции текущий_стоплосс+расстояние трейлинга, 
      else
         {
         if (Bid>(OrderStopLoss() + trldist*Point))
         newstop = Bid -  trldist*Point;
         }
      
      // модифицируем стоплосс
      if ( newstop>OrderStopLoss())   
      OrderModify( ticket,OrderOpenPrice(), newstop,OrderTakeProfit(),OrderExpiration());
      }
      
   // если короткая позиция (OP_SELL)
   if (OrderType()==OP_SELL)
      { 
      // если профит <=trl_dist_1, то trldist=trl_dist_1, если профит>trl_dist_1 && профит<=level_1*Point ...
      if ((OrderOpenPrice()-(Ask + MarketInfo(Symbol(),MODE_SPREAD)*Point))<= level_1*Point) trldist = trl_dist_1;
      if (((OrderOpenPrice()-(Ask + MarketInfo(Symbol(),MODE_SPREAD)*Point))> level_1*Point) && ((OrderOpenPrice()-(Ask + MarketInfo(Symbol(),MODE_SPREAD)*Point))<= level_2*Point)) trldist = trl_dist_2;
      if ((OrderOpenPrice()-(Ask + MarketInfo(Symbol(),MODE_SPREAD)*Point))> level_2*Point) trldist = trl_dist_3; 
      
      // если стоплосс = 0 или меньше курса открытия, то если тек.цена (Ask) больше/равна дистанции курс_открытия+расст.трейлинга
      if ((OrderStopLoss()==0) || (OrderStopLoss()>OrderOpenPrice()))
         {
         if (Ask<(OrderOpenPrice() - ( trldist + MarketInfo(Symbol(),MODE_SPREAD))*Point))
         newstop = Ask + trldist*Point;
         }

      // иначе: если текущая цена (Bid) больше/равна дистанции текущий_стоплосс+расстояние трейлинга, 
      else
         {
         if (Ask<(OrderStopLoss() - ( trldist + MarketInfo(Symbol(),MODE_SPREAD))*Point))
         newstop = Ask +  trldist*Point;
         }
               
       // модифицируем стоплосс
      if ( newstop>0)
         {
         if ((OrderStopLoss()==0) || (OrderStopLoss()>OrderOpenPrice()))
         OrderModify( ticket,OrderOpenPrice(), newstop,OrderTakeProfit(),OrderExpiration());
         else
            {
            if ( newstop<OrderStopLoss())   
            OrderModify( ticket,OrderOpenPrice(), newstop,OrderTakeProfit(),OrderExpiration());
            }
         }
      }      
   }
 
Casper писал(а) >>

Ce n'est pas une mauvaise idée, si seulement ça marchait :-)

Casper ,veuillez corriger ceci

TrailingUdavka(OrderTicket(), sl, sl, sl+sl/2, sl/2, sl/4);}}

Au moins comme ceci ou à votre discrétion

TrailingUdavka(OrderTicket(), sl, sl+sl/2, sl/2, 2*sl, sl/4);}}


J'ai déjà dit que je préfère laisser les profits augmenter et réduire les pertes, donc je traite le trailing avec prudence.
IMHO le trailing n'est pas la meilleure façon, mais quelqu'un l'aimera probablement

.

Je le ferai par fractales tout d'abord quand j'arriverai à trailing, et en plus juste fermer hors du marché.
Je respecte aussi une autre sagesse, si le prix ne va pas dans la bonne direction pendant longtemps, il ira définitivement contre vous !
Bonne chance à tous et profits !!!
P.S.
Casper faites plus attention, souvenez-vous de "l'effet d'assemblage" et de "dummies

".
 
Dans les deux derniers jours de cette semaine, je n'ai pas pu tester complètement la démo (le cinquième signe d'Alpari est "à blâmer")))) A minuit ce soir, j'ai installé des logiciels corrigés et mis à jour pour neuf instruments.
Selon les tests, ces deux jours ont été meilleurs que la semaine dernière. Equity $750.
Leaders Euro +$354 Cable +$257 Frank (ce qui est surprenant) +$176 Baisse yen -$90 eur-yen -$162 et peu canadien -$15 Le reste : kiwi +$89, livre +$77 et EURGBP +$59
 
SHOOTER777 >> :

Ce n'est pas une mauvaise idée, si seulement ça marchait :-)

Casper, veuillez corriger ceci

TrailingUdavka(OrderTicket(), sl, sl, sl+sl/2, sl/2, sl/4);}}

Au moins comme ceci ou à ma discrétion

TrailingUdavka(OrderTicket(), sl, sl+sl/2, sl/2, 2*sl, sl/4);}}


J'ai déjà dit que je préfère laisser les profits augmenter et réduire les pertes, donc je traite le trailing avec prudence.
IMHO le trailing n'est pas la meilleure façon, mais quelqu'un l'aimera probablement

.

Je le ferai avec les fractales tout d'abord quand j'arriverai au trailing, et en plus je fermerai juste le marché.
Je respecte aussi une autre sagesse, si le prix ne va pas dans la bonne direction pendant longtemps, il ira définitivement contre vous !
Bonne chance et profitez !!
P.S.
Casper faites plus attention, souvenez-vous de "l'effet d'assemblage" et des "dummies

".

Plus le prix évolue, plus la possibilité d'un repli est élevée. Et il n'y a aucun profit à perdre. J'ai réussi à courir sur l'euro et la livre au set de la semaine dernière. Les deux paires ont un profit plus élevé et un drawdown plus faible.

Quant au défi, je suis d'accord. Mon erreur. Je dois aussi changer la condition. Sinon, le pas est trop grand. D'une certaine manière, c'est probablement ça.

            if(Bid > (OrderStopLoss() + ( sl * 2  + spread) * Point) || true) 
                 { if( BTS()< 0) { OrderClose( prevticket,OrderLots( ) ,Bid,3,Red);} 
                   else  
                   TrailingUdavka(OrderTicket(), sl, sl, sl+ sl/2, sl/2, sl/4);}}
                   //{ OrderModify(OrderTicket(), OrderOpenPrice(), Bid - sl * Point,0, 0, Blue);}}} 
           else {if(DayOfWeek( ) == 5 && Hour( ) >=22) { OrderClose( prevticket,OrderLots( ) ,Ask,3,Blue);} 
                  if(Ask < (OrderStopLoss() - ( sl * 2 + spread) * Point) || true) 
                     {if( BTS() > 0) 
                           { OrderClose( prevticket,OrderLots( ) ,Ask,3,Blue);} 
                     else 
                     TrailingUdavka(OrderTicket(), sl, sl, sl+ sl/2, sl/2, sl/4);}} 
                     //{ OrderModify(OrderTicket(), OrderOpenPrice(), Ask + sl * Point, 0, 0, Blue);}}}

Trop paresseux pour refaire le bloc maintenant. Détruit les unités if appropriées en spécifiant || true. Et encore, il serait facile de le récupérer.

Quant à "l'effet de construction" et la bouilloire. J'avais l'habitude de programmer assez sérieusement en delphi C++ et C#. Mais c'était probablement il y a 5-6 ans. Donc, je peux me tromper aussi, la compétence est malheureusement perdue. C'est pourquoi je présente le code.

Encore une fois, le forum des développeurs...

 

D'après les rapports, il semble que l'outil FONCTIONNE entre les mains expertes de l'auteur.

Il est peut-être temps de passer au réel ou au moins au micro-réel ?

 
goldtrader >> :

D'après les rapports, il semble que l'outil FONCTIONNE entre les mains expertes de l'auteur.

Il est peut-être temps de passer au réel ou au moins au micro-réel ?

J'ai un cent sur le vrai...

 
Casper >> :

J'ai un centime sur mon vrai...

Puis-je vous joindre le staat ?

 
goldtrader писал(а) >>

D'après les rapports, il semble que l'outil FONCTIONNE entre les mains expertes de l'auteur.

Peut-être qu'il est temps d'être réel ou au moins micro réel ?

Prenez votre temps ! !!

Un EA ne fonctionnera pas correctement sur le réel si le courtier ne fait pas la sieste.

Ou du moins, vous devriez être en mesure de surveiller constamment le terminal.

Le conseiller expert ne sait pas comment travailler avec les requêtes, etc.

Il ne sait pas comment vérifier l'état et diviser les flux d'échanges si vous mettez beaucoup d'instruments.

Il lui manque encore un drapeau - une interdiction pendant les communiqués de presse et les fortes fluctuations spéculatives,

et l'interdiction de négocier dans la même direction sur la même barre.

Il n'y a pas de protection contre les défaillances et l'exactitude des paramètres d'entrée n'est pas vérifiée.

J'ai eu un couple de paramètres d'entrée réinitialisés sur ma démo.

Qu'est-ce que c'est - une blague de courtier - mon terminal est d'Alpari, ou juste des pépins.

Il y a aussi quelque chose qui manque.