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)
-   -   DropDown-Feld mit "leerer" Auswahlmöglichkeit ? Geht das? (http://www.expert-advisor.com/forum/showthread.php?t=6365)

Angel 21.03.19 21:40

DropDown-Feld mit "leerer" Auswahlmöglichkeit ? Geht das?
 
Hallo,

ich möchte z.B. die Auswahl zweier Handelbedingungen über ein DropDown-Auswahlfeld ermöglichen.
Nun könnte es ja auch sein, dass ich eine Handelsbedingung ausblenden und gar nicht haben möchte. Wie setze ich das dann um? Ich fand diesbezüglich NIRGENDS etwas, auch nicht im englischprachigen Raum...! Mein Code sieht mal so aus:

Code:

//Wird im Variablenbereich geschrieben

enum BEDINGUNG1
  {
  a_KEINE=0,
  a_SMA20=1,
  a_SMA30=2
  };
input BEDINGUNG1 BD1=1;

enum BEDINGUNG2
  {
  b_KEINE=0,
  b_SMA20=1,
  b_SMA30=2
  };
input BEDINGUNG2 BD2=2;

void OnTick()
{...
BEDINGUNG1();
BEDINGUNG2();
}

// Am Ende des Programms

void BEDINGUNG1()
  {
  if (BD1==0) { WAS SCHREIBE ICH HIER?;}  // Also wenn ich "Bedingung1" nicht auswählen möchte ?
  if (BD1==1) {Entry soll meinetwegen SMA20 sein)
  if (BD1==2) {Entry soll meinetwegen SMA30 sein)                         
  }

void BEDINGUNG2()
  {
  if (BD2==0) { WAS SCHREIBE ICH HIER?;}  // Also wenn ich "Bedingung2" nicht auswählen möchte ?
  if (BD2==1) {Entry soll meinetwegen SMA20 sein)
  if (BD2==2) {Entry soll meinetwegen SMA30 sein)                         
  }

Eine Bitte: Die "Bedingung" ist vereinfacht. Es fiel mir nix besseres ein, natürlich könnte man sagen, dass man beide Auswahlfelder gleich auswählt.. aber es gibt auch andere Fälle, wo man ein Auswahlfeld einfach "leer" lassen will. Hat jemand eine Idee, wie ich als Bedingung "Keine" realisieren kann?

traderdoc 21.03.19 21:58

Code:

//Wird im Variablenbereich geschrieben

enum BEDINGUNG1
  {
  a_KEINE=0,
  a_SMA20=1,
  a_SMA30=2
  };
input BEDINGUNG1 BD1=1;

enum BEDINGUNG2
  {
  b_KEINE=0,
  b_SMA20=1,
  b_SMA30=2
  };
input BEDINGUNG2 BD2=2;

void OnTick()
{...
BEDINGUNG1();
BEDINGUNG2();
}

// Am Ende des Programms

void BEDINGUNG1()
  {
  if (BD1==0) return;  //Also wenn ich "Bedingung1" nicht auswählen möchte ?
  if (BD1==1) {Entry soll meinetwegen SMA20 sein)
  if (BD1==2) {Entry soll meinetwegen SMA30 sein)                         
  }

void BEDINGUNG2()
  {
  if (BD2==0) return;  //Also wenn ich "Bedingung2" nicht auswählen möchte ?
  if (BD2==1) {Entry soll meinetwegen SMA20 sein)
  if (BD2==2) {Entry soll meinetwegen SMA30 sein)                         
  }

traderdoc

Angel 21.03.19 22:15

Hi traderdoc !

Code:

return;
ist das alles...? :eek:
Danke...!

traderdoc 21.03.19 23:27

Ja, ich denke schon, denn wenn bei der Auswahl der Bedingungen 0 gewählt wird, dann springt der EA bei der Abfrage aus der Funktion, ohne etwas zu unternehmen.

traderdoc

Angel 22.03.19 08:22

Hm... ok...
Aber... wenn ich nun eine weitere if-Abfrage "dranhängen" möchte (Im Hauptteil... wie sieht es denn dann aus?
Ich modifiziere das Ganze mal ein kleines bissl... und markierte die Änderungen rot... wenn ich nämlich zuvor mit "return" raussprang.. und frage die Variable "Kaufen1" dennoch ab... Denn wenn ich die Zeile NICHT auswählen möchte, hat die Variable BD1 den Wert 0... und somit weder 1 noch 2... ich möchte dennoch , dass die abzufragende Bedingung Kaufen1 && Kaufen 2 erfüllt sein muss... Kaufen1 kann jedoch nicht "1" werden, wenn ich mit return raussprang... oder habe ich da einen Denkfehler?

Code:

//Wird im Variablenbereich geschrieben

enum BEDINGUNG1
  {
  a_KEINE=0,
  a_SMA20=1,
  a_SMA30=2
  };
input BEDINGUNG1 BD1=1;

enum BEDINGUNG2
  {
  b_KEINE=0,
  b_SMA20=1,
  b_SMA30=2
  };
input BEDINGUNG2 BD2=2;

void OnTick()
{...
BEDINGUNG1();
BEDINGUNG2();

if (Kaufen1==true && Kaufen2==true)
        {Mach´irgendwas}


}

// Am Ende des Programms

void BEDINGUNG1()
  {
  if (BD1==0) return; //Also wenn ich "Bedingung1" nicht auswählen möchte ?
  if (BD1==1) {if (Bid<SMA20)
                        {Kaufen1=true;}
                    }
  if (BD1==2) {if (Bid<SMA30)
                        {Kaufen1=true;}                 
  }

void BEDINGUNG2()
  {
  if (BD2==0) return; //Also wenn ich "Bedingung2" nicht auswählen möchte ?
  if (BD2==1) {if (Bid<SMA20)
                        {Kaufen2=true;}
                    }
  if (BD2==2) {if (Bid<SMA30)
                        {Kaufen2=true;}
                    }                   
  }



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