Einzelnen Beitrag anzeigen
  #4 (permalink)  
Alt 22.01.21
traderdoc traderdoc ist offline
Elite Mitglied
 
Registriert seit: Apr 2011
Beiträge: 2.735
traderdoc befindet sich auf einem aufstrebenden Ast
Standard

Ohne den Indikator zu kennen und das Programm laufen gesehen, kann ich folgendendes kurz dazu sagen:
1. Eine Aktion findet immer nur nach Kerzenwechsel statt und dass auch nur für die Dauer genau eines Ticks und auch nur dann, wenn die Indikatorwerte nicht gleich EMPTY_VALUE entsprechen.
2. D.h. wiederum, wenn die Indikatorwerte gleich EMPTY_VALUE entsprechen, werden weder Orders geöffnet (das wäre ja noch klar), aber auch keine offenen Orders gemanaged., weil in die Funktion stopLoss() nur dann eingesprungen wird, wenn in die Funktion buyEnterTrade() bzw. sellEnterTrade() eingesprungen wird.
Und in die beiden Funktionen wird wiederum nur eingesprungen, wenn die Indikatorwerte nicht gleich EMPTY_VALUE sind.
3. Somit word es sehr häufig passieren, dass der Profit während des Kerzenaufbaus über dem errechneten TakeProfit in Währung bzw. unter dem StopLoss in Währung liegt.
4. Mit der gravierendste Fehler liegt aber in diesen beiden Zeilen:

Code:
OrdSL=(-1)*SL*OrderLots()*MarketInfo(OrderSymbol(),MODE_TICKVALUE)/Point;
OrdTP=TP*OrderLots()*MarketInfo(OrderSymbol(),MODE_TICKVALUE)/Point;
Das Point hat da nichts zu suchen.

Einfaches Beispiel für EURUSD auf $-Kontowährung:

OrdTP = 100*1*1/0.00001
OrdTP = 10.000.000$

Ohne!! Point:

OrdTP = 100*1*1
OrdTP = 100$

D.h. bei einem TP von 100 (das sind dann 10 Pips) und einer Lotgröße von 1 ergibt das 100$, weil ja 1 Pip bei 1 Lot auch 10$ Profit entspricht.

So, und nun mach was draus.

traderdoc
__________________
Ich erfülle Euch gern Eure EA-, Indikator- und Script-Programmierungswünsche auf Honorarbasis.