Ich brauche Hilfe, um einen kleinen Fehler zu finden. - Seite 3

 

Die lange && und || Bedingung habe ich in mehrere verkettete if-Anweisungen aufgeteilt. Ich habe auch versucht, MarketInfo(OrderSymbol() , MODE_ASK/BID) anstelle von OrderClosePrice() zu verwenden.

Ich habe auch die Vorschläge ausprobiert, die Sie mir gegeben haben, aber das Ergebnis war immer noch das gleiche.

Ich bin mir nicht sicher, ob dies die Ursache für das Problem ist oder ob es etwas anderes ist. Aber aus diesen Versuch und Irrtum ist das, was ich bemerken.

Es sieht so aus, als ob immer der unterste Teil der geöffneten Order den Stop Loss nicht verschieben wollte, selbst wenn die Bedingung erfüllt ist (die lange && und || Bedingung und die vielen verketteten if-Anweisungen, ich habe beides ausprobiert).

Die EA-Einstellungen :

Konto 1 vorher :


Konto 1 nachher :

Für dieses Konto 1 haben die 1. und 2. Order die if-Bedingung/if + && und || Bedingung nicht erfüllt, so dass der Stop Loss nicht verschoben wurde (was korrekt ist).

Die 3. Order jedoch, erfüllte bereits die Bedingung und sollte bis zur 10. nachgezogen werden, aber der Stop Loss wurde nur EINMAL verschoben. ( falsch falsch falsch )

Er hätte sich mehr als einmal bewegen müssen ( nach meiner Zählung sollten es 50,0 Pips sein, nicht 5,0 Pips ).

Konto 2 vorher :

Konto 2 nachher :

Für dieses Konto 2 hat nur der 1. Auftrag die Bedingung nicht erfüllt, so dass wieder kein Stop-Loss verschoben wird (was korrekt ist). Der 2. und 3. Auftrag erfüllte die Bedingung und HIER IST DER SCHRECKLICHE TEIL .

Der 2. Auftrag wurde genau bis zum 10. nachgezogen, der Stop Loss wurde genau 10 mal verschoben. Der Stop-Loss wurde auf 50,0 Pips vom Eröffnungskurs der jeweiligen Order verschoben (was korrekt ist).

Die 3. Order erfüllte jedoch auch die Bedingung und sollte bis zur 3. nachziehen, aber auch hier wurde der Stop Loss nur EINMAL verschoben ( wieder falsch :( ).

Haben Sie alle bemerken, dass beide des Kontos, wo die Trailing-Teil nicht richtig funktioniert ist bei der letzten Bestellung?

Wenn der USDJPY funktionieren kann, sollte er auch auf alle anderen Paare angewendet werden können. Ich bin mir nicht sicher, was ich damit machen soll.

Ich benutze eine Rückwärtszählung für die Schleife, die ich gelesen habe, wo RaptorUK gelehrt sollte gut sein, obwohl . Rückwärtszählen sollte auch nicht das Problem sein .

Die Registerkarte Experten hat auch keine Fehler angezeigt ....

@.@ T_T

 
Sind Sie sicher, dass der Preis nicht zurückgehen und stoppen Sie es aus nach dem 1.
 
Verzeihung, ich verstehe nicht ganz, was Sie meinen ... Welchen Preis meinen Sie ? Stoppen Sie es nach dem 1. Trail aus ?
 
Jetzt verstehe ich, was Sie meinen. Ich habe die Handelsergebnisse beim ersten Mal nicht richtig gelesen.
 
SDC:
Jetzt verstehe ich, was Sie meinen. Ich habe die Handelsergebnisse beim ersten Mal nicht richtig gelesen.
Ich habe immer noch keine Ahnung, was daran falsch ist .... Haben Sie eine Idee, wo ich falsch lag?
 
      if ( ( OrderStopLoss() == 0 ) || (OrderStopLoss() != 0 && OrderStopLoss() <= OrderOpenPrice() ) || ( OrderStopLoss() < ( OrderOpenPrice() + ( TrailingStop * Figure ) ) ) )
                              {
 

Ich habe es versucht, aber es ist immer noch dasselbe: ....

Ich habe es viele Male versucht, es ist immer noch die letzte Bestellung, die nicht richtig geändert wurde .... Verursacht die Countdown-Schleife dieses Problem? Ich glaube nicht, aber ich weiß nicht, warum es nicht richtig funktioniert ...

 

juniorlcq:

Die Abwärtszählung in der Schleife verursacht dieses Problem?


es spielt keine Rolle, ob Sie aufwärts oder abwärts zählen (Trailing Stoploss)

Wenn Sie einen Handel löschen oder schließen, müssen Sie abwärts zählen.

 

Ich habe auch versucht, aufwärts zu zählen, immer noch das gleiche Problem.

Ist es die 2. for-Schleife, die den Auftrag bereits geändert hat und ich musste erneut auswählen?

Zuerst habe ich die Bestellung ausgewählt, und in der 2. for-Schleife wurde die Bedingung erfüllt und die Bestellung geändert. Muss ich wieder neu auswählen?

 

OrderSelect

Die Funktion OrderSelect() kopiert Orderdaten in die Programmumgebung und alle weiteren Aufrufe von OrderClosePrice(), OrderCloseTime(), OrderComment(), OrderCommission(), OrderExpiration(), OrderLots(), OrderMagicNumber(), OrderOpenPrice(), OrderOpenTime(), OrderPrint(), OrderProfit(), OrderStopLoss(), OrderSwap(), OrderSymbol(), OrderTakeProfit(), OrderTicket(), OrderType() Funktionen geben die zuvor kopierten Daten zurück. Das bedeutet, dass sich in einigen Fällen die Orderdetails (Eröffnungskurs, SL/TP-Level oder Verfallsdatum) ändern können und die Daten nicht mehr aktuell sind. Es wird dringend empfohlen, den OrderSelect()-Befehl aufzurufen, bevor Sie die Auftragsdaten anfordern.