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)
-   -   Brauche Hilfe: IF-Abfrage mit mehreren optionalen Bedingungen (http://www.expert-advisor.com/forum/showthread.php?t=3551)

steph01 12.03.14 14:50

Brauche Hilfe: IF-Abfrage mit mehreren optionalen Bedingungen
 
Hallo,

ich hoffe, ich finde hier jemanden, der mir bei meinem Problem weiterhelfen kann.

Und zwar bin ich gerade dabei einen Indikator zu programmieren, der verschiedene andere Indikatoren (MAs, RSI, ADX usw.) auf bestimmte Bedingungen überprüft, und, wenn alle Bedingungen erfüllt sind, ein Ergebnis liefert. Das funktioniert soweit ganz gut. Nun möchte ich den Indikator so erweitern, dass die Prüfung jeder einzelnen Bedingung über die Input-Parameter des Indikators an- oder abgeschaltet werden kann.

Kann mir jemand sagen, wie ich dies realisieren kann?

Das Ganze sieht in etwa zum jetztigen Zeitpunkt so aus:

if (
Bedingung1 &&
Bedingung2 &&
Bedingung3
)
{
Ergebnis;
}

Über das Einstellungsfenster des Indikators möchte ich nun z.B. festlegen, dass, wenn "Bedingung1_aktiv = false" ist, nur die Überprüfung der Bedingung2 und 3 durchgeführt wird.

Ich würde mich über hilfreiche Hinweise sehr freuen.

Stephan

fxdaytrader 12.03.14 14:55

Da gibts mehrere Möglichkeiten.
Zuerst natürlich die externe variable, bspw.
extern bool UseAdx = true;
extern bool UseStoch = false;
etc.

Nun könntest Du mit bool-funktionen arbeiten, der übersicht halber, also hier:

bool adxok() {
if (!UseAdx) return(true);//wenn adx nicht genutzt werden soll setzen wir es auf true

if (iADX(uw.)<=xyz) return(true);//prüfen ob bedingung erfüllt
return(false);//nicht erfüllt
}

Dasselbe dann mit stoch und den anderen bedignungen

im code dann

if (adxok()&&stochok()) ordersend(usw.)

oder:

if ( (UseAdx&&adxwert>=xyz)||!UseAdx) && Bedingung2...) Ordersend(usw.)

antikythera 12.03.14 17:03

Hallo Steph,
habe da noch eine andere Idee:
Code:

extern bool Bedingung1_aktiv=false;
extern bool Bedingung2_aktiv=true;
extern bool Bedingung3_aktiv=true;

bool Bedingung1=true; // die Bedingungen müssen z.B.
bool Bedingung2=true; // von Indikatoren geschaltet
bool Bedingung3=true; // werden

if(!Bedingung1_aktiv) Bedingung1=false;
if(!Bedingung2_aktiv) Bedingung2=false;
if(!Bedingung3_aktiv) Bedingung3=false;

int Schalter1=Bedingung1_aktiv*4 + Bedingung2_aktiv*2 + Bedingung3_aktiv;
int Schalter2=Bedingung1*4 + Bedingung2*2 + Bedingung3;

if(Schalter1==Schalter2) SendOrder... else return(false);

Gruß
antikythera

steph01 13.03.14 12:15

Vielen Dank für die Antworten und Tipps. Ich habe mich für die Variante

"if ( (UseAdx&&adxwert>=xyz)||!UseAdx) && Bedingung2...) Ordersend(usw.) "

entschieden. Dies scheint mir bei einer größeren Anzahl von zu prüfenden Bedingungen die übersichtlichste zu sein. Habe es bereits ausprobiert und es funktioniert wunderbar.

Dankeschön.

Stephan


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