Diskussion zum Artikel "Verwendung von Limit-Orders anstelle von Take-Profit, ohne den ursprünglichen Code des EA zu ändern." - Seite 5

 
Das ist alles, was ich jemals wollte, vielen Dank. Ich liebe dich.
 

Hallo liebe

ich versuche, die Art und Weise zu finden, die spezielle Take Profit für meine Experten definiert, dass ich begann, es zu schreiben. Ihr Text war nützlich für mich, aber ich konnte nicht korrigieren, so, wenn es möglich ist, um Sie, bitte führen Sie mich. meine TP-Ebene ist: wenn die zum Beispiel Buy in Chart und es gehen in der richtigen Art und Weise und Gewinn, TP-Wert bewegen, um maximale Gewinn-Punkt, so dass, wenn der Trend wiederum ändern die gerade nach unten Weg, TP-Wert in 70 Prozent des maximalen Gewinns platziert. unten cod ist der Code, den ich schreibe. bitte lassen Sie mich wissen, m Fehler und helfen Sie mir, sie zu korrigieren.

double BuyPipsProfit,SellPipsProfit,BuyProfitLevel,SellProfitLevel;
double TP_Buy=0;
double TP_Sell=0;

for(int i=OrdersTotal()-1;i>=0;i--)
{
if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
{
BuyPipsProfit= Ask-(double)OrderOpenPrice() ;
SellPipsProfit= (double)OrderOpenPrice()-Bid;
BuyProfitLevel= BuyPipsProfit*.7;
SellProfitLevel= SellPipsProfit*.7;
TP_Buy = (50*Point)+ ((OrderOpenPrice()+ BuyProfitLevel)*Point);
TP_Sell= (50*Point)+ ((OrderOpenPrice()+ SellProfitLevel)*Point);
}
}

 

Hallo,

es funktioniert nicht.

LimitTakeProfit.mqh Fehler:

unresolved static variable 'CLimitTakeProfit::i_Magic' LimitTakeProfit.mqh 29 43
unresolved static variable 'CLimitTakeProfit::b_OnlyOneSymbol' LimitTakeProfit.mqh 32 52
unresolved static variable 'CLimitTakeProfit::i_TakeProfit' LimitTakeProfit.mqh 507 14
unresolved static variable 'CLimitTakeProfit::d_TakeProfit' LimitTakeProfit.mqh 512 17
unresolved static variable 'CLimitTakeProfit::c_Symbol' LimitTakeProfit.mqh 160 9

Vielen Dank!

Dateien:
 

@MetaQuotes, danke für diesen Code!

Ich habe einen Fehler in dieser Funktion gefunden und gebe meine bescheidene Lösung:

bool CLimitTakeProfit::SetTakeProfits(ulong position_ticket, double new_tp=0)


Wenn wir 2 TP haben und der erste geschlossen wurde, wird der zweite hier FALSCH geschlossen:

if(CheckLimitOrder(tp_request))
  {
   if(tp_request.volume>=0)
     {
      closed+=tp_request.volume;
      closed_perc=closed/position_volume*100;
     }
   else
     {
      fix_closed_per-=tp_request.volume/(position_volume-tp_request.volume)*100;
     }
   continue;
  }


Warum? Weil bei der Suche nach dem ersten TP in dieser Funktion:

CheckOrderInHistory(PositionGetInteger(POSITION_IDENTIFIER),request.comment, request.type, request.volume);

Wir ändern die ausgewählte Position, also in der Schleife:

   for(int i=0;i<total;i++)
     {

      tp_request.comment="TP"+IntegerToString(i)+"_"+IntegerToString(position_ticket);
      
      if(i_TakeProfit.At(i)<tp_int && d_TakeProfit.At(i)>0)

Wir verwenden die falsche Position, um den zweiten TP hier zu bewerten:

switch((ENUM_POSITION_TYPE)PositionGetInteger(POSITION_TYPE))


Das führt dazu, dass der zweite TP geschlossen wird! Meine Lösung ist:

for(int i=0;i<total;i++)
   {
      /****** NEUE ZEILE **************/
      PositionSelectByTicket(position_ticket);
      /****** NEUE ZEILE **************/

      tp_request.comment="TP"+IntegerToString(i)+"_"+IntegerToString(position_ticket);
      
      if(i_TakeProfit.At(i)<tp_int && d_TakeProfit.At(i)>0)


Nochmals vielen Dank!

 
Roco Deodato Giaculi #: Hallo, Funktioniert nicht. LimitTakeProfit.mqh Fehler: Vielen Dank.

Haben Sie den ursprünglichen Code verwendet oder haben Sie den Code zu Ihrem Berater hinzugefügt?

 

Ich habe es nie geschafft.

 

Guten Tag @Dmitriy Gizlyk, Können Sie mir bei diesem Problem helfen? Ich habe schon viele Dinge ausprobiert, aber ich komme nicht aus diesem Fehler heraus. Wenn Sie helfen können, danke ich Ihnen.


 
Können Sie mir bitte helfen? Ich weiß nicht, wie man programmiert usw. Ich wollte nur, dass mein Gewinn als begrenzter Auftrag dargestellt wird (wenn Sie beschreiben könnten, wie Sie Ihre Datei verwenden, wäre ich sehr dankbar).
 
FalconGhost2 : Können Sie mir bitte helfen? Ich weiß nicht, wie man programmiert usw. Ich wollte nur, dass mein Gewinn als Limit-Order dargestellt wird (wenn Sie beschreiben könnten, wie man Ihre Datei verwendet, wäre ich Ihnen sehr dankbar).

Hallo, Sie können diese Datei nicht verwenden, wenn Sie manuell handeln. Sie ist für die Verwendung im EA gedacht.

Mit freundlichen Grüßen, Dmitry.

 
Dmitriy Gizlyk #: Hallo, Sie können diese Datei nicht verwenden, wenn Sie den manuellen Handel nutzen. Sie ist für den EA-Einsatz gedacht. Mit freundlichen Grüßen, Dmitry.

Danke für die Antwort, Dmitriy! Wissen Sie, ob es eine andere Möglichkeit gibt, den manuellen Handel durchzuführen?