Metatrader Forum | Forex Expert-Advisor | Broker & Forex Tools
Zurück   Metatrader Forum | Forex Expert-Advisor | Broker & Forex Tools > Metatrader 4 > Programmierung MQL4

Programmierung MQL4 Hier gehts rund ums Programmieren in MQL4.

Login
Benutzername:
Kennwort:


Statistik
Themen: 4973
Beiträge: 43257
Benutzer: 7.220
Aktive Benutzer: 82
Links: 84
Wir begrüßen unseren neuesten Benutzer: JosephTK
Mit 2.475 Benutzern waren die meisten Benutzer gleichzeitig online (16.01.20 um 22:38).
Neue Benutzer:
vor einer Stunde
- JosephTK
vor 2 Tagen
- Hopfen&Mal...
vor 2 Tagen
- frankmicha...
vor einer Woche
- DFeck
vor einer Woche
- bb1107

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

Empfehlungen

Thema geschlossen
 
Themen-Optionen Thema durchsuchen Ansicht
  #1 (permalink)  
Alt 27.10.14
Neues Mitglied
 
Registriert seit: Oct 2014
Beiträge: 11
schmimanu befindet sich auf einem aufstrebenden Ast
Question Hilfe, EA arbeitet ca. 45 Min.,dann streikt er!!!

Hallo an die Community!

ich habe ein 2 ziemliche Probleme mit meinem EA:

1. Er arbeitet ca. 45 Minuten und stoppt dann . Ohne Zeitbegrenzung läuft alles wie geschmiert.

2. Wenn der TP in der Periode, in der die Position eröffnet wurde, die Position schließt, wird sofort eine neue Position eröffnet,..., bis eine neue Perioge beginnt. (Ich hoffe, dass ist verständlich?!). Das ist bei Verlusttrades ein Problem!!!

Der EA läuft auf dem DAX, M1.

Der Code ist im Anhang. Ich würde sehr freuen, wenn mir jemand helfen könnte.

Vielen Dank schon mal und viele Grüße Manuela.
Angehängte Dateien
Dateityp: mq4 PSARgleichePeriode.mq4 (5,8 KB, 12x aufgerufen)
  #2 (permalink)  
Alt 27.10.14
Elite Mitglied
 
Registriert seit: Apr 2011
Beiträge: 2.733
traderdoc befindet sich auf einem aufstrebenden Ast
Standard

if(SymbolInfoDouble(Symbol(),SYMBOL_SESSION_VOLUME )==(GewinnMax*Point)) GewinnErreicht=true;
Diese Zeile solltest Du mal ganz genau erklären.

if((NeuePeriodeBegonnen==false)||(GewinnErreicht== true)) {
int Total=OrdersTotal();
bool AllesAus=OrderClose(Total,Handelslots,OrderProfit( ),5,Green);
So darf in der Close-Funktion nie!!!! die Anzahl der offenen Orders + evtl. PendingOrders erscheinen. Ist z.B. keine Order offen und da jetzt Hour = 18 ist, wäre auch NeuePeriodeBegonnen = false, spingt der EA in diese OrderClose-Funktion mit Total = 0. Diese Order existiert aber nie!! D.h. Fehler: invalid ticket for OrderClose function!
Es muß außerdem die Ticketnummer benutzt werden und die Anzahl der Orders!

LongOrder = OrderSend(Symbol(),OP_BUY,Handelslots,Ask,1,0,0,"M AXing Long",MagicNumber,0,Green);
Hier wird eine Integerzahl zurückgegeben, die nur im Strategietester 1 sein könnte. Ansonsten ist das meist eine 6- oder 7-stellige Ticketnummer.
if(LongOrder==1)break; ist somit so oder so überflüssig.
Dito für ShortOrder!
Die Slippage von 1 könnte ggf. zu klein sein, damit bliebe ggf. der EA in der while-Schleife hängen.

double TakeProfit = NormalizeDouble(OrderOpenPrice()*(1+(TP_prozent/100)),Digits);
bool OrderAngepasst = OrderModify(OrderTicket(),OrderOpenPrice(),OrderSt opLoss(),TakeProfit,0,Orange);
Sollte Dein Broker die Dax-Werte mit einer Kommastelle liefern, dann würde nahezu ständig ein Fehler wegen invalid SL bzw. TP auftreten, denn in der regel liefert der Broker Daten als 9120 oder 9120,0 0der 9120,5. Als SL oder TP werden aber sicherlich häufig Werte errechnet, die als Nachkommastelle keine 0 oder 5 haben und das akzeptiert der Broker nicht und verweigert das OrderModify().

Soweit beim Überfliegen. Das ist noch einiges zu tun!

Ein ernstgemeinter Tip! Nie wieder einen Spaghetti-Code schreiben. Schau Dir in anderen Beispielen an, wie funktional gecodet wird. Das liest und programmiert sich einfacher. Die Länge Deines Codes ist verhältnismäßig kurz. Über mehrere DIN A4-Seiten sieht keiner mehr durch.

Auf die Schnelle im Startegietester läuft der EA über mehrere Tage.

Viel Erfolg!

traderdoc
__________________
Ich erfülle Euch gern Eure EA-, Indikator- und Script-Programmierungswünsche auf Honorarbasis.
  #3 (permalink)  
Alt 27.10.14
Benutzerbild von fxdaytrader
Premium Mitglied
 
Registriert seit: Dec 2013
Ort: hier und dort
Beiträge: 433
fxdaytrader befindet sich auf einem aufstrebenden Ast
Standard

if((Hour()==HandelsBeginn)&&(Hour()!=HandelsEnde))

Das heißt: Wenn aktuelle Stunde GENAU GLEICH StartStunde UND aktuelle Stunde UNGLEICH EndStunde

Mit anderen Worten: Eine Stunde später (aber noch vor der EndStunde) ist die Bedingung natürlich nicht mehr true, also wird auch nicht mehr gearbeitet. Ist wie ABM - ArbeitBisMittag, lol ...

möglicherweise hilft das:
if((Hour()>=HandelsBeginn)&&(Hour()<=HandelsEnde))

Solange die Bedingung für das öffnen der Position true ist wird dann auch eine neue Posi eröffnet. Du müsstest da eine Begrenzung einbauen oder was auch immer.
__________________
krank im Kopf aber sonst ganz nett
build 509 mql4 editor download
  #4 (permalink)  
Alt 27.10.14
Benutzerbild von fxdaytrader
Premium Mitglied
 
Registriert seit: Dec 2013
Ort: hier und dort
Beiträge: 433
fxdaytrader befindet sich auf einem aufstrebenden Ast
Standard

Der doc war schneller.

solltest du professionelle Hilfe beim Erstellen des EA in Anspruch nehmen wollen (honorarpflichtig) dann kannst Du Dich auch per PM direkt an den Doc wenden.
Erspart viele aus Frust geleerte Pullen Himbeergeist, Bienenstich, usw.

edit:
Zitat:
Zitat von traderdoc Beitrag anzeigen
double TakeProfit = NormalizeDouble(OrderOpenPrice()*(1+(TP_prozent/100)),Digits);
bool OrderAngepasst = OrderModify(OrderTicket(),OrderOpenPrice(),OrderSt opLoss(),TakeProfit,0,Orange);
Sollte Dein Broker die Dax-Werte mit einer Kommastelle liefern, dann würde nahezu ständig ein Fehler wegen invalid SL bzw. TP auftreten, denn in der regel liefert der Broker Daten als 9120 oder 9120,0 0der 9120,5. Als SL oder TP werden aber sicherlich häufig Werte errechnet, die als Nachkommastelle keine 0 oder 5 haben und das akzeptiert der Broker nicht und verweigert das OrderModify().
Ja, das wird häufig vergessen (ich nehme mich da nicht aus) und ist wichtig falls der EA eben nicht nur auf fx-pairs laufen soll. Ich meine der doc hatte da mal eine Lösung geposted, weiß nur nicht mehr wo/in welchem Forum ...
__________________
krank im Kopf aber sonst ganz nett
build 509 mql4 editor download
  #5 (permalink)  
Alt 27.10.14
Elite Mitglied
 
Registriert seit: Apr 2011
Beiträge: 2.733
traderdoc befindet sich auf einem aufstrebenden Ast
Standard

Noch einmal dazu:

2. Wenn der TP in der Periode, in der die Position eröffnet wurde, die Position schließt, wird sofort eine neue Position eröffnet,..., bis eine neue Periode beginnt. (Ich hoffe, dass ist verständlich?!). Das ist bei Verlusttrades ein Problem!!!

Wie kann ein Trade, der im TP geschlossen, wurde ein Verlusttrade sein? Oder lese ich was falsch?
Das sofortige Neuöffnen liegt am noch bestehenden aktuellen LongSignal.

traderdoc

PS: fx, ich könnte nach dem Spaghetti jetzt wirklich einen gebrauchen, hicks!
__________________
Ich erfülle Euch gern Eure EA-, Indikator- und Script-Programmierungswünsche auf Honorarbasis.
  #6 (permalink)  
Alt 27.10.14
Neues Mitglied
 
Registriert seit: Oct 2014
Beiträge: 11
schmimanu befindet sich auf einem aufstrebenden Ast
Standard

Hallo traderdoc und fxdaytrader!

Das nenne ich schnelle Hilfe und Beantwortung:-)

Spaghetti-Code - schöner Name! Ja, ich gelobe Besserung und werde mich weiter in die Materie vertiefen.

Für professionelle Hilfe bin ich noch nicht verzweifelt genug. Aber bevor ich mich sinnlos mit Himbeergeist und Bienenstich vergifte, melde ich mich.

Das Grundgerüst für den EA war eine Tutorial-Reihe auf Youtube und ich war für den Anfang froh, eine Anleitung auf deutsch gefunden zu haben.

fxdaytrader, Du hast recht - da lag mein gedanklicher Fehler: >= anstatt ==.

Und traderdoc: die Zeile if(SymbolInfoDouble(Symbol(),SYMBOL_SESSION_VOLUME )==(GewinnMax*Point)) GewinnErreicht=true;
war mein verzweifelter Versuch, einen Tagesgewinn zu programmieren und bei einer bestimmten Gewinnsumme den EA zu stoppen. Habe ich schon rausgenommen. Habe selber gemerkt, dass das Müll ist.

Und
"2. Wenn der TP in der Periode, in der die Position eröffnet wurde, die Position schließt, wird sofort eine neue Position eröffnet,..., bis eine neue Periode beginnt. (Ich hoffe, dass ist verständlich?!). Das ist bei Verlusttrades ein Problem!!!"
So ein Satz entsteht, wenn ich beim schreiben abgelenkt werde. Sorry, in dem Zusammenhang muss es natürlich SL heißen. Obwohl der Fehler sowohl beim SL, als auch beim TP entsteht.

So, Euch beiden, habt erst man vielen Dank für eure schnelle und lustige Hilfe! Falls ich weitere Hilfe brauche, werde ich mich melden.

Viele Grüße - Manuela.

P.S.: Was heißt eigentlich "per PM"
  #7 (permalink)  
Alt 27.10.14
Elite Mitglied
 
Registriert seit: Apr 2011
Beiträge: 2.733
traderdoc befindet sich auf einem aufstrebenden Ast
Standard

PM - persönliche Mitteilung.
__________________
Ich erfülle Euch gern Eure EA-, Indikator- und Script-Programmierungswünsche auf Honorarbasis.
  #8 (permalink)  
Alt 27.10.14
Neues Mitglied
 
Registriert seit: Oct 2014
Beiträge: 11
schmimanu befindet sich auf einem aufstrebenden Ast
Standard

Ah, danke!

Gruß - Manuela.
Thema geschlossen

Lesezeichen

Stichworte
45 minuten, ea, ea streikt, expert advisor, expert advisor geht nicht, mql4, programmierung, programmierung metatarder, zeitbegrenzung

Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

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 +1. Es ist jetzt 23:17 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.
-----------------------------------------------------------------------------------------------------------------------------