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: 43661
Benutzer: 7.220
Aktive Benutzer: 81
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 7 Stunden
- JosephTK
vor 2 Tagen
- Hopfen&Mal...
vor 3 Tagen
- frankmicha...
vor einer Woche
- DFeck
vor einer Woche
- bb1107

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

Empfehlungen

Like Tree2Likes
Thema geschlossen
 
Themen-Optionen Thema durchsuchen Ansicht
  #1 (permalink)  
Alt 06.01.14
Mitglied
 
Registriert seit: Apr 2013
Beiträge: 45
Tycoon befindet sich auf einem aufstrebenden Ast
Unhappy Stecke mit meiner Exitstrategie fest!!!

Guten Abend Leute...
ich bin gerade dabei ein EA zu Programmieren der mehrere Strategien fährt.Klappt auch alles hervorragend bislang.
Ich stecke bloss bei meiner Exitstrategie fest.Ich hatte früher etwas ähnliches schon einmal gepostet, nur diesmal geht die Sache etwas tiefer.
Ich möchte nach gewisser Zeit abfragen ob meine Position im Plus ist. Ist dies nicht der Fall, möchte ich eine halbe Position schliessen.

Hier ein Ausschnitt aus meiner Schleife:


if(OrderOpenTime() <=OrderOpenTime()+ PERIOD_H1*3*3600 && OrderOpenPrice() <= Ask )
{
OrderClose(OrderTicket(),Lots/2,Ask,2,Red);
}

Nach 3 Stunden soll die Abfrage kommen ob sich etwas tut.Das Problem ist...es wird eine halbe Position geschlossen aber unmittelbar darauf wird gleich wieder zugekauft.

Vielleicht habt ihr nen kleinen Gedankenschubser für mich...
Danke im voraus schon einmal!!!
  #2 (permalink)  
Alt 06.01.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

Abfrage bspw. so:
Code:
if ((TimeCurrent() - OrderOpenTime()) >= (3 * 3600))
OrderClose (hier für BUY order):

Code:
OrderClose(OrderTicket(),OrderLots()/2,MarketInfo(OrderSymbol(),MODE_BID),9999,CLR_NONE);
Ich weiß nicht wie hoch die Wahrscheinlichkeit für das Auftreten von Problemen bei der Orderschließung sind, aber es schadet nicht die Lotgröße zu normalisieren, also anstelle von "OrderLots()/2" schreiben
"NormalizeLots(OrderSymbol(),OrderLots()/2)"

funktion:

Code:
//see also the original function by WHRoeder, http://forum.mql4.com/45425#564188, fxdaytrader
double NormalizeLots(string symbol, double lots) {
  if (MathAbs(lots)==0.0) return(0.0); //just in case ... otherwise it may happen that after rounding 0.0 the result is >0 and we have got a problem, fxdaytrader
  double ls = MarketInfo(symbol,MODE_LOTSTEP);
  lots = MathMin(MarketInfo(symbol,MODE_MAXLOT),MathMax(MarketInfo(symbol,MODE_MINLOT),lots)); //check if lots >= min. lots && <= max. lots, fxdaytrader
return(MathRound(lots/ls)*ls);
}
Warum Dein EA direkt wieder zukauft weiß ich nicht, dazu müsstest Du die entsprechenden codezeilen hier posten.

Ob sich eine Position im + oder - befindet kannst Du auch ermitteln durch Abfrage:

Code:
if ((OrderProfit()+OrderSwap()+OrderCommission())>0.0)
, ist es größer 0.0 dann ist die Position im +, ...
traderdoc likes this.
  #3 (permalink)  
Alt 06.01.14
Elite Mitglied
 
Registriert seit: Apr 2011
Beiträge: 2.733
traderdoc befindet sich auf einem aufstrebenden Ast
Standard

Den Rest des Codes sieht man nicht. Damit wirds dann a bisserl kompliziert.

Beim Halbieren der Lotgröße der Order wird immer erst die gesamte Order geschlossen und danach wieder die Hälfte geöffnet.
Falls Du also das meinst, dann ist das völlig in Ordnung.
Solltest Du ein anderes Öffnen meinen, dann muß es am Code liegen, den wir nicht sehen.

Wobei ich mich die ganze Zeit frage, führt
if(OrderOpenTime() <=OrderOpenTime()+ PERIOD_H1*3*3600 && OrderOpenPrice() <= Ask )
nicht sofort nach dem Öffnen der Order zum true der Abfrage?
Erstens ist OrderOpenTime() immer kleiner als OrderOpenTime()+ PERIOD_H1*3*3600
und zweitens handelt es sich hier um eine SellOrder, die mit dem Bid geöffnet wird. Damit ist der OrderOpenPrice() der Bidkurs, der bei der Öffnung immer unter, also kleiner als der darüberliegende Ask-Kurs ist.

Oder brauch ich langsam ne Brille?

traderdoc
  #4 (permalink)  
Alt 06.01.14
Mitglied
 
Registriert seit: Apr 2013
Beiträge: 45
Tycoon befindet sich auf einem aufstrebenden Ast
Standard

Will nicht falsch verstanden werden...Habe euch mal das Teil angehangen...
Ab Zeile 134...
Vielleicht könnt ihr ja mal nen Blick drauf schmeissen!
Habe meine oben beschriebene Problematik erst in der BUY Situation eingebaut...also bitte nicht wundern.
Angehängte Dateien
Dateityp: mq4 Pinbar_CCI.mq4 (6,9 KB, 8x aufgerufen)
  #5 (permalink)  
Alt 06.01.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

Ohne mir den code angeschaut zu haben:
order öffnen und order schließen sind zwei Paar Schuhe.

Dem EA ist es salopp ausgedrückt völlig schnuppe ob Du einige Sekunden oder die bar vorher Deine Order zur Hälfte geschlossen hast - Denn sobald ein buy oder sell signal vorliegt dann kauft/verkauft er.

Dir könnte eine Prüfung helfen: Handele nur sofern noch keine order (ggf. nur prüfen ob es derselbe ordertyp ist) offen ist.
  #6 (permalink)  
Alt 06.01.14
Mitglied
 
Registriert seit: Apr 2013
Beiträge: 45
Tycoon befindet sich auf einem aufstrebenden Ast
Standard

mmh....kann dir leider nicht ganz folgen.Wenn das Signal noch besteht,dann ist es klar das eine Order eröffnet wird. Der Kontoauszug beim Backtesting gibt auch sehr merkwürdige Zahlen von sich bei der Teilschließung.
Wird wohl wieder ne lange Nacht vorm Rechner!!!!!!!
  #7 (permalink)  
Alt 06.01.14
Elite Mitglied
 
Registriert seit: Apr 2011
Beiträge: 2.733
traderdoc befindet sich auf einem aufstrebenden Ast
Standard

Also erstmal sollte von Dir geklärt werden, wann der EA die Order schließt und v.a. wann genau die Hälfte wieder "dazugekauft" wird.

Ich denke fest, dass Du das Kaufen meinst, welches ich beschrieben hatte. Das wäre völlig normal und kann auch nicht unterbunden werden.

Unberührt von dieser Tatsache bleibt Deine if-Abfrage funktionell falsch.

traderdoc
  #8 (permalink)  
Alt 06.01.14
Mitglied
 
Registriert seit: Apr 2013
Beiträge: 45
Tycoon befindet sich auf einem aufstrebenden Ast
Standard

Die andere hälfte soll ja gerade nicht mehr zugekauft werden.
Ich werd nochmal step by step alles durchgehen....
Ich bedanke mich trotzdem bei euch für eure Mühe....
  #9 (permalink)  
Alt 06.01.14
Mitglied
 
Registriert seit: Apr 2013
Beiträge: 45
Tycoon befindet sich auf einem aufstrebenden Ast
Standard

Hab jetzt nochmal geschaut! Er kauft nicht zu, sondern er halbiert dann halt jedesmal pö a pö runter bis auf Null.

Mal sehen wie ich das Problem lösen kann...

  #10 (permalink)  
Alt 06.01.14
Elite Mitglied
 
Registriert seit: Apr 2011
Beiträge: 2.733
traderdoc befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Zitat von Tycoon Beitrag anzeigen
Hab jetzt nochmal geschaut! Er kauft nicht zu, sondern er halbiert dann halt jedesmal pö a pö runter bis auf Null.

Mal sehen wie ich das Problem lösen kann...

Also diese Logik kann ich nun überhaupt nicht mehr nachvollziehen.
Erst verdoppelt er, dann doch nicht und er halbiert bis 0. Ja wie sollen wir denn da die richtigen Antworten geben.

Das er ständig halbiert ist auch deshalb von der Programmlogik her richtig, weil die Zeile
if(OrderOpenTime() <=OrderOpenTime()+ PERIOD_H1*3*3600 && OrderOpenPrice() <= Ask )

Murks ist und den EA jedesmal anweist, eben eine weitere Hälfte der jeweiligen Hälfte zu schließen. (sofern OrderOpenPrice() <= Ask ist), denn der vordere Teil ist immer true!

traderdoc
fxdaytrader likes this.
Thema geschlossen

Lesezeichen

Stichworte
exitstrategie, halbe position, halbe position schliessen, mql4, position schliessen, programmierung, programmierung metatrader

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 06:01 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.
-----------------------------------------------------------------------------------------------------------------------------