|
Programmierung MQL4 Hier gehts rund ums Programmieren in MQL4. |
|
Themen-Optionen | Thema durchsuchen | Ansicht |
|
|||
Kleines MQL4 Problem!!
Hallo an alle!
Mein erster Beitrag startet gleich mit einer Frage an euch!? Ich bin gerade dabei MQL4 zu lernen.Das Programieren klappt auch schon ganz gut.Bisher habe ich mich bei allen Fehlern die ich begangen habe selber durchgefuchst,aber jetzt komme ich nicht weiter. Meine Frage: Ich habe ein Trade offen.Dieser wird unglücklich ausgestoppt.Nun besteht ja das Signal noch und sofort wird wieder ein trade eröffnet!Wenn ich crossover trade möchte ich ja auch nur das kreuzen traden und nicht schon die bestehende kreuzung vor langer Zeit!!! Könnt ihr mir vielleicht ne Erklärung liefern??? Vielen Dank im voraus! |
|
|||
Helas, du kannst mit den Balken arbeiten, oder dir sonst irgendeinen Schalter einbauen um zu verhindern ältere Signale zu verarbeiten.
Je nachdem wie du deine Strategie umgesetzt hast, findet sich bestimmt ein entsprechendes Mittel. Die bereits erwähnten Bars, Hour(), DayOfYear() usw. Zusätzlich einen temporären Schalter, der durch eine X-beliebige Methode umgeschaltet wird. s.l. Racki |
|
|||
versuche auf die periode davor zu überprüfen ob dort das gegensignal läuft
dann hast du geben genau die kreuzung und der EA dürfte danach nicht sofort wieder einsteigen es sei denn du hast den stop so eng gesetzt dass in der eröffnungsperiode schon ausgestoppt wirst dann ists klar dass noch eine position eröffnet wird |
|
|||
Zitat:
vorher iclose (..3) über der 10 er waren? |
|
|||
Zitat:
das die Hour () Funktion mir die Stundenanzahl erst ab Programmstart ausgibt?? 0, 1, 2, 3, 4.....24 ?? if (Hour ()> 8) Dann müsste das Programm von mir um 0:00 UHR gestartet werden? Habe ich das Richtig gelesen? Wäre ja auch blöd! !! |
|
|||
hallo
ich habe dir kurz ein stück code geschrieben hab ich zwar jetzt nicht getestet aber es sollte so die logik stimmen und er sollte jetzt genau den schnittpunkt nehmen und eben dann die meldung ausgeben bist du eine periode weiter wird nichts mehr ausgegeben weil die bedingung nicht erfüllt ist Code:
double MA10_1 = iMA(Symbol(),Period(), 10, 0, MODE_SMA,PRICE_CLOSE,1); double MA10_2 = iMA(Symbol(),Period(), 10, 0, MODE_SMA,PRICE_CLOSE,2); double MA30_1 = iMA(Symbol(),Period(), 30, 0, MODE_SMA,PRICE_CLOSE,1); double MA30_2 = iMA(Symbol(),Period(), 30, 0, MODE_SMA,PRICE_CLOSE,2); if(MA30_2 > MA10_2 && MA30_1 < MA10_1) Alert ("kauf"); |
|
|||
Aber wenn nun, das Open und das Close auf einer Kerze passiert, wird auch in Deinem Codefall eine weitere Order geöffnet.
Man kann das Problem so lösen, indem man nur bei jedem Kerzenwechsel die Kreuzung der Indikatorwerte der letzten und vorletzten geschlossenen Kerze abfragt und bei entsprechender Signalgebung die Order einmalig! öffnet. Code:
if (timeold != Time(0)) { timeold = Time(0); // Code zum Eruieren des Signals if (Kreuzung) { //OrderSend } } Viel Erfolg! traderdoc |
|
|||
oh aja stimmt hab ich vergessen
danke fürs ergänzen |
|
|||
Danke euch erstmal!!!
Die iTime()Funktion gibt mir die Zeit des jeweiligen Balken zurück?? Also iTime(NULL,0,1) wäre die Zeit des letzten Balkens??? |
|
|||
In meinem Code müßtest Du bei Time(0) statt den runden die eckigen Klammern benutzen. Dieser Ausdruck steht für die OpenTime der aktuellen Kerzen des jeweiligen Charts.
Die iTime()-Funktion wird genommen, wenn man im selben Währungspaar aber in einem anderen TimeFrame die Zeit Abfragen will, oder wenn man von einem anderen Währungspaar etwas über die Zeit wissen will. traderdoc |
Lesezeichen |
Stichworte |
metatrader programmierung, mql4 lernen, programmierung, programmierung metatrader |
|
|