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)
-   -   MT4 Indicator/Alert erweitern (http://www.expert-advisor.com/forum/showthread.php?t=5621)

Basti89 20.04.17 21:12

MT4 Indicator/Alert erweitern
 
Hi zusammen,

ich habe mir einen Indicator/Alert gebastelt, der bei einer gewissen Situation (mehrere Fälle müssen zutreffen) einen Alert in MT4 sowie einen Pfeil im Chart macht.

Was mir jetzt noch fehlt: Ich will den Alert nur dann, wenn der Preis über bzw. unter (je nach Signalrichtung) des Close Preises der vorangehenden Kerze geht. Sprich der Alert ist scharf sobald alle benötigten Fälle erfüllt sind - soll aber mit dem Alarmieren warten, bis der Preis entsprechend hoch bzw. niedrig ist.

Sollte der Close Preis der letzten Kerze nicht überschritten werden soll kein Alert kommen.

Hat da jemand eine Idee?

Danke schonmal

Adlerauge 21.04.17 22:29

...naja, das ist ja nur ein weiteres Kriterium, das erfüllt sein muss, damit der Alert ausgeführt wird.

if (iClose(NULL,0,0) > iClose(NULL,0,1)
Alert(..........);

Du musst es ja nur zu Deinen anderen Kriterien hinzufügen.

traderdoc 21.04.17 23:04

Zitat:

Zitat von Adlerauge (Beitrag 38475)
if (iClose(NULL,0,0) > iClose(NULL,0,1))
Alert(..........);

Das kann aber ein ganz schön nerviges Gebimmel werden.

traderdoc

Basti89 23.04.17 23:55

erstmal danke für die Antworten. Den oben genannten Vorschlag mit der weiteren Bedingung ist aber nicht das was ich brauche - es soll ja keine weitere Bedingung an sich sein:

wie gesagt der Alarm soll scharf geschalten werden, sobald meine Bedingungen erfüllt sind - soll aber erst alarmieren wenn der Preis gleich bzw. höher/tiefer ist als der close preis der vorhergehenden Kerze. Es soll also gewartet werden nachdem die Bedingungen erfüllt sind bis der Preis passt - das kann auch erst nach einer gewissen Zeit sein.

Hat da noch jemand eine Idee?

Adlerauge 24.04.17 16:22

Zitat:

Zitat von Basti89 (Beitrag 38482)
wie gesagt der Alarm soll scharf geschalten werden, sobald meine Bedingungen erfüllt sind - soll aber erst alarmieren wenn der Preis gleich bzw. höher/tiefer ist als der close preis der vorhergehenden Kerze.
Hat da noch jemand eine Idee?

...das ist aber eine weitere Bedingung, um genau das macht der obige Vorschlag für den Fall, dass der Preis höher ist.
Wenn es in beide Richtungen funktionieren soll und auch bei gleichem Preis, dann eben:

if (iClose(NULL,0,0) >= iClose(NULL,0,1) || iClose(NULL,0,0) <= iClose(NULL,0,1))
Alert(....);

Das würde allerdings immer bimmeln...))
Wenn es nur einmal pro Kerze bimmeln soll, sind weitere Zeilen nötig.

bigborre 25.04.17 13:07

Kannst du nicht zuerst deine Bedingung abfragen und wenn diese erfüllt ist eine Variable auf TRUE setzen:

Wenn Bedingung erfüllt dann Variable = true;

Wenn die Bedingung nicht mehr erfüllt ist logischerweise FALSE. Wann das der Fall ist musst du natürlich definieren.

Und dann muss wirklich nur in die Abfrage mit rein ob die Varibale == true ist.

Basti89 25.04.17 22:50

Zitat:

Zitat von Adlerauge (Beitrag 38491)
...das ist aber eine weitere Bedingung, um genau das macht der obige Vorschlag für den Fall, dass der Preis höher ist.
Wenn es in beide Richtungen funktionieren soll und auch bei gleichem Preis, dann eben:

if (iClose(NULL,0,0) >= iClose(NULL,0,1) || iClose(NULL,0,0) <= iClose(NULL,0,1))
Alert(....);

Das würde allerdings immer bimmeln...))
Wenn es nur einmal pro Kerze bimmeln soll, sind weitere Zeilen nötig.

hm leuchtet ein - was wäre denn der code für nur einmal pro Kerze bimmeln?

Und wie geb ich der neuen Bedingung (also dass der Preis gleich dem Close Preis der vorhergehenden Kerze ist) mit, dass nicht alle Bedingungen gleichzeitig erfüllt sein müssen, sondern nur meine 4 eigenen Bedingungen gleichzeitig und die letzte dann irgendwann während die Kerze noch offen ist?

Adlerauge 27.04.17 10:05

Code:

static datetime Bereits_verwendete_Kerze = 0;

void OnTick()
{
 if (.........deine Bedingungen == true...........)
  {
    if (Bereits_verwendete_Kerze != iTime(NULL,0,0))
      {
      if (iClose(NULL,0,1) <= iClose(NULL,0,0))
        {
          Alert(.......);
          Bereits_verwendete_Kerze = iTime(NULL,0,0);
        }
      }
  }
}

"iClose(NULL,0,0)" ist übrigens das Gleiche wie "Bid".
Falls Du gemeint haben solltest, dass die aktuelle Kerze die vorhergehende Über- bzw. Unterschreiten soll, damit der Alert kommt, musst Du für die vorhergehende iHigh(NULL,0,1) bzw. iLow(NULL,0,1) verwenden.

Die Bedingung
"if (iClose(NULL,0,1) <= iClose(NULL,0,0) || (iClose(NULL,0,1) >= iClose(NULL,0,0))"
wäre IMMER erfüllt, und macht von da her keinen Sinn.


Alle Zeitangaben in WEZ +2. Es ist jetzt 00:05 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