|
Programmierung MQL4 Hier gehts rund ums Programmieren in MQL4. |
|
Themen-Optionen | Thema durchsuchen | Ansicht |
|
|||
OrderClose error 4051
moin zusammen,
ich nutze zum testen von indikatoren meist die selbe code struktur. jetzt ist der bollinger in kombi mit dem rsi dran. ich habe verschiedene dinge probiert und komme dennoch nicht weiter. er eröffnet einen trade, schliesst ihn aber nicht mehr. bei long und short (einzeln getestet) in der execute long funktion wird das ticket zurückgegeben, wonach dann in der else if anweisung gefragt wird. verstehe einfach nicht warum er nicht schliesst.hab den code verglichen mit den anderen indikatoren die ich getestet hab und konnte keine auffälligkeiten feststellen. ich danke für erfolgreiche hinweise zur ergreifung des fehlers lieben gruss, berlin hier ist der Teil der checkt ob ein long in frage kommt: if(IsTradingAllowed()) if(iClose(Symbol(),TimeframeBB,0) > bbLower1){ if(iClose(Symbol(),TimeframeBB,2) < bbLower2 && rsi2 < RSIuntenLong && iClose(Symbol(),TimeframeBB,1) < bbUpper1 && rsi1 < RSIuntenLong) if(orderTicket <= 0){ orderTicket = executeLong(); } } else if(iClose(Symbol(),TimeframeBB,0) >= bbUpper0){ if(OrderSelect(orderTicket,SELECT_BY_TICKET) == true){ if(OrderType() == OP_BUY){ bool res = OrderClose(OrderTicket(),OrderLots(),Ask,10000,clr NONE); orderTicket = 0; } } } und hier der execute long teil. int executeLong(){ double entry = Ask; //double tp = entry + TP * Point; double sl =entry - SL * Point; int ticket; ticket = OrderSend(Symbol(),OP_BUY,Lots,Ask,10000,sl,0,Komm entar,Magic,0,clrNONE); return ticket; } |
|
|||
mit tp und sl
lasse ich den else if teil weg (der soll ja beim gegensignal schliessen). und ich verwende stattdessen den tp und sl. funktioniert es...
mh... |
|
|||
hab jetzt versucht anstatt iClose den Ask kurs als signal zeitpunkt zu wählen:
@traderdoc @trading-indikator könnt ihr mir bitte sagen woran das liegt? vielen dank und lieben gruss, berlin |
|
|||
Zitat:
traderdoc
__________________
Ich erfülle Euch gern Eure EA-, Indikator- und Script-Programmierungswünsche auf Honorarbasis. |
|
|||
vielen dank traderdoc,
eigentlich hab ich aber am orderTicket befehl nicht geändert. ich fange nochmal bei null an und füge erstmal nur einen bezug auf den indikator hinzu. ich melde ich |
|
|||
jetzt ist der error bei 4108
hab ihn jetzt mal aufs minimum reduziert um dem fehler näher zu kommen.
er eröffnet und schliesst jetzt auch so wie es angedacht ist. nur taucht im journal jetzt der error 4108 auf. ich habe jetzt versucht orderTicket mit shortOrder oder longOrder auszutauschen. orderTicket an verschiedenen stellen weggenommen usw. selbst wenn ich den logischen ablauf durchgehe finde ich nicht die stelle wo der fehler sitzt. in den anhang hab ich jetzt mal den code in den anhang reingepackt. vielleicht hilft es euch ja den übeltäter aufzuspüren. vielen dank und lieben gruss, berlin |
|
|||
selbst wenn ich folgende zeilen direkt am anfang der on tick funktion platziere. ändert es nichts an dem fehler. die zeilen sind eigentlich auch nicht nötig da ja der code ansich an jeder stelle mit dem orderticket arbeitet um es auf 0 oder >0 zu setzen
if(OrderSelect(longOrder,SELECT_BY_TICKET) && OrderCloseTime() > 0) longOrder = 0; if(OrderSelect(shortOrder,SELECT_BY_TICKET) && OrderCloseTime() > 0) shortOrder = 0; |
|
|||
tester mit blick aufs journal
ich wollte mal schauen bei welchem trade der fehler zuerst auftaucht.
für mich erstaunlich ist das er vom ersten trade an auftaucht. zu dem zeitpunkt sollte doch das orderticket eigentlich so und so auf 0 sein. mysteriös.... |
Lesezeichen |
|
|