EA N7S_AO_772012 - página 9

 
Mi versión con arrastre está optimizada normalmente...
 

Enganchado a una red de arrastre "booby trawl". Los resultados y conjuntos de la semana pasada no están mal. La reducción de la deuda está disminuyendo. Los beneficios crecen.

Haz algunas pruebas.

Corrección del 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);}}}
 

La propia boa constrictor

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

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

No es una mala idea, ojalá funcionara :-)

Casper ,por favor corrige esto

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

Al

menos así o a su discreción

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


Ya he dicho que prefiero dejar que los beneficios crezcan y cortar las pérdidas, así que trato el trailing con precaución.
En mi opinión el trailing no es la mejor manera, pero a alguien probablemente le gustará

.

Lo haré por fractales en primer lugar cuando llegue al trailing, y además simplemente cerraré fuera del mercado.
También respeto una sabiduría más, si el precio no va en la dirección correcta durante mucho tiempo, definitivamente irá en tu contra!
¡Suerte a todos y beneficios!!!
P.D.
Casper presta más atención, recuerda lo del "efecto ensamblaje" y lo de los "dummies"

 
En los dos últimos días de esta semana no he podido hacer pruebas completas en la demo (el quinto signo de Alpari tiene la "culpa")) Esta medianoche he instalado software corregido y actualizado para nueve instrumentos.
Según las pruebas, estos dos días fueron mejores que la semana pasada. Equidad $750.
Líderes Euro +$354 Cable +$257 Frank (lo que es sorprendente) +$176 Bajada yen -$90 eur-yen -$162 y poco canadiense -$15 El resto: kiwi +$89, libra +$77 y EURGBP +$59
 
SHOOTER777 >> :

No es una mala idea, ojalá funcionara :-)

Casper, por favor corrige esto

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

Al menos así o a mi discreción

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


Ya he dicho que prefiero dejar que los beneficios crezcan y cortar las pérdidas, así que trato el trailing con precaución.
En mi opinión el trailing no es la mejor manera, pero a alguien probablemente le gustará

.

Lo haré con fractales en primer lugar cuando llegue al trailing, y además sólo cerraré el mercado.
También respeto una sabiduría más, si el precio no va en la dirección correcta durante mucho tiempo, definitivamente irá en tu contra!
¡¡¡Buena suerte y ganancias!!!
P.S.
Casper presta más atención, recuerda el "efecto build" y los "dummies

"

Cuanto más se mueva el precio, mayor será la posibilidad de un retroceso. Y no hay beneficios que perder. Me las arreglé para correr en euros y libras en el set de la semana pasada. Ambos pares tienen un mayor beneficio y un menor drawdown.

En cuanto al reto, estoy de acuerdo. Mi error. También tengo que cambiar la condición. De lo contrario, es un paso demasiado grande. De alguna manera es probable que sea eso.

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

Demasiado perezoso para rehacer el bloque ahora. Mató las unidades if apropiadas especificando || true. Por otra parte, sería fácil recuperarlo.

En cuanto al "efecto de acumulación" y la tetera. Solía programar bastante en serio en delphi C++ y C#. Pero eso fue probablemente hace 5-6 años. Así que también puedo meter la pata, la habilidad se pierde lamentablemente. Por eso pongo el código.

De nuevo, foro de desarrolladores...

 

Según los informes, parece que la herramienta funciona en las manos del autor.

¿Quizás sea la hora de la realidad o, al menos, de la microrrealidad?

 
goldtrader >> :

Según los informes, parece que la herramienta funciona en las manos del autor.

¿Quizás sea la hora de la realidad o, al menos, de la microrrealidad?

Tengo un centavo en el real...

 
Casper >> :

Tengo un centavo en mi...

¿Puedo adjuntarle el staat?

 
goldtrader писал(а) >>

Según los informes, parece que la herramienta funciona en las manos del autor.

¿Quizás sea el momento de un real, o al menos de un micro-real?

¡¡¡Tómate tu tiempo!!!

Un EA no funcionará correctamente en el real si el broker no está durmiendo la siesta.

O, al menos, deberías poder controlar constantemente el terminal.

El Asesor Experto no sabe trabajar con recotizaciones, etc.

No sabe cómo comprobar el estado y dividir los flujos comerciales si se ponen muchos instrumentos.

Le falta una bandera más: la prohibición durante los comunicados de prensa y las fuertes fluctuaciones especulativas,

y la prohibición de operar en la misma dirección en la misma barra.

No hay protección contra fallos y no se comprueba la corrección de los parámetros de entrada.

He tenido un par de parámetros de entrada que se han restablecido en mi demo.

¿Qué es, una broma del broker, mi terminal es de Alpari, o simplemente fallos?

También falta algo.