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)
-   -   switchlock (http://www.expert-advisor.com/forum/showthread.php?t=6075)

mante 31.03.18 15:08

switchlock
 
gibt es sowas?

angenommen ich habe einen Switch mit 5 cases - wenn ein case abgearbeitet wurde soll er erst wieder scharf sein wenn er zuvor von einem anderen case entsperrt wurde

ich habe in der start() 5 bool block variablen mit wert null initialisiert - im case1 wird mit while abgefragt ob block 1 = 0 ist - wenn ja break ende;

da sie in der Initialisierung jedoch 1 sind wird die while schleife übersprungen und nur die block 1 variable dekrementiert block1 --; block2=1; block3 =1

wenn nun wieder case 1 startet kommt es sofort zu break; da 0;

im case 2 habe ich block1 wieder auf 1 gesetzt und und die block2 variabel wird auf null gesetzt

ist das bullshit? oder habe ich zumindest den richtigen Gedankengang?

werden die variabeln nach jedem tick über die Definition wieder alle auf 1 gesetzt? ich frage deshalb weil es nicht funktioniert?

glg mante:p

AVT 31.03.18 17:24

Zitat:

Zitat von mante (Beitrag 40855)
gibt es sowas?
angenommen ich habe einen Switch mit 5 cases - wenn ein case abgearbeitet wurde soll er erst wieder scharf sein wenn er zuvor von einem anderen case entsperrt wurde

Dann setzt Du
1. eine Bedingung (!gesperrt1) { Action; }
2. nach der Action gesperrt1=true;
oder Du zählst mit benutzt++ wie oft sie benutzt wurde.

Zitat:

Zitat von mante (Beitrag 40855)
ich habe in der start() 5 bool block variablen mit wert null initialisiert - im case1 wird mit while abgefragt ob block 1 = 0 ist - wenn ja break ende;

da sie in der Initialisierung jedoch 1 sind wird die while schleife übersprungen und nur die block 1 variable dekrementiert block1 --; block2=1; block3 =1

wenn nun wieder case 1 startet kommt es sofort zu break; da 0;

im case 2 habe ich block1 wieder auf 1 gesetzt und und die block2 variabel wird auf null gesetzt

ist das bullshit? oder habe ich zumindest den richtigen Gedankengang?

werden die variabeln nach jedem tick über die Definition wieder alle auf 1 gesetzt? ich frage deshalb weil es nicht funktioniert?

Diese abstrakte Beschreibung ist momentan zu kompliziert für mich nachzuverfolgen (Code wäre einfacher). AVT

mante 31.03.18 21:27

was mache ich da falsch?
 
werden variablen beim verlassen eines Switch wieder auf 0 zurückgestellt?
Code:

switch(a)
     
      { 
     
     
      case 1:
     
     
      int block1; int block2;int block3; int block4; int block5; // Case1 wird nach ersten durchlauf gestoppt da block 1 10 wird
           
      if (block1 > 0)
     
      break;
       
     
      block1=10; block2 = 0; block3 = 0; block4 = 0; block5 = 0;
       
     
     
      if ((OrdersTotal()<3))
                           
        {
        OpenTrade (0);
        }
     
      break;
     
     
     
      case 2:                                                                // case 2 ändert wert von block 1 wieder auf null - sperrt aber gleichzeitig wiederholung von cas3
         
      if (block2 > 0)
      break;
      else
      block1 =0; block2=10; block3 = 0; block4 = 0; block5 = 0;
     
     
     
      if ((OrdersTotal()<3))
                       
        {
        OpenTrade (0);
        }
     
     
      break;


bitte helft mir :)


übrigens wünsche ich allen hier im Forum frohe Ostern

lg mante

Adlerauge 31.03.18 23:19

Variablen, die Du innerhalb von switch deklarierst, exsistieren nach dem Verlassen von switch nicht mehr! Das Gleiche gilt für Variablen, die zwischen Schweifklammern deklariert werden.
Variablen, die im gesamten EA bekannt sein sollen, müssen oben vor der ersten Schweifklammer des EA deklariert werden.
Frohe Ostern ..))


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