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)
-   -   Wenn bestimmtes Ereignis, dann Wert X für Y Minuten auf Z stellen (http://www.expert-advisor.com/forum/showthread.php?t=7264)

Graf-Rotz 30.10.22 07:06

Wenn bestimmtes Ereignis, dann Wert X für Y Minuten auf Z stellen
 
Hallo Zusammen,

ich steh total auf dem Schlauch. Ich möchte folgendes erreichen:

if ( A == 1 ) // Wenn ein bestimmtes Ereignis eintritt

{ X = Z }


X soll dann aber nur für Y Minuten Z bleiben, danach wieder den Ursprungswert annehmen.


Sobald A nicht mehr 1 ist überschreibt er X bei mir immer wieder.


Ich hoffe das war irgendwie verständlich :)

Hat jemand ne Idee? Ich finde nichts...

Vielen Dank

traderdoc 30.10.22 12:01

Code:

if (A == 1) {
  if (!Flag) Start_Time = TimeCurrent() 
}

if (TimeCurrent() <= Start_Time + Y*60) {
  X = Z;   
} else {
  X = Ursprungswert;
  Flag = false;
}

Im Initalteil wird Start_Time = 0 und Flag = false gesetzt.
Somit wird falls A == 1 true ist, die Start_Time festgelegt. Und solange
TimeCurrent() <= Start_Time + Y*60 ist, wird X = Z sein,
danach wird wieder X = Ursprungswert werden.
Falls in dieser Zeit (Start_Time + Y*60) A != 1 ist, wird weiterhin X = Z bleiben.
Bleibt A == 1 dann wird auch nach Überschreiten von Start_Time + Y*60 X = Z bleiben.

traderdoc

Graf-Rotz 30.10.22 15:17

Hi Traderdoc,

danke für deine schnelle Antwort. Leider klappt es noch nicht so wie gewünscht.

Meinst du mit initial dies:

PHP-Code:

int OnInit()
  {
      
int Start_Time ;
      
      
int Flag false;

   return(
INIT_SUCCEEDED);
  } 


und dann kommt dies bei mir:

PHP-Code:

void OnTick()
  {

int Pause;
int Start_Time;
int Flag;

if ( 
Middle_Open Ask )

   { 
      if (!
FlagStart_Time TimeCurrent() ;  
   }


if (
TimeCurrent() <= Start_Time 1200*60
{
   
Pause 1;    
}

 else {
   
Pause 0;
   
Flag false;
}




Wo ist der Fehler?

Vielen Dank

Kay

traderdoc 30.10.22 16:43

Der Fehler liegt u.a. darin, dass die Variaben

int Pause;
int Start_Time;
int Flag;

bei jedem Tick wieder auf 0 bzw. false gesetzt werden.
Deshalb hatte ich auch geschrieben, dass die Initailisierung dieser beiden Variablen (nur) in den OnInit()-Teil gehören.

traderdoc

Graf-Rotz 31.10.22 07:20

Vielen Dank
 
Hi Traderdoc,

es klappt jetzt wunderbar. Ich danke dir vielmals.

LG

Kay


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