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)
-   -   Kerze % und Pips (http://www.expert-advisor.com/forum/showthread.php?t=5987)

Ceo 26.01.18 00:42

Kerze % und Pips
 
Hallo, ich brauch mal Hilfe und zwar hab ich 2 Probleme.

1. Ich möchte nur Kerzen als Signalgeber die größer als 30 Pips sind wie setzte ich das um?

2. Kann man irgendwie bestimmen wo die Mitte einer Kerze ist?
z.b. ist die aktuelle Kerze oberhalb der 50% der letzten Kerze ist es ein Kaufsignal.

next user 27.01.18 15:52

Zitat:

Zitat von Ceo (Beitrag 40268)
1. Ich möchte nur Kerzen als Signalgeber die größer als 30 Pips sind wie setzte ich das um?

Eröffnungskurs - Schlusskurs/Aktuellen Kurs, bzw. umgekehrt (Einheit anpassen...)
Zitat:

Zitat von Ceo (Beitrag 40268)
2. Kann man irgendwie bestimmen wo die Mitte einer Kerze ist?
z.b. ist die aktuelle Kerze oberhalb der 50% der letzten Kerze ist es ein Kaufsignal.

Ergebnis von Punkt 1 durch 2 und dann den entsprechenden Kurs ermitteln. Dann schauen, in welchen 50% die aktuelle Kerze beginnt...

Ceo 28.01.18 17:24

Könntest du mir vielleicht helfen mit welchen Befehlen ich Arbeiten muss? Hab da nämlich überhaupt keine Vorstellung, habe schon in Mql4 geschaut aber nicht wirklich was gefunden.

next user 28.01.18 21:14

Muss mogen früh raus, werd daher gleich schlafen gehen.
Morgen werde ich etwas umfangreicher antworten, sofern da kein anderer postet...

Du kannst auch vordefinierte Variablen verwenden, um die Kurse und Berechnungen zu ermitteln...

Ceo 29.01.18 14:15

Also ich hab mal geschaut und folgendes gefunden zu einem Problem.

double x = Open[1];
double z = Close[1];

Jetzt nur zusammen rechnen mit: x + z/2

Nur ist jetzt die frage wie gebe ich das Ergebnis richtig aus also wo kann ich es reinschreiben da hängt es noch.

next user 29.01.18 15:39

Zitat:

Zitat von Ceo (Beitrag 40274)
double x = Open[1];
double z = Close[1];

Jetzt nur zusammen rechnen mit: x + z/2

1. Bitte benutze zum Posten von Code den entsprechenden Tag im Editor (#).
2. Nicht ganz. Du musst ja auch den Kerzentyp beachten.

Mal ein kleines Beispiel...
Code:

int multi = 0;

if(Digits == 5)
  multi = 10000;
else if(Digits == 3)
  multi = 100;

double open = Open[1];
double close = Close[1];
double size, middle;

string finalText = "Größe: ";

if(open > close)
  {
      size = open - close;
      finalText += DoubleToString(size*multi, 1);
      middle = open - size/2;
  }
else
  {
      size = close - open;
      finalText += DoubleToString(size*multi, 1);
      middle = open + size/2;
  }
 
finalText += " Pips | Mitte: "+DoubleToString(middle, Digits);
 
MessageBox(finalText);

// Dann mit den Werten weiter arbeiten, um deinen zweiten Punkt umzusetzen.
// Da müssen allerdings noch konkrete Bedingungen definiert werden!
// ...

Um die Sache mit den 50% und Kaufsignal umzusetzen, musst du erstmal konkretere Bedingungen definieren.

Zitat:

Zitat von Ceo (Beitrag 40274)
Nur ist jetzt die frage wie gebe ich das Ergebnis richtig aus also wo kann ich es reinschreiben da hängt es noch.

"Reinschreiben" hört sich so an, als ob du überhaupt nicht weist, was du da machst.
Du wolltest doch Werte ermitteln, Berechnungen tätigen und auf deren Auswertung reagieren.
So hört es sich an, als bist du grad bei einer Matheaufgabe und dein EA soll das Ergebnis ausgeben...

Ceo 30.01.18 01:12

Ja ich hab mich etwas falsch ausgedrückt. Aber so wie du es geschrieben hast klappt es super. Ich hätte nur eine kleine Frage noch.

Wenn ich ein Signal im 4H Chart noch haben will wäre es so richtig oder:


Code:

if(middle = PERIODEH4 > Open[0]
            {
                Comment("Kaufen")
              }


Es zeigt mir zwar im Chart "kaufen" an aber im Compiler zeigt es eine Warnung:expression not boolean

next user 30.01.18 04:27

Zitat:

Zitat von Ceo (Beitrag 40277)
Code:

if(middle = PERIODEH4 > Open[0]
            {
                Comment("Kaufen")
              }


Zunächst einmal müsste am Ende der if-Zeile noch die schließende Klammer hin.
Mit einer If-Afrage fragst du, ob etwas "wahr" oder "unwahr" ist. In deinem Fall hier sind allerdings folgende Punkte falsch:
  • Eine ZUWEISUNG (ein! Gleichheitszeichen) hat in einem If in der Regel nichts zu suchen. Es gibt Ausnahmen, aber selten und unnötig.
  • PERIODEH4 soll wohl PERIOD_H4 heißen.
  • Hier passiert folgendes:
    • Du fragst, ob PERIOD_H4 (Ganzzahl) größer ist als Open[0] (Gleitpunktzahl).
    • Trifft das zu, erhälst du "True (1)", ansonsten "False (0)".
    • Dein Warnhinweis sagt aus, das du jetzt dieses Ergebnis (True / False), also ein legitimes If-Ergebnis (bool-Statement) einer Int-Variablen ("middle =") zuordnest.
    • Wie bereits gesagt, ein If fragt ab, ob etwas wahr / unwahr ist (die "Bool-Werte" True / False). Du gibst dem If aber eine Variable vom Typ Int, daher der Hinweis.
  • Die Variable "middle" ist weder für diese Zuweisung gedacht, noch gehört sie in ein If für dein H4-Vorhaben

Zitat:

Zitat von Ceo (Beitrag 40277)
Wenn ich ein Signal im 4H Chart noch haben will ...

Wenn du zusätzlich mit Werten einer anderen Zeiteinheit als der momentanen arbeiten willst, so benutze die Funktionen mit dem "i" davor:
Code:

// Aufbau Parameter: Symbol, Zeiteinheit, Kerze

string SYM = Symbol();

double openH4 = iOpen(SYM,PERIOD_H4,0);
double closeH4 = iClose(SYM,PERIOD_H4,0);

Und dann entsprechend die If-Abfragen wie zuvor...

Ceo 30.01.18 13:22

Also erstmal vielen Dank das du es auch erklärst, ich saß jetzt vor dem Pc und hab nur Ah gemacht. Jetzt hab ich es verstanden (bzw. mql4) und mein Wissen erweitert. Dankeschön:)


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