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)
-   -   Letzte Kerze in bestimmten Bereich finden (http://www.expert-advisor.com/forum/showthread.php?t=6474)

MA-EA 08.08.19 04:14

Letzte Kerze in bestimmten Bereich finden
 
Hallo.

Ich würde gerne rausfinden, ob in einem Oszillator, z.B. jetzt mal der CCI, die letzte Kerze, die nicht zwischen Indicator-Line-1 und -2 war, über oder unter eben diesen Linien waren. Denke mal, dann könnte man das ein oder andere Fehlsignal vermeiden.
Code:

double CCI_B1=iCCI(Symbol(),Timeframe,CCI_Period,CCI_Price,1);
Ich bin leider Anfänger und hab nur ne ungefähre Idee:
Erst mal ne Variable für den CCI Shift, also welche Kerze benutzt werden soll, festlegen, z.B.:
Code:

int CCI_Bar = 1;
double CCI_B1=iCCI(Symbol(),Timeframe,CCI_Period,CCI_Price,CCI_Bar);

Dann in ner while-Schleife CCI_Bar immer weiter erhöhen, solange sie z.B. unter IL_2 (obere Linie) ist. Also ungefähr:
Code:

while ( CCI < IL_2 ){
CCI_Bar++;

Dann vielleicht nen bool oder vielleicht nen string festlegen, wenn die geprüfte Kerze des CCI > IL_1 ist. Vielleicht:
Code:

...
if ( CCI > IL_2 ) string Wo war CCI zuletzt = "über IL_2";

if ( CCI < IL_1 ) string Wo war CCI zuletzt = "unter IL_1";

return ( Wo war CCI zuletzt );}

Und um dann die Bedingungen für nen Buy zu checken z.B.:
Code:

if ( CCI > IL_1 && Wo war CCI zuletzt == "unter IL_1" ) {
OrderSend(OP_BUY und so weiter...) }

Kann das so funktionieren? Bin wie gesagt Einsteiger... Aber ich denk mal, dass man dann so manche Verlust-Order vermeiden kann.

MA-EA 08.08.19 18:04

Liste der Anhänge anzeigen (Anzahl: 1)
Ob das so funktioniert? Oder braucht man unbedingt ne Schleife? Da käme dann eigentlich nur die while-Schleife in Frage. Aber die bleibt ja gerne mal hängen so viel ich weiß... :(

1. Die Kerze des CCI deklarieren, die geprüft werden soll.
Code:

int CCI_il_1or2_Bar = 1;
2. Nen CCI deklarieren, der nur für diesen Check benutzt wird.
Die Kerze entspricht der oben fest gelegten.
Code:

double CCI_il_1or2=iCCI(Symbol(),Timeframe,CCI_Period,CCI_Price,CCI_il_1or2_Bar);
3. Wenn die jeweilige CCI-Kerze zwischen IL1 und IL2 ist,
soll die zu prüfende Kerze erhöht werden.
Code:

if ( CCI_il_1or2 > CCI_indicator_level_1 || CCI_il_1or2 < CCI_indicator_level_2 ) {
CCI_il_1or2_Bar++;

4. Wenn dann irgendwann die jeweilige Kerze nicht mehr zwischen IL1 und IL2, sonder über oder unter Beiden ist,
soll ihr Wert mit return zurück gegeben werden.
Code:

if ( CCI_il_1or2 < CCI_indicator_level_1 || CCI_il_1or2 > CCI_indicator_level_2 ) return(CCI_il_1or2); }
Je nach dem, ob der Wert größer/kleiner als IL1/IL2 ist, kann dann nen Buy/Sell geöffnet werden.

Immerhin gibts beim Kompilieren keine Fehlermeldung. :rolleyes:

Edit:While-Schleifen hängen ja gerne mal, soviel ich weiß.
Könnte man das Ganze vielleicht irgendwie mit ner for-Schleife bewerkstelligen?


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