Order wenn zwei Zustände hintereinander true sind

 

Hi,

habe für Euch sicherlich eine leichte Herausforderung.

Was möchte ich? Wenn der High Wert und der Wert eines Indikators identisch sind, wird die erste Variable auf true gesetzt. Innerhalb der aktuellen Bar jedoch, soll die Funktion dann nicht mehr ausgeführt werden, erst wieder in der nächsten Bar.

Wenn dann wieder der High Wert und der Wert eines Indikators identisch sind, wird die zweite Variable auf true gesetzt.

Soweit funktioniert grundsätzlich meine Funktion, jedoch werden beide Variablen auf True gesetzt, da ich das aussetzen innerhalb der Bar noch nicht drin habe.

Hier der relevante Teil der Funktion:

   if(varHighBar == varDCChannelUp){ varSignalFirstUp = true;}

   if(varHighBar == varDCChannelUp){ varSignalSecondUp = true;}

   

   if(varSignalFirstUp && varSignalSecondUp && varATR <= 50.0){

      Alert("Kaufen");

      varSignalSecondUp = false;

      varSignalFirstUp = false;

      varReturn = 2; //Buy

   }

   

   if(varLowBar == varDCChannelDown){ varSignalFirstDown = true;}

   if(varLowBar == varDCChannelDown){ varSignalSecondDown = true;}

   

   if(varSignalFirstDown && varSignalSecondDown && varATR <= 50.0){

      Alert("Verkaufen");

      varSignalSecondDown = false;

      varSignalFirstDown = false;

      varReturn = 3; //Sell

   }


Werde natürlich noch selbst schauen, aber vielleicht seid Ihr schneller.


Danke!

 
Marcel Klein:

Hi,

habe für Euch sicherlich eine leichte Herausforderung.

Was möchte ich? Wenn der High Wert und der Wert eines Indikators identisch sind, wird die erste Variable auf true gesetzt. Innerhalb der aktuellen Bar jedoch, soll die Funktion dann nicht mehr ausgeführt werden, erst wieder in der nächsten Bar.

Wenn dann wieder der High Wert und der Wert eines Indikators identisch sind, wird die zweite Variable auf true gesetzt.

Soweit funktioniert grundsätzlich meine Funktion, jedoch werden beide Variablen auf True gesetzt, da ich das aussetzen innerhalb der Bar noch nicht drin habe.

Hier der relevante Teil der Funktion:

   if(varHighBar == varDCChannelUp){ varSignalFirstUp = true;}

   if(varHighBar == varDCChannelUp){ varSignalSecondUp = true;}

   

   if(varSignalFirstUp && varSignalSecondUp && varATR <= 50.0){

      Alert("Kaufen");

      varSignalSecondUp = false;

      varSignalFirstUp = false;

      varReturn = 2; //Buy

   }

   

   if(varLowBar == varDCChannelDown){ varSignalFirstDown = true;}

   if(varLowBar == varDCChannelDown){ varSignalSecondDown = true;}

   

   if(varSignalFirstDown && varSignalSecondDown && varATR <= 50.0){

      Alert("Verkaufen");

      varSignalSecondDown = false;

      varSignalFirstDown = false;

      varReturn = 3; //Sell

   }


Werde natürlich noch selbst schauen, aber vielleicht seid Ihr schneller.


Danke!

Du musst halt noch einfügen von welcher richtung der preis kommt, sonst setzt er immer beide gleich

 

Hi,


das ist schon klar, deswegen möchte ich ja, dass er erst die erste Variable auf true setzt dann erst weiter macht in der nächsten bar. 

 

Hmm, Du hast anscheinend keine Ahnung, wie man einen Indikator aufruft und ihn verwendet.

Hier hast Du eine Liste der Funktionen für MQL4 (warum nicht gleich MQL5, wenn Du schon anfängst, vieles ist besser und schneller?): https://docs.mql4.com/function_indices.

Dann schau Dir die Bollinger Bänder iBands() oder hier an - oder Envelopes. Mit der Variablen shift gibst Du an, den Wert welcher Bar willst Du (bei MQL4 0=jetzt, 1=voreherige, ..

Bei MQL5 hat sich das allerdings geändert!

Außerdem, wenn Du Code postest, verwende bitte den Code-Kopf [</>] in der Editierzeile oder Alt+S

List of MQL4 Functions - MQL4 Reference
List of MQL4 Functions - MQL4 Reference
  • docs.mql4.com
Reads from the file of the CSV type a string of one of the formats: "YYYY.MM.DD HH:MM:SS", "YYYY.MM.DD" or "HH:MM:SS" - and converts it into a datetime value
 

Nein das funktioniert doch alles schon. Habe hier ja nur einen Ausschnitt gepostet.

Egal, lassen wir das.

Ich bekomme das schon hin.


Vielen Dank!

 
Marcel Klein:

Nein das funktioniert doch alles schon. Habe hier ja nur einen Ausschnitt gepostet.

Egal, lassen wir das.

Ich bekomme das schon hin.


Vielen Dank!

Wie soll sich hier was unterscheiden? Das kommt immer gleich

if(varLowBar == varDCChannelDown){ varSignalFirstDown = true;}

   if(varLowBar == varDCChannelDown){ varSignalSecondDown = true;}

Du musst ihm schin sagen, in welchen zeitraum, bars, preisabweichung oder sonstiges das passieren soll

und dann gibts ja noch die buystoplimit order

Grund der Beschwerde: