Thema: Stoploss
Einzelnen Beitrag anzeigen
  #25 (permalink)  
Alt 26.06.17
next user next user ist offline
Premium Mitglied
 
Registriert seit: May 2015
Beiträge: 367
next user befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Zitat von MA-EA Beitrag anzeigen
Hat noch nie Jemand erlebt, dass ein EA, nach dem der SL benutzt wurde, wieder ne Verlust-Order öffnet, weil das Einstiegssignal noch aktuell ist?
Nein. Zum einen würde ich so einen EA nicht für mich traden lassen, zum anderen nutze ich keine EA's fürs automatische Traden.
Zitat:
Zitat von MA-EA Beitrag anzeigen
Die GDs sagen aber immer noch "Du musst long gehn", was er auch macht. Und das geht so weiter, solange der 50er über dem 100er ist. Was kann man dagegen machen?
Nicht, bzw. nicht nur auf Basis der GDe traden?
Falls doch, dann im Code entsprechend Weichen stellen, damit das von dir beschriebene nicht passiert...
Zitat:
Zitat von MA-EA Beitrag anzeigen
Die GDs sagen aber immer noch "Du musst long gehn" ...
Wenn du unbedingt anhand dieser Signale long gehen willst, dann musst du entsprechend auf solche Fehlsignale reagieren.
Oder, ums noch einfacher zu machen, du fragst die Orderhistorie nach den letzten Trades ab, ob die vor kurzem durch deinen EA gesetzt, und durch entsprechendem
"Fehlsignal" geschlossen wurden.

Ich würde es allerdings bei der Quelle angehen, deinen GD und deren Einstellungen. Vielleicht sind diese ja doch nicht so optimal für einen Trade.


Kurz noch zum Code:
Kann es sein, das der großteil der externen Variablen reine Info / Stütze / Hilfe für dich sind und keinen echten Wert im Code haben?

Code:
extern int MaxSpread=40;
Mit diesem Spread solltest du bei den verschiedenen Digits aufpassen.
===================
Bei
Code:
double OOP=OrderOpenPrice();
dürfte nichts sinnvolles rauskommen, da du keine Order selektiert hast.
===================
Code:
if (Digits<=3)PointSet=0.01;
else PointSet=0.0001;
if (Digits<=1)PointSet=1;
Ist ein bischen unglücklich gewählt, wäre so besser
Code:
if(Digits<=1)PointSet = 1;
else if(Digits<=3)PointSet = 0.01;
else PointSet = 0.0001;
===================
Code:
if (TimeFrame==0)TimeFrame=NULL;
Hmmmm...
===================
Code:
Lots=MathMax(MathMin(Lots,MarketInfo(Symbol(),MODE_MAXLOT)),MarketInfo(Symbol(),MODE_MINLOT));
Lot soll kleiner als MAXLOT, aber mindestens MINLOT sein. Dafür 4 Funktionsaufrufe und das bei jedem Tick?
===================
Code:
if(Stoploss==0.0)buy_SL=0.0;
if(Stoploss==0.0)sell_SL=0.0;
if(Takeprofit==0.0)buy_TP=0.0;
if(Takeprofit==0.0)sell_TP=0.0;
Doppelt ist nicht notwendig
Code:
if(Stoploss==0.0) {buy_SL=0.0; sell_SL=0.0;}
if(Takeprofit==0.0) {buy_TP=0.0; sell_TP=0.0;}
===================
Code:
datetime F=StrToTime(TimeToStr(TimeCurrent(), TIME_DATE) + " " + Open_Orders_From);
datetime T=StrToTime(TimeToStr(TimeCurrent(), TIME_DATE) + " " + Open_Orders_Till);
Einzelne Buchstaben als Namen sind immer bischen ... naja. Sowas ist eher in Schleifen als Counter üblich.

Bei "Start Indikatoren auslesen" sind die geschweiften Klammern eher ein optischer Block als notwendig.
Die Variable "CloseTicket" nutzt du nicht.

So, kurz mal meinen Senf gegeben
Du und andere mögen es vielleicht, aber ich finde so formatierten Code eher nicht so gut leserlich.

PS: Wieso wechselst du nicht zu der besseren beschreibung "OnTick()"?