Trailingstop EA funktioniert nicht - Seite 4

 
WHRoeder:
Er denkt, er kann einfach ausschneiden und einfügen und muss nicht lernen zu programmieren. Er kann nicht einmal diesen einfachen Fehler beheben, ohne zu fragen:
'MySelect' - Funktion kann nur im globalen Bereich deklariert werden Trailing_v26.mq4 31 13


Ich weiß die Hilfe von Ihnen und allen anderen sehr zu schätzen. Ich habe in den letzten Tagen alles versucht, um den Code zu kompilieren, und entschuldige mich dafür, dass ich nicht gefragt habe. Die meisten von Ihnen haben vorgeschlagen, dass ich meinen eigenen Code nicht verwende, sondern den Code von jemand anderem, aber ich werde nicht lernen, wenn ich nicht verstehe, was ich falsch mache. Für mich sieht mein Code solide aus. Ich möchte, dass er die Aufträge nach Position zählt und nur diejenigen auswählt, die meine Kriterien erfüllen, und dann diesen spezifischen Handel ändert. Bis jetzt hat mir nach 4 Seiten noch niemand gezeigt, welche Zeile meines Codes fehlerhaft ist. Solange ich nicht sehe und verstehe, was ich falsch mache, wird es mir nicht helfen, durch die Verwendung des Codes eines anderen zu lernen. Mein Ziel ist es jetzt nicht, einen funktionierenden Trailingstop EA zu haben, denn davon gibt es viele, sondern zu lernen, wie man programmiert, damit ich weitermachen kann. Tatsächlich war mein Code fast identisch mit dem Code, den Jimdandy in seinem Youtube-Tutorial über Trailingstops gepostet hat. Da er praktisch identisch mit seinem ist, habe ich den Code fast wortwörtlich kopiert (außer, dass ich manuell handeln will), aber sein Code funktioniert nur manchmal auch.

Ich habe einige Sachen ausgedruckt. Dieser Handel ist fast 300 Punkte über den Punkt, wo ich angegeben, dass die Trailingstop kicks in (die 150 Punkte war):

2016.04.22 00:18:02.301 Trailing_v33 EURAUD,M15: OrderModify = false

2016.04.22 00:18:02.301 Trailing_v33 EURAUD,M15: Ask = 1.45926

2016.04.22 00:18:02.301 Trailing_v33 EURAUD,M15: Selectbypos = 0

2016.04.22 00:18:02.301 Trailing_v33 EURAUD,M15: Selectbyticket = 1

2016.04.22 00:18:02.301 Trailing_v33 EURAUD,M15: OrderTicket = 50381828

2016.04.22 00:18:02.301 Trailing_v33 EURAUD,M15: Ticket = 0

2016.04.22 00:18:02.301 Trailing_v33 EURAUD,M15: OrderSelect = true

2016.04.22 00:18:02.301 Trailing_v33 EURAUD,M15: OrdersTotal = 16

2016.04.22 00:18:02.301 Trailing_v33 EURAUD,M15: OrderSymbol = EURUSD

2016.04.22 00:18:02.301 Trailing_v33 EURAUD,M15: OrderTicket = 50381828

2016.04.22 00:17:58.934 Trailing_v33 EURAUD,M15: OrderModify = false

Dieser EA ist nur auf dem EURAUD platziert. Wie Sie sehen können, gibt es 16 offene Orders auf 9 anderen Charts. Die Ticketnummer Selected für dieses Paar ist völlig falsch und OrderSymbol ist völlig falsch. Beide sind für eine offene EURUSD-Order. Basierend auf dem oben Gesagten wählte meine for-Schleife in diesem Fall die Position 0 aus, während der EURAUD, den sie auswählen sollte, in Position 14 (15-1) war. Warum? Ich habe ihr gesagt, dass sie dies ignorieren soll.

In dem oben erwähnten Video geht Jim tatsächlich auf dieses Problem ein und sagt, dass er den folgenden Code verwendet, um mein Problem zu lösen, allerdings handelt es sich dabei um einen Zähler für das ordnungsgemäße Senden von Aufträgen und nicht um eine Funktion zum Filtern von Aufträgen. Ich habe versucht, ihn als Filter zu verwenden, hatte aber keinen Erfolg.

int OpenOrdersThisPair(string pair){
   int total=0;
      for(int s= OrdersTotal()-1; s>= 0; s--){
         OrderSelect(s,SELECT_BY_POS,MODE_TRADES);
           if(OrderSymbol()==pair) total++;
       }
   return(total);  
}

Mein Code sieht jetzt so aus. Könnte bitte jemand meinen Code kritisieren, damit ich daraus lernen kann, und mir sagen, warum er bei mehreren Charts nicht funktioniert. Ich weiß, dass es nicht so schlimm sein kann, weil es manchmal perfekt funktioniert. Danke

#property strict;
extern string Label_TrailingStart="Pip threshold to activate TrailingStop";
extern int TrailingStart=10;
extern string Label_TrailingStop="Pips trailing behind";
extern int TrailingStop=5;
double stoplevel=(MarketInfo(Symbol(),MODE_STOPLEVEL))/10,Pip=Point*10;
int TS=TrailingStart-TrailingStop;
bool UseTrailingStop=true,UseAutotrading=true;
//+------------------------------------------------------------------+
//|  Expert initialization function                                  |
//+------------------------------------------------------------------+
int init(){
   if(TS<stoplevel){
    MessageBox("Please note: Your inputs cannot be less than the minimum levels required"+
            "\nby your broker. Please reload the EA and either increase the value of the"+
            "\nTrailingStart and/or decrease the value of the TrailingStop so that "+
            "\nTrailingStart-TrailingStop >= "+StringConcatenate(stoplevel)+" pips");
     } 
   return(0);
  }
//+------------------------------------------------------------------+
//|    Expert deinitialization function                              |
//+------------------------------------------------------------------+
int deinit(){
   return(0);
  }
//+------------------------------------------------------------------+
//|   Expert start function                                          |
//+------------------------------------------------------------------+
int start(){
   if(UseTrailingStop) Trailing(); 
   if(UseAutotrading) Autotrading();  
   return(0);
}
//+------------------------------------------------------------------+
void Trailing(){
for(int b=OrdersTotal()-1; b>=0; b--){
      if(OrderSelect(b,SELECT_BY_POS,MODE_TRADES))
         if(OrderSymbol()==Symbol())
            if(OrderType()==OP_BUY)
                  if((Bid-OrderOpenPrice())>(TrailingStart*Pip))
                     if(OrderStopLoss()<Bid-(TrailingStop*Pip))
                        OrderModify(OrderTicket(),OrderOpenPrice(),Bid-(TrailingStop*Pip),OrderTakeProfit(),Blue);
   }     
   for(int s=OrdersTotal()-1; s>=0; s--){
     if(OrderSelect(s,SELECT_BY_POS,MODE_TRADES))
         if(OrderSymbol()==Symbol())
            if(OrderType()==OP_SELL)
                  if((OrderOpenPrice()-Ask)>(TrailingStart*Pip))
                     if(OrderStopLoss()>Ask+(TrailingStop*Pip) || OrderStopLoss()==0)
                        OrderModify(OrderTicket(),OrderOpenPrice(),Ask+(TrailingStop*Pip),OrderTakeProfit(),Red);
   }
}
void Autotrading(){
   if(!IsTradeAllowed()){
      MessageBox("This Expert Advisor requires Auto Trading. Please reload the EA or right click on"+
                 "\nthe chart to bring up the inputs window. Under the common tab check the box to"+
                 "\nallow live trading");
      Sleep(50000);
     }
   if(!IsExpertEnabled()){
      MessageBox("This Expert Advisor requires Auto Trading. Please click the button at the top");
      Sleep(50000);
     } 
}


 
Trader3000:

Bis jetzt hat nach 4 Seiten noch niemand darauf hingewiesen, welche Zeile meines Codes fehlerhaft ist.

Das stimmt nicht! Wir haben Ihre Fehler beschrieben und Lösungen für sie in vielen Varianten und Alternativen angeboten. Doch Sie ignorieren sie und machen es weiterhin auf IHRE Art und Weise. Nicht nur das, Sie haben es jetzt sogar noch schlimmer gemacht, indem Sie weitere Fehler hinzugefügt haben.

Wenn ein Maler malen lernt, dann tut er das, indem er sich zunächst die Techniken anderer aneignet, die diese Technik bereits beherrschen. Erst wenn er mit diesen Techniken vertraut ist, beginnt er, seine EIGENE Art zu malen zu entwickeln.

Hier ist eine kurze Liste mit "meiner Kritik":

  1. Benutzen Sie Ihre geschweiften Klammern ("curly" brackets). Versuchen Sie nicht, an ihnen zu sparen. Fügen Sie sie hinzu, bis Ihr Code voll funktionsfähig und fehlerfrei ist, auch wenn nur eine einzige Zeile in dem Block enthalten ist. Setzen Sie sie ebenfalls in eine separate Zeile. Machen Sie sich keine Sorgen, wenn Sie viel Leerraum haben. Sie können jederzeit zurückgehen und es bereinigen, aber am Anfang sollten Sie sicherstellen, dass alles innerhalb des korrekten Codeblocks steht und dass geschweifte Klammern und Klammern ausgewogen sind. Die Aneinanderreihung mehrerer "if"-Anweisungen ist ein Rezept für eine Katastrophe, da es sehr schwierig ist, Fehler zu beheben, vor allem bei einem pingeligen Compiler wie diesem.
  2. Ihr ursprünglicher Code hatte nur eine Schleife, aus der Sie nun ohne ersichtlichen Grund zwei gemacht haben, außer um Ihren Code noch langsamer zu machen und die Stellen zu wiederholen, die Sie bei Fehlern beheben müssen.
  3. Verwenden Sie Variablen, um Ergebnisse von Ausdrücken zu speichern! Sie wiederholen dieselben Ausdrücke mehrmals, was Ihren Code nicht nur langsamer, sondern auch fehleranfälliger und schwieriger zu lesen und zu korrigieren macht, weil Sie sie an mehreren Stellen ändern müssen.

Es gibt noch mehr Dinge, die ich aufzählen könnte, aber beheben Sie wenigstens diese, ein für alle Mal!

Kodierung ist wie jede andere Sprache auch. Ja, man kann einfach Wörter aneinanderreihen, aber das macht einen nicht zum Dichter. Auch beim Kodieren muss man einen Rhythmus und eine Struktur haben, damit es lesbar und funktional ist.

 
FMIC:

Hier ist eine kurze Liste mit "meiner Kritik":

Ok, vielen Dank dafür. Ich hatte eigentlich Klammern für alle meine "if"-Anweisungen ursprünglich gemäß dem Code, den ich hier früher gepostet habe, aber da dieser Code nicht funktionierte, habe ich verschiedene andere Dinge versucht, darunter auch das Kopieren des Codes, den ich in meinem vorherigen Beitrag eingefügt habe. Wie ich bereits erwähnt habe, ist dies nicht einmal mein Code, aber er funktioniert auch nicht bei allen Paaren. Ich werde jedoch die Klammern wieder ersetzen und die anderen Ratschläge befolgen. In der Zwischenzeit habe ich gelernt, dass OrderSelect das Symbol der ersten Order im Terminal ausgibt und nicht das, auf dem sich der EA befindet, also war das eigentlich nicht falsch.

EDIT: Danke für den Vorschlag #3!!!!!!! Ich denke, das war das Problem, denn die Order muss zuerst nach Symbol ausgewählt werden und DANN muss der Wert gespeichert werden. Also habe ich die Variable wie unten beschrieben unter diese Funktionen verschoben, und es scheint jetzt zu funktionieren (aber es sind weitere Tests erforderlich, bevor ich es mit Sicherheit weiß

int start(){
      for(int i=OrdersTotal()-1; i>=0; i--) {
         if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
            if(OrderSymbol()!= Symbol()) continue;
               double Pip=Point*10,TSTP=TrailingStart*Pip,Trail=TrailingStop*Pip,SL=StopLoss*Pip;               
                  if(OrderType()==OP_BUY){
                     if(Bid-OrderOpenPrice()>TSTP){
                        if(OrderStopLoss()<Bid-Trail){
                           if(!OrderModify(OrderTicket(),OrderOpenPrice(),Bid-Trail,OrderTakeProfit(),Orange))
                              Print("Error Buy TrailingStop: ",GetLastError());
            }
         }
 
Trader3000:

Ich hatte eigentlich Klammern für alle meine "if"-Anweisungen ursprünglich gemäß dem Code, den ich hier früher gepostet habe, aber da dieser Code nicht funktionierte, habe ich verschiedene andere Dinge versucht, darunter auch das Kopieren des Codes, den ich in meinem vorherigen Beitrag eingefügt habe. Wie ich bereits erwähnt habe, ist dies nicht einmal mein Code, aber er funktioniert auch nicht bei allen Paaren. Ich werde jedoch die Klammern wieder ersetzen und die anderen Ratschläge befolgen. In der Zwischenzeit habe ich gelernt, dass OrderSelect das Symbol der ersten Order im Terminal ausgibt und nicht das, auf dem sich der EA befindet, also war das eigentlich nicht falsch.

EDIT: Danke für den Vorschlag #3!!!!!!! Ich denke, das war das Problem, denn die Order muss zuerst nach Symbol ausgewählt werden und DANN muss der Wert gespeichert werden. Also habe ich die Variable wie unten beschrieben unter diese Funktionen verschoben, und es scheint jetzt zu funktionieren (aber es sind weitere Tests erforderlich, bevor ich es mit Sicherheit weiß

Wenn ich mir Ihren letzten Code ansehe, muss ich sagen - I GIVE UP! (Sie weigern sich, die Sache zu Ende zu bringen)!
 
FMIC: Wenn ich mir Ihren letzten Code ansehe, muss ich sagen - ICH GEBE AUF! (Sie weigern sich, die Sache zu Ende zu bringen)!
Vielleicht verstehen Sie jetzt meine "harte Kritik", wenn sie jedermanns Zeit verschwenden. Ich verstehe zwar "einfache Dinge", die sie für akzeptabel halten, um jedermanns Zeit zu verschwenden, aber ich nicht.

Trader3000: Ich glaube, das war das Problem,...
int start(){
      for(int i=OrdersTotal()-1; i>=0; i--) {
         if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
            if(OrderSymbol()!= Symbol()) continue;
               double Pip=Point*10, TSTP=TrailingStart*Pip, Trail=TrailingStop*Pip, SL=StopLoss*Pip;
                  if(OrderType()==OP_BUY){
                     if(Bid-OrderOpenPrice()>TSTP){
                        if(OrderStopLoss()<Bid-Trail){
                           if(!OrderModify(OrderTicket(),OrderOpenPrice(),Bid-Trail, OrderTakeProfit(), Orange))
                              Print("Error Buy TrailingStop: ",GetLastError());
            }
         }
Ihr Problem ist, dass Sie nicht denken.
int start(){
   for(int i=OrdersTotal()-1; i>=0; i--) {
      if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)) if(OrderSymbol()!= Symbol()) continue;
// Everything below is executed if NO order is selected or a selected order is symbol
      double Pip=Point*10, TSTP=TrailingStart*Pip, Trail=TrailingStop*Pip,SL=StopLoss*Pip;
      if(OrderType()==OP_BUY)
      && Bid-OrderOpenPrice()>TSTP)
      && OrderStopLoss()<Bid-Trail){
         if(!OrderModify(OrderTicket(), OrderOpenPrice(), Bid-Trail, OrderTakeProfit(), Orange))
            Print("Error Buy TrailingStop: ",GetLastError());
      }
   :
 
WHRoeder:
Vielleicht verstehen Sie jetzt meine "harte Kritik", wenn sie jedermanns Zeit verschwenden. Ich verstehe zwar die "einfachen Dinge", die sie für akzeptabel halten, um jedermanns Zeit zu verschwenden, aber ich nicht.

Ja! Leider scheinen Sie recht zu haben!

 

Vielen Dank für die Antworten, also habe ich den Code auf eine frühere Version wie unten geändert. So scheint er bei allen Paaren, bei denen das Stoplevel 50 Punkte beträgt, perfekt zu funktionieren, aber nicht bei Paaren, bei denen das Stoplevel höher ist, z. B. EURAUD, selbst wenn die externen Variablen höher sind als das Stoplevel. Das ist also bizarr

extern int TrailingStart=15;
extern int TrailingStop=5;
double stoplevel=(MarketInfo(Symbol(),MODE_STOPLEVEL))/10;
int TS=TrailingStart-TrailingStop;
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
int init(){
   if(TS<stoplevel){
      MessageBox("Please note: Your inputs for TrailingStart and/or TrailingStop cannot"+
                 "\nbe less than the minimum levels required by your broker and the"+
                 "\nTrailingStart has been increased automatically to "+StringConcatenate(stoplevel+TrailingStop)+" pips");
     } 
   return(0);
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
int deinit(){
   return(0);
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
int start(){
   double Pip=Point*10;
   if(TS<stoplevel) TrailingStart=(int)stoplevel+TrailingStop;
           
   if(!IsTradeAllowed()){
      MessageBox("This Expert Advisor requires Auto Trading. Please reload the EA or right click on"+
                 "\nthe chart to bring up the inputs window. Under the common tab check the box to"+
                 "\nallow live trading");
      Sleep(50000);
     }
   if(!IsExpertEnabled()){
      MessageBox("This Expert Advisor requires Auto Trading. Please click the button at the top");
      Sleep(50000);
     } 
   int ticket=0,buy_ticket=0,sell_ticket=0;  
   for(int i=OrdersTotal()-1; i>=0; i--)
      if(OrderSelect(i,SELECT_BY_POS) && OrderSymbol()==Symbol()){
      ticket++;
      if(OrderType()==OP_BUY) buy_ticket=OrderTicket();
      if(OrderType()==OP_SELL) sell_ticket=OrderTicket();
      }
            if(OrderType()==OP_BUY){
               if(OrderSelect(buy_ticket,SELECT_BY_TICKET)){
                  if((Bid-OrderOpenPrice())>(TrailingStart*Pip)){
                     if(OrderStopLoss()<Bid-(TrailingStop*Pip)){
                        if(OrderModify(OrderTicket(),OrderOpenPrice(),Bid-(TrailingStop*Pip),OrderTakeProfit(),Blue))
                        Print("Buy = ",GetLastError());
                        return(0);
                        RefreshRates();
                        }     
                     }  
                  }     
               }
            if(OrderType()==OP_SELL){
               if(OrderSelect(sell_ticket,SELECT_BY_TICKET)){
                  if((OrderOpenPrice()-Ask)>(TrailingStart*Pip)){
                     if(OrderStopLoss()>Ask+(TrailingStop*Pip) || OrderStopLoss()==0){
                        if(OrderModify(OrderTicket(),OrderOpenPrice(),Ask+(TrailingStop*Pip),OrderTakeProfit(),Red))
                        Print("Sell = ",GetLastError());
                        return(0);
                        RefreshRates();
                        }
                     }
                  }  
               }
             
  return(0);
}
//+------------------------------------------------------------------+
 

Ich habe auch einen anderen EA gefunden, der einen sehr ähnlichen Code wie meiner hat und habe den Code verglichen. Ich habe die wichtigsten Unterschiede hervorgehoben.

1. inkrementiert statt dekrementiert

2. multipliziert alles mit Point statt Point*10

3. er addiert den Trailingstop und den Trailingstep zusammen und subtrahiert dann einen und modifiziert die Order mit dem Trailingstep. Wenn ich das richtig verstehe, wird der Trailingstart nach einer Bewegung von 15 Pips (150 Punkte) aktiviert. In meinem EA wird der Kurs um 5 Pips zurückbleiben und gestoppt werden, wenn der Kurs wieder fällt und dieses 5-Pips-Niveau erreicht. In seinem EA wird er auch nach 15 Pips aktiviert, aber die Anzahl der Pips, die er zurückbleibt, ist 19 (15+5-1), also muss der Kurs um 19 Pips fallen, um gestoppt zu werden. Ein Beispiel: Der OrderOpenPrice liegt bei 1,50000. Der Kurs steigt um 150 Punkte auf 1,50150, wodurch der Trailingstop aktiviert wird. Wenn der Kurs dann wieder auf 1,50100 fällt, wird er für einen Gewinn von 5 Pips ausgestoppt. In seinem EA wird der Trailingstop auch bei 1,50150 aktiviert, aber der Trail liegt bei 1,49960, was meiner Meinung nach denFehler 130 verursacht, da der Stop zu nahe am Stoplevel liegt. Oder verstehe ich das falsch?

Könnte mein Problem an einem oder mehreren dieser Punkte liegen?

//+------------------------------------------------------------------+
//|                                                   e-Trailing.mq4 |
//|                                           Êèì Èãîðü Â. aka KimIV |
//|                                              http://www.kimiv.ru |
//|                                                                  |
//| 12.09.2005 Àâòîìàòè÷åñêèé Trailing Stop âñåõ îòêðûòûõ ïîçèöèé    |
//|            Âåøàòü òîëüêî íà îäèí ãðàôèê                          |
//+------------------------------------------------------------------+
#property copyright "Êèì Èãîðü Â. aka KimIV"
#property link      "http://www.kimiv.ru"

//------- Âíåøíèå ïàðàìåòðû ------------------------------------------
extern bool   ProfitTrailing = True;  // Òðàëèòü òîëüêî ïðîôèò
extern int    TrailingStop   = 15;     // Ôèêñèðîâàííûé ðàçìåð òðàëà
extern int    TrailingStep   = 5;     // Øàã òðàëà
extern bool   UseSound       = True;  // Èñïîëüçîâàòü çâóêîâîé ñèãíàë
extern string NameFileSound  = "expert.wav";  // Íàèìåíîâàíèå çâóêîâîãî ôàéëà

//+------------------------------------------------------------------+
//| expert start function                                            |
//+------------------------------------------------------------------+
void start() {
  for (int i=0; i<OrdersTotal(); i++) {
    if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) {
      TrailingPositions();
    }
  }
}

//+------------------------------------------------------------------+
//| Ñîïðîâîæäåíèå ïîçèöèè ïðîñòûì òðàëîì                             |
//+------------------------------------------------------------------+
void TrailingPositions() {
  double pBid, pAsk, pp;

  pp = MarketInfo(OrderSymbol(), MODE_POINT);
  if (OrderType()==OP_BUY) {
    pBid = MarketInfo(OrderSymbol(), MODE_BID);
    if (!ProfitTrailing || (pBid-OrderOpenPrice())>TrailingStop*pp) {
      if (OrderStopLoss()<pBid-(TrailingStop+TrailingStep-1)*pp) {
        ModifyStopLoss(pBid-TrailingStop*pp);
        return;
      }
    }
  }
  if (OrderType()==OP_SELL) {
    pAsk = MarketInfo(OrderSymbol(), MODE_ASK);
    if (!ProfitTrailing || OrderOpenPrice()-pAsk>TrailingStop*pp) {
      if (OrderStopLoss()>pAsk+(TrailingStop+TrailingStep-1)*pp || OrderStopLoss()==0) {
        ModifyStopLoss(pAsk+TrailingStop*pp);
        return;
      }
    }
  }
}

//+------------------------------------------------------------------+
//| Ïåðåíîñ óðîâíÿ StopLoss                                          |
//| Ïàðàìåòðû:                                                       |
//|   ldStopLoss - óðîâåíü StopLoss                                  |
//+------------------------------------------------------------------+
void ModifyStopLoss(double ldStopLoss) {
  bool fm;

  fm=OrderModify(OrderTicket(),OrderOpenPrice(),ldStopLoss,OrderTakeProfit(),0,CLR_NONE);
  if (fm && UseSound) PlaySound(NameFileSound);
}
//+------------------------------------------------------------------+
 
Trader3000:

Ich fand auch eine andere EA, die sehr ähnlichen Code wie meine hat und den Code verglichen.

Mal sehen, ob ich diese Logik von Ihnen bekommen! Sie sind bereit, eine andere EA von jemand anderem von wer weiß wo zu finden und sind bereit, dass Code in Ihre zu integrieren, aber Sie sind nicht bereit, Code, der speziell geschrieben wurde, um Ihnen zu helfen und korrigieren Sie Probleme zu nehmen!!!

WOW! Wie LOGISCH von dir! Wo ist SPOCK, wenn man ihn braucht!

SPOCK, mögest Du in Frieden ruhen! Wir alle vermissen dich!

 
FMIC:

Mal sehen, ob ich diese Logik von Ihnen bekommen! Sie sind bereit, eine andere EA von jemand anderem von wer weiß wo zu finden und sind bereit, dass Code in Ihre zu integrieren, aber Sie sind nicht bereit, Code, der speziell geschrieben wurde, um Ihnen zu helfen und korrigieren Sie Probleme zu nehmen!!!

WOW! Wie LOGISCH von dir! Wo ist SPOCK, wenn man ihn braucht!

SPOCK, mögest Du in Frieden ruhen! Wir alle vermissen dich!

Ich habe es endlich herausgefunden, also vielen Dank an alle für die Hilfe (und Kritik). Nachdem ich mir den Code, den Sie und Mike auf der ersten Seite gepostet haben, noch einmal angesehen habe, habe ich meinen Fehler gesehen. Ich habe ihn wahrscheinlich übersehen, weil er so subtil war, aber vor allem, weil ich die Logik des Codes nicht richtig verstanden habe. Das Problem war, dass ich dachte, dass der Pip-Betrag für den TrailingStop die Anzahl der Pips ist, die er hinter sich herzieht. Aber die Anzahl der Pips, die er hinterherläuft, ist eigentlich TrailingStart-TrailingStop. Meine Einstellungen lagen also unter dem Stoplevel für Paare wie den gbpjpy, weil ich 15 und 5 eingegeben habe. Da 5 unter dem Stoplevel von 8 liegt. Durch einfaches Erhöhen des TrailingStop funktioniert es jetzt bei allen Paaren. Danke!!!
Grund der Beschwerde: