Metatrader Forum | Forex Expert-Advisor | Broker & Forex Tools

Metatrader Forum | Forex Expert-Advisor | Broker & Forex Tools (http://www.expert-advisor.com/forum/index.php)
-   Programmierung MQL4 (http://www.expert-advisor.com/forum/forumdisplay.php?f=220)
-   -   Jede Kerzen in beliebigem Timeframe nur einen Trade != iTime[] (http://www.expert-advisor.com/forum/showthread.php?t=6341)

Angel 20.02.19 00:21

Jede Kerzen in beliebigem Timeframe nur einen Trade != iTime[]
 
Hallo, ich suche eine Möglichkeit, in einem beliebigem Timeframe nur einen Trade zu eröffnen. Das bedeutet, ich habe z.B. den M1-Chart vor mir, jedoch soll der EA auf H1 handeln und abhängig von der Strategie innerhalb einer Kerze nur einen Trade eröffnen. Oder ein Dreieck zeichnen, oder was auch immer tun. Der Code mit iTime[0] bringt mich genausowenig weiter (Da iTime[0] den sichtbaren Chart behandelt) wie
Code:

int iHour = TimeHour(iTime(Symbol(),PERIOD_H1,0));
oder
Code:

int iMinute= TimeMinute(iTime(Symbol(),PERIOD_M1,0));
da letzterer von Minute 0 bis Minute 59 zählt und in jeder Minute dennoch Trades durchgeführt werden können / würden.

Für zielführende Ideen wäre ich dankbar!

gpi 03.03.19 19:20

1 Minuten-Chart:
Hallo Angel,

Prüfgen ob neue Stunden angefangen hat.

OrderOpenTime() und OrderCloseTime() abfragen und prüfen ob es einen Trade gegeben hat.
Laufende Orders die vor zB. 80 min eröffnet worden sich und noch nicht geschlossen sind eventuell berücksichtigen.

Code:

i=1; //Kerze der letzten Minute
x=60; //60 Kerzen zurück


//Open und Close der letzten Stunde abfragen
Open[x];
Close(i];
//Hoch der letzten Stunde abfragen
H1_High=iHigh(_Symbol,_Period,iHighest(_Symbol,_Period,MODE_HIGH,x,i));
//Tief der letzten Stunde abfragen
H1_Low=iLow(_Symbol,_Period,iLowest(_Symbol,_Period,MODE_LOW,x,i));

Viele Grüße

Günter

traderdoc 03.03.19 19:37

Code:

for(int i = OrdersTotal()-1; i >= 0; i--) {
  if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) {
      if (OrderSymbol() == Symbol() && OrderMagicNumber() == MagicNumber){
        if (OrderOpenTime() < iTime(Symbol(), PERIOD_H1, 0)) {
            //Action!
        } else break;
      }
  }
}

Hierbei würde geprüft werden, ob, beginnend mit der letzten Order, eine Order innerhalb der aktuellen Stunden-Kerze geöffnet wurde. Ist das der Fall, wird die Schleife beendet. Ist das nicht der Fall, kann in der Zeile //Action dann einsprechend weiterführender Code stehen.

traderdoc

Angel 03.03.19 20:10

Vielen herzlichen Dank ihr beiden - ich werde das gleich nachher umzusetzen versuchen, damit ich mich morgen gleich an die Arbeit machen kann!


Alle Zeitangaben in WEZ +2. Es ist jetzt 01:52 Uhr.

Powered by vBulletin® Version 3.8.5 (Deutsch)
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
SEO by vBSEO 3.6.1
Powered by vBCMS® 2.7.0 ©2002 - 2024 vbdesigns.de
Copyright ©2009 - 2023 by Expert-Advisor.com - Das Metatrader Forum