Trailing Stop funktioniert nur bei Sell Order
Hallo Forum,
nachdem ich eigentlich bisher immer alle Probleme durch stöbern im Forum lösen konnte muss ich jetzt leider zum ersten Mal nach Hilfe rufen. Ich habe ein Problem bei dem EA unten welches ich nicht lösen kann.... Der EA soll auf eine kleine Zeiteinheit (5Min / 15Min) angewendet werden und das Tradesignal soll durch kreuzende EMA´s in höheren Zeiteinheiten (1h/4h) entstehen. Mit der Tradeeröffnung aus einer höheren Zeiteinheit habe ich kein Problem (zumindest glaube ich dass :) ). Es geht darum, dass der Trailing Stop nur bei Sell Orders funktioniert und bei Buy Orders den Dienst verweigert. Die Orders dürfen nur bei einem neuen Bar eröffnet und auch nur bei einem neuen Bar modifiziert werden. Es darf auch immer nur eine Order offen sein. Ich bekomme im Strategy Tester keine Error Codes ausgegeben, es kommen einfach keine Order Modify´s bei Buy Orders. Bei Sell Orders funktioniert es wie gesagt tadellos. Ich quäle mich mit dem EA schon einige Zeit und komme nicht weiter. - habe schon versucht die ganzen Doubles bei den OrderModify- und Order Send-Funktionen zu Normalisieren, ohne Erfolg. - die OrderSend hatte ich schon in einer Void-Funktion statt in zwei - ich hatte schon zwei AdjustTrail Funktionen anstatt einer - habe schon sämtliche Variationen der Parameter (StopLoss, WhenToTrail, TrailAmount, TakeProfit) durch - habe schon verschiedene Symbole durchprobiert (DAX, Währungspaare)--> immer das Selbe Kurz gesagt: ich habe schon alles was ich mir denken konnte versucht und der Code unten stellt einfach die letzte Version dar. :( Wäre für Hilfe sehr dankbar! Die Beschreibungen, die ich beim Kompilieren bekomme: (bei meinen anderen EA´s hatten diese Warnungen eigentlich nie Auswirkungen auf das Ergebnis) PHP-Code:
PHP-Code:
|
Da muss vorher die Order nach dem klassischen Schema selektiert werden:
Code:
void AdjustTrail() |
Hallo traderdoc, danke für die schnelle Antwort.
Ich verstehe nicht warum ich die Orders so auswählen muss. Es ist ja durch die Logik vorgegeben, dass nur eine Order offen sein darf. Wieso muss ich das Symbol prüfen bei nur einer Order? Das "for" habe ich mir absichtlich gespart weil ja nur eine Order möglich ist :o Ich versuche es mal mit der Änderung, Danke! |
Diese Zeile ist falsch:
if(OrderSelect(OrderTicket(),SELECT_BY_POS,MODE_TR ADES)) Wenn mit der TicketNumber gearbeitet wird, dann if(OrderSelect(OrderTicket(),SELECT_BY_TICKET)) Die TicketNumber-Ermittlung geht zwar über OrderTicket(), aber nur vorheriger Selektion der Orders. Oder man speichert bei der Öffnung der Order die TicketNumber separat ab und benutzt dann diese Variable, aber auch nur über diese Codestruktur: if(OrderSelect(TicketNumber, SELECT_BY_TICKET)) traderdoc |
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:34 Uhr. |
Powered by vBulletin® Version 3.8.5 (Deutsch)
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
SEO by vBSEO 3.6.1
Powered by vBCMS® 2.7.0 ©2002 - 2024 vbdesigns.de
Copyright ©2009 - 2023 by Expert-Advisor.com - Das Metatrader Forum