Metatrader Forum | Forex Expert-Advisor | Broker & Forex Tools
Zurück   Metatrader Forum | Forex Expert-Advisor | Broker & Forex Tools > Metatrader 4 > Programmierung MQL4
Startseite Registrieren Hilfe Community Kalender Heutige Beiträge Suchen

Programmierung MQL4 Hier gehts rund ums Programmieren in MQL4.

Login
Benutzername:
Kennwort:


Statistik
Themen: 4978
Beiträge: 43260
Benutzer: 7.223
Aktive Benutzer: 73
Links: 84
Wir begrüßen unseren neuesten Benutzer: TS_6
Mit 2.475 Benutzern waren die meisten Benutzer gleichzeitig online (16.01.20 um 22:38).
Neue Benutzer:
vor 2 Stunden
- TS_6
vor 2 Tagen
- Mane
vor 2 Wochen
- AlbertZiz
vor 2 Wochen
- michak
vor 2 Wochen
- Amateur

Onlineuser
'Wer ist online' anzeigen Benutzer: 0
Gäste: 347
Gesamt: 347
Team: 0
Team:  
Benutzer:  
Freunde anzeigen

Empfehlungen

Thema geschlossen
 
Themen-Optionen Thema durchsuchen Ansicht
  #1 (permalink)  
Alt 29.12.20
Mitglied
 
Registriert seit: Nov 2020
Beiträge: 42
berlin befindet sich auf einem aufstrebenden Ast
Standard 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;
}
  #2 (permalink)  
Alt 29.12.20
Mitglied
 
Registriert seit: Nov 2020
Beiträge: 42
berlin befindet sich auf einem aufstrebenden Ast
Angry 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...
  #3 (permalink)  
Alt 30.12.20
Mitglied
 
Registriert seit: Nov 2020
Beiträge: 42
berlin befindet sich auf einem aufstrebenden Ast
Standard

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
  #4 (permalink)  
Alt 30.12.20
Elite Mitglied
 
Registriert seit: Apr 2011
Beiträge: 2.735
traderdoc befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Zitat von berlin Beitrag anzeigen
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;
}
Wahrscheinlich wurde orderTicket an der falsche Stelle deklariert. Wenn das lokal erfolgte ist beim nächsten else if orderTicket = 0.

traderdoc
__________________
Ich erfülle Euch gern Eure EA-, Indikator- und Script-Programmierungswünsche auf Honorarbasis.
  #5 (permalink)  
Alt 30.12.20
Mitglied
 
Registriert seit: Nov 2020
Beiträge: 42
berlin befindet sich auf einem aufstrebenden Ast
Standard

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
  #6 (permalink)  
Alt 30.12.20
Mitglied
 
Registriert seit: Nov 2020
Beiträge: 42
berlin befindet sich auf einem aufstrebenden Ast
Standard 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
Angehängte Dateien
Dateityp: mq4 OrderClose error 4108.mq4 (9,7 KB, 2x aufgerufen)
  #7 (permalink)  
Alt 30.12.20
Mitglied
 
Registriert seit: Nov 2020
Beiträge: 42
berlin befindet sich auf einem aufstrebenden Ast
Standard

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;
  #8 (permalink)  
Alt 30.12.20
Mitglied
 
Registriert seit: Nov 2020
Beiträge: 42
berlin befindet sich auf einem aufstrebenden Ast
Standard 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....
Angehängte Grafiken
Dateityp: png Bildschirmfoto 2020-12-30 um 19.27.39.png (12,2 KB, 2x aufgerufen)
Thema geschlossen

Lesezeichen


Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are aus
Pingbacks are aus
Refbacks are aus




Alle Zeitangaben in WEZ +2. Es ist jetzt 13:48 Uhr.





Suchmaschine - Reisen - Wavesnode - Facebook Forum - Spam Firewall
-----------------------------------------------------------------------------------------------------------------------------
Powered by vBulletin® Version 3.8.5 (Deutsch)
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Powered by vBCMS® 2.7.0 ©2002 - 2024 vbdesigns.de
SEO by vBSEO 3.6.1
Copyright ©2009 - 2023 by Expert-Advisor.com - Das Metatrader Forum
MetaTrader bzw. MetaTrader 4 und MetaTrader 5 sind eingetragene Marken der MetaQuotes Software Corp.
-----------------------------------------------------------------------------------------------------------------------------