Einzelnen Beitrag anzeigen
  #2 (permalink)  
Alt 27.10.14
traderdoc traderdoc ist gerade online
Elite Mitglied
 
Registriert seit: Apr 2011
Beiträge: 1.874
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.