EA N7S_AO_772012 - pagina 9

 
La mia versione con trawl è ottimizzata normalmente...
 

Agganciato a una rete a strascico "booby trawl". I risultati e i set della scorsa settimana non sono male. Il drawdown sta diminuendo. Il profitto sta crescendo.

Fate qualche test.

Correzione del codice

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);}}}
 

Il boa constrictor stesso

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

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 писал(а) >>

Non è una cattiva idea, se solo funzionasse :-)

Casper ,per favore correggi questo

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

Almeno così o a vostra discrezione

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


Ho già detto che preferisco far crescere i profitti e tagliare le perdite, quindi tratto il trailing con cautela.
IMHO il trailing non è il modo migliore, ma a qualcuno probabilmente piacerà

.

Lo farò con i frattali prima di tutto quando arriverò al trailing, e in più chiuderò semplicemente fuori dal mercato.
Rispetto anche un'altra saggezza, se il prezzo non va nella direzione giusta per un lungo periodo, ti andrà sicuramente contro!
Buona fortuna a tutti e profitti!!!
P.S.
Casper presta più attenzione, ricordati dell'"effetto assemblea" e dei "dummies"

 
Negli ultimi due giorni di questa settimana non sono riuscito a testare completamente la demo (il quinto segno di Alpari è "da biasimare")) A mezzanotte di stasera ho installato il software corretto e aggiornato per nove strumenti.
Secondo i test questi due giorni sono stati migliori della settimana scorsa. Equity $750.
Leader Euro +$354 Cavo +$257 Frank (ciò che è sorprendente) +$176 Downside yen -$90 eur-yen -$162 e poco canadese -$15 Il resto: kiwi +$89, sterlina +$77 e EURGBP +$59
 
SHOOTER777 >> :

Non è una cattiva idea, se solo funzionasse :-)

Casper, per favore correggi questo

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

Almeno così o a mia discrezione

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


Ho già detto che preferisco far crescere i profitti e tagliare le perdite, quindi tratto il trailing con cautela.
IMHO il trailing non è il modo migliore, ma probabilmente a qualcuno piacerà

.

Lo farò con i frattali prima di tutto quando arriverò al trailing, e in più chiuderò semplicemente il mercato.
Rispetto anche un'altra saggezza, se il prezzo non va nella direzione giusta per molto tempo, ti andrà sicuramente contro!
Buona fortuna e profitto!!!
P.S.
Casper presta più attenzione, ricorda l'"effetto build" e i "dummies

"

Più il prezzo si muove, più alta è la possibilità di un pullback. E non c'è nessun profitto da perdere. Sono riuscito a correre su euro e sterline al set della settimana scorsa. Entrambe le coppie hanno un profitto più alto e un drawdown più basso.

Per quanto riguarda la chiamata - sono d'accordo. Errore mio. Devo anche cambiare la condizione. Altrimenti fa un passo troppo grande. In qualche modo è probabile che sia così.

            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);}}}

Troppo pigro per rifare il blocco ora. Ha ucciso le unità if appropriate specificando || true. Poi di nuovo, sarebbe facile recuperarlo.

Per quanto riguarda l'"effetto build" e il bollitore. Una volta programmavo abbastanza seriamente in delphi C++ e C#. Ma questo era probabilmente 5-6 anni fa. Quindi, posso sbagliare anche io, l'abilità è purtroppo persa. È per questo che io stendo il codice.

Di nuovo, forum di sviluppatori...

 

Dai rapporti, sembra che lo strumento funzioni nelle mani capaci dell'autore.

Forse è il momento del reale o almeno del micro-reale?

 
goldtrader >> :

Dai rapporti, sembra che lo strumento funzioni nelle mani capaci dell'autore.

Forse è il momento del reale o almeno del micro-reale?

Ho un centesimo sul vero...

 
Casper >> :

Ho un centesimo sul mio vero...

Posso allegarvi lo staat?

 
goldtrader писал(а) >>

Dai rapporti, sembra che lo strumento funzioni nelle mani capaci dell'autore.

Forse è il momento del reale o almeno del micro reale?

Prendetevi il vostro tempo!!!

Un EA non funzionerà correttamente sul reale se il broker non sonnecchia.

O almeno si dovrebbe essere in grado di monitorare costantemente il terminale.

L'Expert Advisor non sa come lavorare con le requotes, ecc.

Non sa come controllare lo stato e dividere i flussi commerciali se si mettono molti strumenti.

Manca un'altra bandiera - un divieto durante i comunicati stampa e le forti fluttuazioni speculative,

e il divieto di scambiare nella stessa direzione sulla stessa barra.

Non c'è protezione contro i guasti e la correttezza dei parametri di input non è controllata.

Ho avuto un paio di parametri di ingresso resettati sulla mia demo.

Che cosa è questo - uno scherzo del broker - il mio terminale è da Alpari, o solo glitches.

Manca anche qualcosa.