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)
-   -   if-Anweising in MQL4 (http://www.expert-advisor.com/forum/showthread.php?t=6409)

daytrader0815 08.05.19 12:54

if-Anweising in MQL4
 
Hallo!

Ich befinde mich noch am Anfang der MQL4-Programmierung und habe deshalb eine Frage: meine if-Anweisung ist irgendwie falsch geschrieben. Bei zwei oder mehreren offen Positionen werden keine weiteren gesetzt. Das Script soll immer nur eine neue Position bis zum nächsten Signal setzen, wenn der RSIWert>70 ist. Was muss ich nun ändern?
Danke!


if (RSIWert>70&&OrdersTotal()<2)

// dann Order

OrderSend ("EURUSD",OP_SELL,3.0,Bid,3,0,Bid-20*_Point,"RSI",55,0,Red);

AVT 09.05.19 16:27

Zitat:

Zitat von daytrader0815 (Beitrag 42425)
Hallo!
... meine if-Anweisung ist irgendwie falsch geschrieben. Bei zwei oder mehreren offen Positionen werden keine weiteren gesetzt. Das Script soll immer nur eine neue Position bis zum nächsten Signal setzen, wenn der RSIWert>70 ist. Was muss ich nun ändern?

Versuche mal den Code zu verstehen, was der sagt:
Code:

if (  RSIWert > 70      // RSI über 70 => also 71,72,73,....
    && OrdersTotal() < 2 // Anzahl aller Orders weniger als 2 => also 0 oder 1
  )

Beachten bei OrdersTotal() geht es um alle, egal ob es gerade laufende Positionen oder noch auf Aktivierung wartende Stop- oder Limitorders sind, und auch egal ob das nun in einem Index, einer Währung, bei Rohstoffen oder Aktien ist.
Du mußt Dir die Bedingung wirklich haarklein überlegen.
Zitat:

nur eine neue Position bis zum nächsten Signal setzen, wenn der RSIWert>70 ist
ist für mich zum Beispiel völlig unklar, was da genau passieren soll. Und die Anzahl der OrdersTotal() wirst Du warscheinlich (oder auch nicht?) einschränken wollen?
Das ist alles, was ich Dir hier erst mal als Anregung geben kann. AVT

daytrader0815 09.05.19 17:10

Hi,

ich denke die Funktion OrdersTotal ist die falsche, oder?
Wenn der RSIWert>70 ist, dann eine Position öffnen. Kurs geht <70 und irgendwann wieder >70, nun eine neue Position öffnen. So soll es sein, ich weiß nur nicht wie...

traderdoc 09.05.19 17:51

Code:

datetime OldBar;  //in die globalen Variablen schreiben
if (OldBar != Time[0]) {
  if (iRSI(NULL, 0, 14, PRICE_CLOSE, 2) < 70 && iRSI(NULL, 0, 14, PRICE_CLOSE, 1) > 70) {
      //Action
  }
  OldBar = Time[0];
}

Hierbei wird immer nach Kerzenwechsel geprüft, ob der RSI der vorletzten geschlossenen Kerze unter 70 und der RSI der letzten geschlossenen Kerze über 70 war. (am Beispiel der RSI-Periode 14 und des PRICE_CLOSE)

traderdoc

TraderDirk 11.05.19 14:44

Code:

datetime Bar15M;
if (Bar15M!= iTime(NULL,PERIOD_M15,0)) {
  if (iRSI(NULL, PERIOD_M15, 14, PRICE_CLOSE, 2) < 70 && iRSI(NULL,PERIOD_M15, 14, PRICE_CLOSE, 1) > 70) {
      ..................
  }
  Bar15M= iTime(NULL,PERIOD_M15,0);
}

wenn Du unterschidliche TimeFrames Auswerten möchtest, kannst Du auch
statt Time[0] / iTime(NULL,PERIOD_M15,14,PRICE_CLOSE,1) nehmen.
So kannst Du mehrere TimeFrames auswerten.

daybyter 13.05.19 02:21

Warum nicht einfach ein Flag setzen, wenn die Order geöffnet wurde?

Wenn RSI<70 wird das Flag zurückgesetzt.


Alle Zeitangaben in WEZ +1. Es ist jetzt 07:12 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