OrderModify Error
Ich brauch mal wieder Hilfe. So weit klappt alles bei meinem EA aber er will auf Teufel kommt raus nicht den SL nachziehen. Ich hab dazu nochmal einen eigenen kleinen EA Programmiert um es besser zu verstehen aber ich verstehe nicht warum es ein Error gibt.
Code:
int LongTicket; |
Wenn ich mir deinen Code so ansehe, denke ich, bei dir gibt es noch ein wenig Verständnissprobleme (Grundlagen fehlen).
Gehen wir mal kurz durch: Code:
int start() Bedenke das dein Code bei JEDEM Tick ausgeführt wird. Vieles im Code ist nicht bei jedem Tick sinnvoll. Du solltest Bedingungen nutzen! Code:
int bs_array[4] = {1,2,3,4};
Code:
double ord = OrderSelect(LongTicket,SELECT_BY_TICKET);
Code:
if(OrderCloseTime() != 0 || LongTicket == 0)
Code:
if(OrderSelect(OrderTicket(),SELECT_BY_TICKET)==true)
|
Ich hab mir mal paar Anleitungen angeschaut und mal denn Code verbessert.
Code:
int LongTicket = 0; |
Bitte gründlich durchlesen, dann findest du auch den Fehler.
Manche Sachen habe ich schon in meinem vorherigen Post erwähnt. Diese hast du aber nicht korrigiert! Code:
double StopLossLevel; Code:
double StopLossLevel = Bid - StopLoss*Point; Code:
bool Ord = OrderSelect(LongTicket,SELECT_BY_TICKET);
Code:
if(OrderCloseTime() != 0 || LongTicket == 0) === === === === === === === === === === === === Code:
if(Volume[0]==1)
|
Ich verstehe das mit LongTicket noch nicht so ganz also LongTicket =0; ist ja falsch. Aber wie weise ich ihm denn einen Wert zu? Ich möchte ja genau dieses Ticket aufrufen.
Fangen wir mal ganz von vorne an mir geht es ja in erster Linie darum das nur 1 Order eröffnet wird. Ich hab jetzt gesehen das kann ich auch mit Code:
If(OrdersTotal()==0) So dann schaut er ob die Bedienung stimmt und ist so lange in einer schleife bis LongTicket größer als 0 ist also 1. Code:
if(Open[2] < Close[2] && Open[1] < Close[1] ) |
Zitat:
Code:
int LongTicket = 0; was du mit "LongTicket" machen musst (obwohl DU sie ja erstellt hast.). Der Grund, warum dein Code fehlerhaft ist, ist ja der, dass du "LongTicket" eben KEINEN WERT gibst. Einen echten Wert (eben eine ECHTE Ticketnummer) erhält deine Variable "LongTicket" in dieser Zeile: Code:
LongTicket = OrderSend(Symbol(),OP_BUY,1.0,Ask,0,StopLossLevel,0.0,"Buy Order"); Code:
bool Ord = OrderSelect(LongTicket,SELECT_BY_TICKET); Zitat:
Code:
LongTicket = OrderSend(Symbol(),OP_BUY,1.0,Ask,0,StopLossLevel,0.0,"Buy Order"); Deine Frage lässt leider wirklich darauf schließen, das der Code 1-1 von extern übernommen wurde, und du wirklich keine Ahnung davon hast, was da eingentlich passiert! Zitat:
Es nur auf eine Order zu beschränken ist ja nicht das Problem, welches wir hier die ganze Zeit durchgehen! Zitat:
Zitat:
|
Ach jetzt hab ich es verstanden. Nein ein bisschen Ahnung hab ich schon bin zwar noch Anfänger aber immerhin. :D
Also ja im Grunde möchte ich einfach meinen Stoploss angezogen bekommen. So das wenn er den Trade eingeht ich nicht auf feste Pips angewiesen bin wie mit dem TrailingStop sonder das es Variabel ist. Immer an der letzten Korrektur soll der SL gesetzt werden. So und jetzt zu dem Code Code:
double val; |
So ich bin jetzt ein großes Stück weitergekommen. Erstmal will ich verstehen wie ich ganz genau mit OrderModify umgehen muss deswegen hab ich das alles mal anders gestaltet. Mein Code sieht jetzt folgendermaßen aus:
Code:
void OnTick() 2018.03.11 23:27:57.088 2017.01.03 09:00:27 EaLong2.0 EURUSD,M15: unknown ticket 24 for OrderModify function 2018.03.11 23:27:57.088 2017.01.03 09:00:26 EaLong2.0 EURUSD,M15: Error 4108 2018.03.11 23:27:57.088 2017.01.03 09:00:26 EaLong2.0 EURUSD,M15: OrderModify error 4108 2018.03.11 23:27:57.088 2017.01.03 09:00:26 EaLong2.0 EURUSD,M15: unknown ticket 24 for OrderModify function 2018.03.11 23:27:57.088 2017.01.03 09:00:25 EaLong2.0 EURUSD,M15: Error 4108 Wo liegt jetzt genau der Fehler? |
Zitat:
Kann es sein, das du deinen Code vor dem Posten um einige Zeilen verringert hast? Falls nicht, dann hast du hier immer noch die selben Fehler: Code:
void OnTick()
|
Hey, also die Punkte habe ich verbessert jetzt funktioniert es auch besser nur kommt jetzt so bald eine Order offen ist der Fehler ERROR 1 obwohl der SL nachgezogen wird in einem Englischen Forum hat einer gemeint das passiert wenn der SL schon nachgezogen ist das Programm es aber auf die selbe ziehen will stimmt das? Sonst hab ich nicht wirklich was gefunden was genau der Fehler ist. Also der Code bis jetzt:
Code:
void OnTick() |
Alle Zeitangaben in WEZ +2. Es ist jetzt 02:14 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