|
Programmierung MQL4 Hier gehts rund ums Programmieren in MQL4. |
|
Themen-Optionen | Thema durchsuchen | Ansicht |
|
|||
Fehler bei Berechnung oder Send?
Hi Leute, ich versuche schon seit stunden den Fehler zu finden. Der EA läuft an sich. Ziel ist, dass er byu-/send-Orders auslöst, wenn sich Main und Signal kreuzen, wobei die Variable Distance den Abstand zwischen Main und Signal darstellt. Solange kein neues Crossing von Main und signal stattfindet (inkl. der Distance) soll nix passieren, ansonsten soll er zB Sell schliessen und buy öffnen.
{ if(PositionOpen()) return(0); crossedup = false; crosseddown = false; for(int i = 0;i < 3;i++) { mline[i] = iStochastic(NULL, Period(),K_Period, D_Period, Slowing, MA_Method, 0, MODE_MAIN, i); sline[i] = iStochastic(NULL, Period(),K_Period, D_Period, Slowing, MA_Method, 0, MODE_SIGNAL, i); } if ((mline[1] < sline[1]) && (mline[2] -Distance> sline[2])) crosseddown = true; else if ((mline[1] > sline[1]) && (mline[2]+Distance < sline[2])) crossedup = true; else return(0); if (crossedup) GoLong(); if (crosseddown) GoShort(); return(0); } ..... int GoLong() { longtkt = -1; cnt = 0; while((longtkt < 0) && (cnt < 20)) { longtkt = OrderSend(Symbol(), OP_BUY, AdvancedMM(), Ask, 2, 0,0, NULL, MagicNumber, 0, Green); cnt++; } if (longtkt>0) { OrderSelect(longtkt, SELECT_BY_TICKET); OrderModify(OrderTicket(),OrderOpenPrice(),Normali zeDouble(TheStoppLoss,Digits),NormalizeDouble(TheT akeProfit,Digits),0,Green); } OrderClose(OrderTicket(),OrderLots(),OrderClosePri ce(), Slippage,Red); return(longtkt); } ... bool PositionOpen() { t = OrdersTotal(); for(int z = 0;z < t;z++) { OrderSelect(z, SELECT_BY_POS, MODE_TRADES); if(OrderSymbol() == Symbol()) return(true); } return(false); Habe ich das Distance falsch gesetzt? Oder wortan kann es liegen? Danke euch vielmals für die Zeit... |
|
|||
Na ja, ist eben immer wieder dasselbe. Bei einem unvollständigen Code wird man nie eine exakte Aussage treffen können.
Ich vermute! mal, dass es daran liegt, wiel Distance über die Anzahl Pips definiert wird und diese Pips nicht in eine tatsächliche Kursdifferenz umgerechnet wurde. traderdoc
__________________
Ich erfülle Euch gern Eure EA-, Indikator- und Script-Programmierungswünsche auf Honorarbasis. |
|
|||
...sorry...
distance ist folgendermaßen definiert: extern double Distance = 5.2; // Distance between Main / Signal eine weitere Umrechnung o.ä. erfolgt nicht, nur eben die Definition ...danke |
|
|||
Ja nun, dann hast Du ja den Fehler!!
traderdoc
__________________
Ich erfülle Euch gern Eure EA-, Indikator- und Script-Programmierungswünsche auf Honorarbasis. |
|
|||
.hhmmm....
@ doc: könnte ich dir mal den gesamten Code zusenden zum Prüfen oder verbessern/modifizieren?...stehe momentan irgendwie auf dem Schlauch......wäre sehr nett.... :-) .... |
|
|||
Lad hoch. Gibts bestimmt schon irgendwo gratis.
Sorry, fals ichs überlesen hab, aber was soll diese Distanz-Rechnung? |
|
|||
....die Distance soll eigentlich verhindern, dass der ea auch bei kleinen Abweichungen beim Crossing eine order auslöst..oder ist das ein logischer Fehler?...sinn des ganzen ea soll wie gesagt sein, dass bei aufwärts-crossing eine buy-order ausgelöst und eine evtl. bestehende sell-order geschlossen wird und umgekehrt
|
|
|||
Ja nun mal langsam.
Probiere das hier aus: Distance = Distance*Point; (falls Du einen 5-DigitBroker hast und die 5,2 sollen tatsächlich reale 5,2 Pips sein, dann muss Distance = Distance*Point*10; genommen werden) Damit solltest Du für Distance dann 0,00052 bekommen und dann sollte das auch mit mline[2] -Distance> sline[2]) funktionieren. traderdoc
__________________
Ich erfülle Euch gern Eure EA-, Indikator- und Script-Programmierungswünsche auf Honorarbasis. |
|
|||
...vielen Dank zunächst...
ich bin bisher davon ausgegangen, dass die Variablen mline und sline die jeweilige Position des Stoch zurückgeben, also einen Wert zwischen 0 und 100, so dass Distance eben den Abstand zwischen den Linien definiert, also eine Umrechnung in Pips o.ä. nmicht erforderlich ist zB wenn M2=S2-Distance UND M2<S2 UND M2<M1 .... dann Sell-Order und schliessen einer offenen Buy-Order ( so das Ziel) ich habe mal den Code angehängt wäre euch für Tipps und Hinweise auf mögliche Fehler dankbar |
Lesezeichen |
Stichworte |
berechnung fehler, fehler, mql4, order, ordersend, programmierung, programmierung metatrader, programmierung mql4, send |
|
|