EA N7S_AO_772012 - Seite 9

 
Meine Version mit Schleppnetz ist normal optimiert...
 

Mit einem Schleppnetz "Tölpel" an den Haken genommen. Die Ergebnisse und Sätze der letzten Woche sind nicht schlecht. Die Inanspruchnahme ist rückläufig. Der Gewinn wächst.

Führen Sie einige Tests durch.

Code-Korrektur

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

Die Boa Constrictor selbst

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

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

Keine schlechte Idee, wenn sie nur funktionieren würde :-)

Casper ,bitte korrigiere dies

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

Zumindest so oder nach eigenem Ermessen

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


Ich habe bereits gesagt, dass ich es vorziehe, Gewinne wachsen zu lassen und Verluste zu begrenzen, daher behandle ich Trailing mit Vorsicht.
IMHO ist Trailing nicht der beste Weg, aber jemandem wird es wahrscheinlich gefallen

.

Ich werde es mit Fraktalen machen, vor allem, wenn ich zum Trailing komme, und zusätzlich einfach aus dem Markt aussteigen.
Ich respektiere auch eine weitere Weisheit, wenn der Preis nicht in die richtige Richtung für eine lange Zeit geht, wird es auf jeden Fall gegen Sie gehen!
Viel Glück an alle und Gewinne!!!
P.S.
Casper passen Sie mehr auf, erinnern Sie sich über "Montage-Effekt" und über "Dummies"

 
In den letzten beiden Tagen dieser Woche war ich nicht in der Lage, vollständig auf der Demo zu testen (das fünfte Zeichen von Alpari ist "schuld"))) Heute um Mitternacht habe ich korrigierte und aktualisierte Software für neun Instrumente installiert.
Den Tests zufolge waren diese beiden Tage besser als die letzte Woche. Eigenkapital $750.
Leaders Euro +$354 Cable +$257 Frank (was überraschend ist) +$176 Downside yen -$90 eur-yen -$162 und little Canadian -$15 Der Rest: kiwi +$89, pound +$77 und EURGBP +$59
 
SHOOTER777 >> :

Keine schlechte Idee, wenn sie nur funktionieren würde :-)

Casper, bitte korrigiere dies

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

Zumindest so oder nach meinem Ermessen

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


Ich habe bereits gesagt, dass ich es vorziehe, Gewinne wachsen zu lassen und Verluste zu begrenzen, daher behandle ich Trailing mit Vorsicht.
IMHO ist Trailing nicht der beste Weg, aber jemandem wird es wahrscheinlich gefallen

.

Ich werde es vor allem mit Fraktalen machen, wenn ich zum Trailing komme, und dazu einfach den Markt schließen.
Ich respektiere auch eine weitere Weisheit, wenn der Kurs lange Zeit nicht in die richtige Richtung geht, wird er definitiv gegen dich gehen!
Viel Glück und Gewinn!!!
P.S.
Casper pass besser auf, erinnere dich an den "build effect" und die "dummies

"

Je weiter sich der Kurs bewegt, desto höher ist die Wahrscheinlichkeit eines Rückschlags. Und es gibt keinen Gewinn zu verlieren. Ich habe es geschafft, bei der letzten Woche auf Euro und Pfund zu laufen. Beide Paare haben einen höheren Gewinn und einen geringeren Drawdown.

Was die Herausforderung anbelangt, so stimme ich zu. Mein Fehler. Ich muss auch die Bedingung ändern. Sonst ist der Schritt zu groß. Irgendwie ist das wohl so.

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

Ich bin zu faul, den Block jetzt neu zu machen. Löscht die entsprechenden if-Einheiten durch Angabe von || true. Andererseits wäre es aber auch leicht, sie zurückzubekommen.

Was den "Build-Effekt" und den Kessel betrifft. Ich habe früher sehr ernsthaft in Delphi, C++ und C# programmiert. Aber das ist wahrscheinlich 5-6 Jahre her. So kann ich auch Mist bauen, die Fähigkeit geht leider verloren. Deshalb lege ich den Code fest.

Nochmal, Entwicklerforum...

 

Aus den Berichten geht hervor, dass das Tool in den fähigen Händen des Autors FUNKTIONIERT.

Vielleicht ist es an der Zeit für echte oder zumindest mikroreal?

 
goldtrader >> :

Aus den Berichten geht hervor, dass das Tool in den fähigen Händen des Autors FUNKTIONIERT.

Vielleicht ist es an der Zeit für echte oder zumindest mikroreal?

Ich habe einen Cent auf die echte...

 
Casper >> :

Ich habe einen Cent auf meine echte...

Darf ich Ihnen den Staat anhängen?

 
goldtrader писал(а) >>

Aus den Berichten geht hervor, dass das Tool in den fähigen Händen des Autors FUNKTIONIERT.

Vielleicht ist es an der Zeit für eine echte, oder zumindest eine Mikro-Realität?

Nehmen Sie sich Zeit!!!

Ein EA wird in der Realität nicht richtig funktionieren, wenn der Broker nicht schläft.

Zumindest sollten Sie in der Lage sein, das Terminal ständig zu überwachen.

Der Expert Advisor weiß nicht, wie er mit Requotes usw. arbeiten soll.

Es weiß nicht, wie es den Status überprüfen und die Handelsströme aufteilen soll, wenn Sie viele Instrumente anlegen.

Es fehlt eine weitere Kennzeichnung - ein Verbot während der Veröffentlichung von Nachrichten und starker spekulativer Schwankungen,

und das Verbot, in der gleichen Richtung auf dem gleichen Balken zu handeln.

Es gibt keine Fehlersicherung und die Korrektheit der Eingabeparameter wird nicht überprüft.

Ich habe einige Eingabeparameter in meiner Demo zurückgesetzt.

Was ist das - ein Broker-Witz - mein Terminal ist von Alpari, oder nur Pannen.

Es fehlt auch etwas.