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

Zitat:
Zitat von antikythera Beitrag anzeigen
in Deiner Version sind zwei Fehler:

1. double Ma1 = iMA(NULL,0, >Ma1< ,Ma1Shift,Ma1Method,Ma1AppliedTo,1);
die Variable Ma1 in iMA(..., ..., Ma1 muß durch eine Variable ersetzt werder die die Periode des MA beinhaltet. (sh. oben)

2. die if-Entscheidungen: if(Ma1>Ma2) und if(Ma11<Ma21) heben sich in Deinem Code gegenseitig auf, somit kann das nicht funktionieren

double Ma1 = iMA(NULL,0,Ma1,Ma1Shift,Ma1Method,Ma1AppliedTo,1); <---------
double Ma2 = iMA(NULL,0,Ma2,Ma2Shift,Ma2Method,Ma2AppliedTo,1); <---------
double Ma3 = iMA(NULL,0,Ma3,Ma3Shift,Ma3Method,Ma3AppliedTo,1);
double Ma11 = iMA(NULL,0,Ma1,Ma1Shift,Ma1Method,Ma1AppliedTo,2); <---------
double Ma21 = iMA(NULL,0,Ma2,Ma2Shift,Ma2Method,Ma2AppliedTo,2); <---------

if(Ma1>Ma2) <---------
if(Ma1>Ma3)
if(Ma2>Ma3)
if(Ma11<Ma21) <---------
if(OrdersTotal()==0) . . .
Na ja, es bleibt eigentlich bei nur einem Fehler und das ist der von Dir richtig gefundene Fehler beim Setzen der Periode der MAs. Die sollte in den externen Variablen definiert werden.
Die o.g. 1. und 4. Abfrage (Pfeile) werden sich deshalb nicht "aufheben", weil die Zuweisung der Werte zu Ma1 und MA2 aus den Indikatorabfragen 1 und 2 in die Abfragen 4 bzw. 5 (wieder fälschlicherweise als Periode) eingesetzt werden und daraus die Ma-Werte Ma 11 und Ma21 berechnet werden.
Da die Perioden als int-Werte verarbeitet werden, die o.g. Perioden aber als Double-Werte eingesetzt werden, ist so oder so zweifelhaft, was die Indiaktorabfragen ergeben, wenn aus den Double-Werten durch Abschneiden der Nachkommastelle ein int-Wert reduziert wird.

Also einfach in den externen Variablen den MAs die Perioden zuweisen und alles ist gut.
Die Abfragelogik der Kreuzung ist soweit in Ordnung.

traderdoc