Problem mit EA-Code 2 (SL-Manager) - Seite 2

 
Funky:

Hallo Raptor, nochmals vielen Dank.

1. Ist das das einzige Problem mit dem obigen Code??? Ich denke, im schlimmsten Fall würde das PendingOrderTicket_1 nicht geändert werden, und würde an seinem SL schließen.

2. Ist es in Ordnung, wie ich die OrderSelect-Funktion verwendet habe?

Das große Problem, das ich denke, ich werde haben, ist, dass, wenn OrderTicket_1 über dem ersten Gap_Level1 ist, wird es immer noch die Bestellung auf JEDEN TICK ändern, dass dieses Criterea erfüllt ist.

3. Ist das der Fall? Wenn ja, würde der unten stehende Code das Problem beheben?

Nochmals vielen Dank ;)

1. Es ist nur etwas, das mir aufgefallen ist, das Ihren Code kaputt machen wird.


2. Ihr OrderSelect ist falsch ( https://docs.mql4.com/trading/OrderSelect ), wenn Sie anhand der Ticketnummer auswählen wollen, müssen Sie SELECT_BY_TICKET und nicht SELECT_BY_POS verwenden.

3. Ich glaube nicht, dass das, was Sie gemacht haben, nur bedeutet, dass diese Funktion nur einmal aufgerufen wird ... was passiert, wenn Sie die nächste Bestellung haben, die geändert werden muss ? was passiert, wenn Sie zwei Bestellungen gleichzeitig offen haben ?

Ich bin nicht 100%ig vertraut mit dem, was Sie tun, und ich habe nicht die Zeit, mir Ihren Code im Detail anzusehen, um das zu tun ... aber ich habe eine Frage.

Können Sie sich nicht die OrderOpenPrice(), OrderStopLoss() und OrderTakeProfit() einer Order ansehen und feststellen, ob sie bereits auf Level 1, 2 oder 3 geändert wurde?

 
RaptorUK:

1. Es ist nur etwas, das mir aufgefallen ist, das Ihren Code kaputt machen wird.


2. Ihr OrderSelect ist falsch ( https://docs.mql4.com/trading/OrderSelect ), wenn Sie anhand der Ticketnummer auswählen wollen, müssen Sie SELECT_BY_TICKET und nicht SELECT_BY_POS verwenden.

3. Ich glaube nicht, dass das, was Sie gemacht haben, nur bedeutet, dass diese Funktion nur einmal aufgerufen wird ... was passiert, wenn Sie die nächste Bestellung haben, die geändert werden muss ? was passiert, wenn Sie zwei Bestellungen gleichzeitig offen haben ?

Ich bin nicht 100%ig vertraut mit dem, was Sie tun, und ich habe nicht die Zeit, mir Ihren Code so detailliert anzusehen, dass ich das tun kann... aber ich habe eine Frage.

Können Sie sich nicht die OrderOpenPrice(), OrderStopLoss() und OrderTakeProfit() einer Order ansehen und feststellen, ob sie bereits auf Level 1, 2 oder 3 geändert wurde?

Vielen Dank, Raptor, Ihr Einblick war sehr hilfreich für mich...

Ich habe volles Verständnis für die zeitlichen Beschränkungen, Ihre Zeit und Ihre Tipps sind sehr geschätzt.... Ich habe nicht versucht, jemanden zu bitten, es für mich zu schreiben, also bin ich nicht sehr ins Detail gegangen... was das Problem mit sich bringt, dass es ohne viele Details schwer ist, Hilfe anzubieten, also entschuldige..... In diesem Fall war es eher der Code, der mir beim Lernen Sorgen bereitet hat, und Ihre Tipps waren sehr hilfreich für mich

1. Ich habe mich bemüht, es zusammen zu bekommen, um es zu testen, so könnte das Problem mit dem Stromausfall später beheben, wenn ich mehr Erfahrung habe.

2. Ich werde zu SELECT_BY_TICKET wechseln, anstatt zu POS, vielen Dank.

3. Ich möchte, dass GAP_Level1 nur einmal aufgerufen wird, also bin ich vielleicht richtig mit der Art und Weise, wie ich das alles zusammengefügt habe.... Um Ihre Frage zu beantworten: Ich versuche, mir das Ticket der letzten Pending Order anzusehen, um zu sehen, ob sie über meine TradeUp-Marke hinausgeht. Wenn dies der Fall ist, möchte ich, dass alle meine früheren Aufträge nach oben gezogen werden (dieses Mal durch Auswahl der magischen Zahl, um sie alle zu erhalten)... Zu diesem Zeitpunkt habe ich eine weitere Pending Order Open, und wenn sie Gap_Level2 erreicht, werde ich einen BuyModify_Level2-Block mit demselben Code.... haben. Ist das plausibel?

Ich hoffe, dass ich mit meiner Logik richtig liege, ich habe mich diesmal wirklich mit Papier hingesetzt, wie Sie es vorgeschlagen haben, um es auszurechnen... ;)

 
Funky:


3. Ich möchte, dass GAP_Level1 nur einmal aufgerufen wird, also habe ich vielleicht recht mit der Art und Weise, wie ich das alles zusammengefügt habe.... Um Ihre Frage zu beantworten: Ich versuche, das Ticket der letzten Pending Order zu prüfen, um zu sehen, ob es über meine TradeUp-Marke hinausgeht. Wenn dies der Fall ist, möchte ich, dass alle meine früheren Aufträge nach oben gezogen werden (dieses Mal durch Auswahl der magischen Zahl, um sie alle zu erhalten)... Zu diesem Zeitpunkt habe ich eine weitere Pending Order Open, und wenn sie Gap_Level2 erreicht, werde ich einen BuyModify_Level2-Block mit demselben Code.... haben. Ist das plausibel?


Wie (oder wo in Ihrem Code) setzen Sie HasBeenExecuted = false; so dass IfGap_Level_1() für die 2. Gruppe von Trades ausgeführt wird?
 
RaptorUK:
Wie (oder wo in Ihrem Code) setzen Sie HasBeenExecuted = false; so dass IfGap_Level_1() für den zweiten Satz von Trades ausgeführt wird?

Gute Frage, Kumpel.

Ich hatte vor, diese Variable am Anfang der internen Variablen unterhalb der Variablen, die ich exportiere, zu aktivieren. Ich wollte ein GAP_Level_1, GAP_Level_2, GAP_Level_3, GAP_Level_4, GAP_Level_5 usw. machen. Sobald es also GAP_Level_1 erreicht, kann es dieses erste Gap-Level vergessen.

Ihr Hinweis hat mich zum Nachdenken gebracht, vielen Dank dafür. Ich sehe jetzt ein Problem.

Ich erkannte, dass, wenn ein Handel einen SL trifft, und beginnt wieder, ich will den ersten Handel für Gap_Level_1 wieder suchen und durch drehen. Und verdammt, das wird ein Problem verursachen, da ich PendingOrder_1 mit GAP_Level_1 und PendingOrderLevel_Level_2 mit GAP_Level2 verknüpfen wollte.

Ich schätze, ich kann es immer noch schaffen, aber ich hätte nicht darüber nachgedacht, es sei denn, Sie erwähnten.....

Mir fallen drei Lösungsmöglichkeiten ein... Die erste passt ein wenig besser zu meiner Gehirnleistung, haha ;)

1. wenn ich IF LAST TRADE IS LOSS wähle, dann lösche ich alle PENDING ORDERS und starte sie neu, wenn ein Trade einen SL trifft. Wenn also Pending Order 1 auf Gap Level_1 geht, wird Pending_Order5 nicht mehr der nächste Handel sein, der auf GAP_Level5 geht. Nachdem ein SL erreicht ist, werden alle meine offenen Trades geschlossen, da sie alle denselben SL haben, so dass das Schließen meiner Pending Orders und der Neustart der Logik in Ordnung sein könnte.

2. Die andere Möglichkeit, die mir einfällt (dank Ihres Hinweises bei meinem anderen Code-Problem vor ein paar Wochen), besteht darin, eine boolesche Variable namens NEWTRADE einzufügen, nachdem der erste Handel getätigt wurde, und dann einen Block IFNEWTRADE==1 zu haben, und dann zu GAP_Level1 zu gehen. Das bringt mich zum Nachdenken: Ich könnte IFNEWTRADE1 in den Pending Order 1 Block einfügen, und IFNEWTRADE2 in den Pending Order 2 Block und so weiter... und dann IFNEWTRADE2==1, um zu GAP_Level2 zu gehen.

EDIT (nach einem Kaffee): 3. ich dachte gerade, was wäre, wenn ich die Order nach Zeit sortieren würde (jetzt weiß ich, dass man mehrere Orders auf viele Arten sortieren kann) und eine Interger-Variable namens ORD_SELECT_NUMBER basierend auf TIME zuweisen würde. Dann, nachdem ORD_SELECT_NUMBER == 1 ist, gehe ich zu GAP_Level1 und schaue mir dann die nächste ORD_SELECT_NUMBER an, indem ich den Befehl ORDER_SELECT_NUMBER ++ verwende.

Ich bin ok beim Schreiben von Einzelauftrag EAs auf der Grundlage von Signalen usw., es ist nur diese mehrere Bestellung Zeug, das ehrlich mich tötet... Mein EA ist eigentlich arbeiten, wie es ist, und bekommt gute Ergebnisse, es ist nur verrückt zu verwenden, wie es auf JEDEN TICK modifiziert, und nur meine kleinste Gap_Level atm offensichtlich verwendet, da ich seit der Arbeit heraus, wie es alle zusammen oben zu binden...

Wow, aber danke noch einmal Raptor, sowie CODING KNOWLEDGE Ich sehe, wie wichtig gute LOGIK ist auch, danke für mich zum Nachdenken.

 
Funky:

Wow, aber danke noch mal, Raptor, ich sehe jetzt, wie wichtig neben dem KODIERWISSEN auch eine gute LOGIK ist, danke, dass Sie mich zum Nachdenken gebracht haben.

Sie haben das falsch verstanden ... bei jeder Software, egal in welcher Sprache sie kodiert ist, C++, Perl, Pascal, Fortran, Assembler, etc. geht es nur darum, Probleme zu lösen. Wenn die Logik hinter Ihrer Lösung fehlerhaft ist, spielt es keine Rolle, wie gut Sie programmieren können ... die Lösung kommt zuerst, der Code kommt später.
 
RaptorUK:
Sie haben das falsch verstanden... Bei jeder Software, egal in welcher Sprache sie programmiert ist, C++, Perl, Pascal, Fortran, Assembler, etc. geht es nur darum, Probleme zu lösen. Wenn die Logik hinter Ihrer Lösung fehlerhaft ist, spielt es keine Rolle, wie gut Sie programmieren können ... die Lösung kommt zuerst, der Code kommt später.

Ich verstehe, was Sie sagen... Ein Bauherr ohne Bauplan kommt nicht weit, auch wenn er der beste Bauherr der Welt ist. Der ursprüngliche Plan ist fast noch wichtiger, ich verstehe Sie.

Sie waren mir eine große Hilfe, Raptor, und ich wollte mich noch einmal bedanken.

Ich habe mich für die faule Option 1 oben entschieden.

Es war Stunden und Stunden der Programmierung, meine EA ist rund 85k (daher nur ein Fragment gepostet), so bin ich noch zurück zu berichten, wie ich ging, nachdem dieser Dinosaurier abgeschlossen ist. Ich bin mit ziemlich viel Glück atm, die Aufträge wählen Sie richtig. Ich bin studieren, wie ich gehe, wie es weit von der einzelnen Bestellung EAs, die ich gewohnt bin, zu schreiben ist. Ich sprang in die deepend mit diesem Projekt und lernen, wie man schwimmt. Ich werde zurück posten, wie ich gehe.

Nochmals vielen Dank, Raptor :)

 
Funky:

Ich verstehe, was Sie sagen... Ein Bauherr ohne Bauplan kommt nicht weit, auch wenn er der beste Bauherr der Welt ist. Der ursprüngliche Plan ist fast noch wichtiger, ich verstehe Sie.

Sie waren mir eine große Hilfe, Raptor, und ich wollte mich noch einmal bedanken.

Ich habe mich für die faule Option 1 oben entschieden.

Es war Stunden und Stunden der Programmierung, meine EA ist rund 85k (daher nur ein Fragment gepostet), so bin ich noch zurück zu berichten, wie ich ging, nachdem dieser Dinosaurier abgeschlossen ist. Ich bin mit ziemlich viel Glück atm, die Aufträge wählen Sie richtig. Ich bin studieren, wie ich gehe, wie es weit von der einzelnen Bestellung EAs, die ich gewohnt bin, zu schreiben ist. Ich sprang in die deepend mit diesem Projekt und lernen, wie man schwimmt. Ich werde zurück posten, wie ich gehe.

Nochmals vielen Dank, Raptor :)

Sobald Sie sehen, dass Sie in Ihrem Code-Ressourcen zu erweitern, und es gibt Funktionen, die gemeinsam für alle künftigen EAs Verwendung gemacht werden können, erwägen, Bibliothek / Include, etc.

Bec. sobald es in Tyrannosaurus wächst, Sie Codes in ihrem eigenen Juraissic Park verloren gehen, vor allem, wenn Sie sie wieder für jede zukünftige Verwendung benötigen.

 
diostar:

Sobald Sie sehen, dass Sie in Ihrem Code-Ressourcen zu erweitern, und es gibt Funktionen, die gemeinsam für jede zukünftige EA Verwendung gemacht werden können, sollten Sie erwägen, Bibliothek / Include, etc. zu verwenden.

Bec. sobald es in Tyrannosaurus wächst, erhalten Sie Codes in ihrem eigenen Juraissic Park verloren, vor allem, wenn Sie sie wieder für jede zukünftige Verwendung benötigen.



Haha, Kumpel, das hat mich zum Lachen gebracht. Ich verstehe, wie das passieren kann.

Um ehrlich zu sein, habe ich ein Library Insert namens 'OrderSendReliable.mqh' gefunden. Ich werde diesen EA zuerst fertigstellen und wollte dann posten, wie ich mit diesem Library Insert und dem anderen EAcode-Posting vorgegangen bin, da ich glaube, dass es die Sache mit dem heißen Markt lösen könnte.

Ich musste kichern, weil ich jetzt sehen kann, wie mit der Erfahrung, es würde alle Arten von #includes an der Spitze der EA, haha, und Sie tragen um eine 1mb Cache von Dateien für jeden EA.

Wissen Sie, Ihr Kommentar bringt mich zum Nachdenken, es hat einfach Klick gemacht. Ich habe gerade Ausschneiden und Einfügen von Code zwischen meinen EAs, wenn ich eine {section}, die ich mag, und binden sie in (zB, dass {section} mit dem ich in dem anderen Beitrag, den ich zuvor erwähnt habe, Probleme hatte). Ich hatte gar nicht daran gedacht, das als Library Insert zu machen und einfach darauf zu verweisen... Davon bin ich noch sehr weit entfernt... Ich war gerade dabei, mein erstes Library-Include nach diesem EA mit diesem zu beginnen, um zu sehen, wie sie funktionieren.... die Möglichkeiten sind so cool. Dieses MQL macht ziemlich süchtig.

Oh ja, mit meinem Code läuft auch alles nach Plan, er funktioniert perfekt für seinen Zweck, ich wollte mich nur kurz bedanken :) ..

Ich weiß eure Unterstützung wirklich zu schätzen, ich wünschte, ich könnte in Worten beschreiben, wie sehr ;)

 

Sie können Ihre eigenen Sätze von "Kern" -Bibliotheksfunktionen haben, die ich Ihnen dringend empfehle, eher früher als später in Betracht zu ziehen.

Ich begann auch mit meinem ersten EA, das gleiche, kopieren, einfügen, kopieren einfügen....

Der Wendepunkt war, als ich diesen EA für meinen Ex-Kollegen aus dem Militärdienst machte, der bereits im Ruhestand war. Das hat alles verändert, ich habe zum ersten Mal eine Bibliothek benutzt.

Ich behalte diese Bibliothek bis heute. Wenn es Ihnen Ideen bieten kann, die Ihnen helfen, weiterzukommen... hier ist die Überschrift, Kumpel:

#define PI              3.1415629
#define GOLDEN_RATIO    1.618

#import "command.ex4"
   bool     isInit();
   bool     isFractional(string ins);
   bool     isOrderLimit(int cap);
   bool     isRiskLimit(double risk);
   
   int      ioSession(int h);
   string   ioWkday(datetime d);
   double   ioOrderPriceLvl(string ins, int type, double oPrice);    
   double   ioPriceLvl(string ins,double dPrice);
   bool     ioTrailStop(string ins, int tkt, int type, double oPrice,int lvl, double stop=0);
   int      ioTotalOrd(int magic);
         
   int      opClose(string ins,int ticket,int cmd,double lLot,bool Activate.NO_BREAK_ONE=false);
   int      opOpen(string ins, int cmd, double lLot, double lPrice, double lLoss, double lProfit, string comment,int EA.Id, int lSlip=0, bool Activate.NO_BREAK_ONE=false);
   int      opModify(string ins, int ticket,int cmd,double lPrice,double lLoss,double lProfit,bool Activate.NO_BREAK_ONE=false);   
   double   opStopLvl(string ins,double p);
   double   opNorm(string ins,double price);
   double   opNormL(string ins,double d);   
   double   opPoint(string ins);
   
   double   intelLot(string market, double risk,double stop); 
   double   intelCorrel(string s1,string s2, int f, int type);   
   int      intelPriceMove(string ins, int p, int L);
   int      intelTrend(string ins, int p, int q);   
#import

Ich hoffe, das hilft....

 
diostar:

Sie können Ihre eigenen Sätze von "Kern"-Bibliotheksfunktionen haben, die ich Ihnen dringend empfehle, eher früher als später zu berücksichtigen.

Ich habe auch mit meinem ersten EA angefangen, das Gleiche, kopieren, einfügen, kopieren, einfügen....

Der Wendepunkt war, als ich diesen EA für meinen Ex-Kollegen aus dem Militärdienst machte, der bereits im Ruhestand war. Das änderte alles, ich fing an, die Bibliothek zum ersten Mal zu benutzen.

Ich behalte diese Bibliothek bis heute. Wenn es Ihnen Ideen bieten kann und Ihnen hilft, weiterzukommen... hier ist die Überschrift, Kumpel:

Ich hoffe, das hilft....


Hi Diostar, das ist wirklich cool, danke, dass du diese Informationen mit uns teilst, ich habe noch nichts über Bibliotheken gelesen. Das scheint eine großartige Möglichkeit zu sein, Variablen mit sich herumzutragen und sie für später vordefiniert zu haben. Ich werde mal darüber nachdenken. Mir gefällt, dass du gesagt hast "lieber früher als später", ich mag solche Tipps, danke, Kumpel. Das erinnert mich an das Erlernen des Gitarrenspiels, wenn ich 20 Jahre später denke, ich wünschte, ich hätte dies und jenes von Anfang an gemacht, das hätte die letzten 20 Jahre einfacher gemacht, lol. Ich werde mich ernsthaft damit befassen, vielen Dank.

Ah, gerade als ich dachte, dass ich Feuer und Flamme bin, habe ich ein Drama, für das ich keine Lösung finden kann. Ich habe Probleme mit der Auswahl der richtigen Reihenfolge in diesen beiden Verbindungsabschnitten:

Ich könnte zwei meiner Beispiele zeigen und die Auswirkungen aufzeigen, aber mein Gehirn will einfach nicht auf dieses klicken...

Beispiel 1:

SCROLLT durch frühere Aufträge, genau wie ich es will, ändert sie aber bei JEDEM TICK

(das ursprüngliche Drama mit Reihenfolge wählen Raptor half mir mit gestoppt die Ebenen von Konflikten, so dass die SL Schlabbern um aus diesem Grund vor zu. Ich fühlte mich dieser letzte Teil leicht zu sortieren, aber auf es seit Tagen fühlt es sich versuchen, es zu stoppen passiert jedes tick...)

void IfGap_SELLLevel_00()
{
    if (OrderSelect(FirstRunSell_ticket_00,SELECT_BY_TICKET,MODE_TRADES)) 
    {
        if (OrderSymbol() == Symbol() && OrderMagicNumber() == SELL_Magic01)
        {
            if ((Gap_Level_00 < 0 && (OrderType() == OP_SELL && OrderOpenPrice() - Bid < Gap_Level_00*PipValue*Point))
             || (Gap_Level_00 > 0 && (OrderType() == OP_SELL && OrderOpenPrice() - Bid > Gap_Level_00*PipValue*Point)))
            {
                IfGap_SELLLevel_00AlreadyExe = false;
            }
            if (IfGap_SELLLevel_00AlreadyExe == false)
            {
                IfGap_SELLLevel_00AlreadyExe = true;
                SellOrderModifyLevel_00();
            }
        }
    }
    
    
}

void SellOrderModifyLevel_00()
{
    for (int i=OrdersTotal()-1; i >= 0; i--)
    if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES))
    {
        if (OrderType() == OP_SELL && OrderSymbol() == Symbol() && OrderMagicNumber() == SELL_Magic01) 
        { 
            double Level_00_SL = Bid + Stoploss_Level_00*PipValue*Point;
            if (Stoploss_Level_00 == 0) Level_00_SL = 0;
            double Level_00_TP = Bid - Takeprofit_Level_00*PipValue*Point;
            if (Takeprofit_Level_00 == 0) Level_00_TP = 0;
            bool ret00 = OrderModify(OrderTicket(), OrderOpenPrice(), Level_00_SL, Level_00_TP, 0, Modify_Order_Colour);
            if (ret00 == false)
            Print("OrderModify() error - ", ErrorDescription(GetLastError()));
        }
    }
    
}


Beispiel 2:

Dieses Beispiel ist nicht das, was ich will... Ich habe diese Option ausprobiert, um zu verhindern, dass es bei jedem Tick sendet... aber es scrollt nicht durch die Aufträge und ändert nur einen der richtigen Tickets bei jedem Tick (es ändert den ersten Auftrag, ich schätze den letzten im Index-Cache der Aufträge).

void IfGap_SELLLevel_00()
{
    if (OrderSelect(FirstRunSell_ticket_00,SELECT_BY_TICKET,MODE_TRADES)) 
    {
        if (OrderSymbol() == Symbol() && OrderMagicNumber() == SELL_Magic01)
        {
            if ((Gap_Level_00 < 0 && (OrderType() == OP_SELL && OrderOpenPrice() - Bid < Gap_Level_00*PipValue*Point))
             || (Gap_Level_00 > 0 && (OrderType() == OP_SELL && OrderOpenPrice() - Bid > Gap_Level_00*PipValue*Point)))
            {
                SellOrderModifyLevel_00();
            }
        }
    }
    
    
}

void SellOrderModifyLevel_00()
{
    bool IfGap_SELLLevel_00AlreadyExe = FALSE;
    for (int i=OrdersTotal()-1; i >= 0; i--)
    if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES))
    {
        if (OrderType() == OP_SELL && OrderSymbol() == Symbol() && OrderMagicNumber() == SELL_Magic01 && !IfGap_SELLLevel_00AlreadyExe) 
        { 
            double Level_00_SL = Bid + Stoploss_Level_00*PipValue*Point;
            if (Stoploss_Level_00 == 0) Level_00_SL = 0;
            double Level_00_TP = Bid - Takeprofit_Level_00*PipValue*Point;
            if (Takeprofit_Level_00 == 0) Level_00_TP = 0;
            bool ret00 = OrderModify(OrderTicket(), OrderOpenPrice(), Level_00_SL, Level_00_TP, 0, Modify_Order_Colour);
            IfGap_SELLLevel_00AlreadyExe = TRUE;
            if (ret00 == false)
            Print("OrderModify() error - ", ErrorDescription(GetLastError()));
        }
    }
    
}


Ich habe weitere 50 Versuche unternommen, indem ich zuerst einen kleinen IF EXECUTED 00-Abschnitt ausprobiert habe, um ihn an IFGAP weiterzuleiten, wenn er nicht vorher ausgeführt wurde... allerdings hatte ich nicht viel Glück beim Einfügen eines Schalters vor hand..... Ich könnte dieses Beispiel veröffentlichen, um diese Option zu zeigen....

Beispiel 3:

Mit einem Schalter... hat es immer noch den gleichen Effekt wie Beispiel 1. Es blättert korrekt durch die Aufträge, ändert sich aber immer noch bei jedem Tick...

Ich kann sehen, dass der Schalter hält immer Fragen ein false wieder, so läuft gerade durch wieder... jedoch andere Versuche würde nicht lassen Sie es durch überhaupt... sollte ich mit dieser Option bleiben und versuchen, IfGap_SELLLevel_00AlreadyExe = true an anderer Stelle, wenn ja, wo deklarieren?

void IfGap_SELLLevel_00AlreadyBlock()
{
    if (OrderSelect(FirstRunSell_ticket_00,SELECT_BY_TICKET,MODE_TRADES))
    {
        IfGap_SELLLevel_00AlreadyExe = false;
    }
    if (IfGap_SELLLevel_00AlreadyExe == false)
    {
        IfGap_SELLLevel_00AlreadyExe = true;
        IfGap_SELLLevel_00();  
    }
}


void IfGap_SELLLevel_00()
{
    if (OrderSelect(FirstRunSell_ticket_00,SELECT_BY_TICKET,MODE_TRADES)) 
    {
        if (OrderSymbol() == Symbol() && OrderMagicNumber() == SELL_Magic01)
        {
            if ((Gap_Level_00 < 0 && (OrderType() == OP_SELL && OrderOpenPrice() - Bid < Gap_Level_00*PipValue*Point))
             || (Gap_Level_00 > 0 && (OrderType() == OP_SELL && OrderOpenPrice() - Bid > Gap_Level_00*PipValue*Point)))
            {
                SellOrderModifyLevel_00();
                
            }
        }
    }
    
    
}

void SellOrderModifyLevel_00()
{
    for (int i=OrdersTotal()-1; i >= 0; i--)
    if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES))
    {
        if (OrderType() == OP_SELL && OrderSymbol() == Symbol() && OrderMagicNumber() == SELL_Magic01) 
        { 
            double Level_00_SL = Bid + Stoploss_Level_00*PipValue*Point;
            if (Stoploss_Level_00 == 0) Level_00_SL = 0;
            double Level_00_TP = Bid - Takeprofit_Level_00*PipValue*Point;
            if (Takeprofit_Level_00 == 0) Level_00_TP = 0;
            bool ret = OrderModify(OrderTicket(), OrderOpenPrice(), Level_00_SL, Level_00_TP, 0, Modify_Order_Colour);
            if (ret == false)
            Print("OrderModify() error - ", ErrorDescription(GetLastError()));
        }
    }
    
}


Also ja, ich habe es wirklich versucht, bevor ich euch alle wieder stundenlang belästigt habe....... Ich bin wieder verloren...

Für jede Hilfe oder jeden Hinweis wäre ich dankbar ;)

Grund der Beschwerde: