EA N7S_AO_772012 - página 9

 
Minha versão com rede de arrasto é otimizada normalmente.
 

Enganchado em uma rede de arrasto "booby trawl". Os resultados e os conjuntos da semana passada não são ruins. O drawdown está diminuindo. O lucro está crescendo.

Faça alguns testes.

Correção do código

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

A própria jibóia

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

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

Não é uma má idéia, se ao menos funcionasse :-)

Casper ,por favor, corrija isto

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

Pelo menos assim ou a seu critério

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


Eu já disse que prefiro deixar crescer os lucros e cortar as perdas, por isso trato o trailing com cautela.
O trailing IMHO não é o melhor caminho, mas alguém provavelmente vai gostar

.

Fá-lo-ei por fractal, antes de mais nada, quando chegar ao fim e, além disso, apenas fechar fora do mercado.
Também respeito mais uma sabedoria, se o preço não for na direção certa por muito tempo, definitivamente irá contra você!
Boa sorte a todos e lucros!!!
P.S.
Casper preste mais atenção, lembre-se sobre o "efeito de montagem" e sobre "manequins"

.
 
Nos últimos dois dias desta semana eu não pude testar completamente na demonstração (o quinto sinal de Alpari é "culpado")) À meia-noite desta noite instalei um software corrigido e atualizado para nove instrumentos.
De acordo com os testes, esses dois dias foram melhores do que na semana passada. Patrimônio líquido $750.
Líderes Euro +$354 Cabo +$257 Frank (o que é surpreendente) +$176 Downside yen -$90 eur-yen -$162 e pouco canadense -$15 O resto: kiwi +$89, libra +$77 e EURGBP +$59
 
SHOOTER777 >> :

Não é uma má idéia, se ao menos funcionasse :-)

Casper, por favor, corrija isto

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

Pelo menos assim ou a meu critério

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


Eu já disse que prefiro deixar os lucros crescerem e cortar as perdas, por isso trato o trailing com cautela.
O trailing IMHO não é o melhor caminho, mas alguém provavelmente vai gostar

.

Faço-o com fractais em primeiro lugar quando chegar ao fim e, além disso, apenas fechar o mercado.
Também respeito mais uma sabedoria, se o preço não for na direção certa por muito tempo, definitivamente irá contra você!
Boa sorte e lucro!!!
P.S.
Casper preste mais atenção, lembre-se do "efeito construção" e dos "manequins

Quanto mais longe o preço se move, maior a possibilidade de um recuo. E não há lucro a ser perdido. Consegui correr com o euro e a libra no conjunto da semana passada. Ambos os pares têm maior lucro e menor drawdown.

Quanto ao desafio - concordo. Meu erro. Eu também preciso mudar a condição. De outra forma, dá um passo muito grande. De alguma forma, provavelmente é isso.

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

Muito preguiçoso para refazer o bloco agora. Matou as unidades if-units apropriadas, especificando ||| verdadeiro. Então, novamente, seria fácil recuperá-lo.

Quanto ao "efeito de construção" e a chaleira. Eu costumava programar com bastante seriedade em delphi C++ e C#. Mas isso foi provavelmente há 5-6 anos. Por isso, também posso fazer asneira, infelizmente a habilidade está perdida. É por isso que eu estabeleço o código.

Novamente, fórum de desenvolvedores...

 

A partir dos relatórios, parece que a ferramenta está trabalhando nas mãos capazes do autor.

Talvez seja hora de real ou pelo menos micro-real?

 
goldtrader >> :

A partir dos relatórios, parece que a ferramenta está trabalhando nas mãos capazes do autor.

Talvez seja hora de real ou pelo menos micro-real?

Eu tenho um centavo no real...

 
Casper >> :

Eu tenho um centavo no meu verdadeiro...

Posso anexar-lhe o staat?

 
goldtrader писал(а) >>

A partir dos relatórios, parece que a ferramenta está trabalhando nas mãos capazes do autor.

Talvez seja a hora de um real, ou pelo menos um micro real?

Leve seu tempo!!!

Um EA não funcionará corretamente no real se o corretor não estiver dormindo a sesta.

Ou pelo menos você deve ser capaz de monitorar constantemente o terminal.

O Consultor Especialista não sabe como trabalhar com solicitações, etc.

Ele não sabe como verificar o status e dividir os fluxos comerciais se você colocar muitos instrumentos.

Falta-lhe mais uma bandeira - uma proibição durante os noticiários e as fortes flutuações especulativas,

e proibição de negociar na mesma direção no mesmo bar.

Não há proteção contra falhas e a exatidão dos parâmetros de entrada não é verificada.

Tive alguns parâmetros de entrada redefinidos na minha demonstração.

O que é isso - uma piada de corretor - meu terminal é da Alpari, ou apenas falhas.

Também está faltando algo.