Verzögerung für einen Alert
Hi,
ich habe schon im Internet und der Suche geschaut, jedoch nichts passendes gefunden und zwar möchte ich in einem IF Bereich einen Delay einfügen zwischen dem "down" Alert und dem "downdel" alert. Kann mir da jemand helfen? Danke if(dClose < dLastClose) { // down if (!bTestMode){ Alert ("down"); ... HIER ZWISCHEN x Sekunden DELAY ... Alert ("downdel"); Folgefunktion; } |
if(dClose < dLastClose) {
// down if (!bTestMode){ Alert ("down"); ... Sleep(1000); //HIER ZWISCHEN x Sekunden DELAY ... Alert ("downdel"); Folgefunktion; } Das sind 1000ms Verzögerung. traderdoc |
Zitat:
|
Ja, warum nicht?
|
also bei mir geschieht da leider nichts, die beiden Alerts kommen unmittelbar hintereinander. Das ist leider mein Problem.
Danke schonmal für die Mühe! Zitat:
|
Hatte ich etwas von einem Indikator überlesen?
Na dann halt über eine Schleife: for (int i = 0; i<=100000000; i++) {} oder i = 0; while(i<100000000) {i++;} Die Zahl mußt Du dann an Deine Verhältnisse anpassen. traderdoc |
Ich denke Du mußt die Uhrzeiten abgleichen und prüfen ob Zeitraum xyz verstrichen ist.
Auszug aus einem mal von mir zusammengestrickten alerttimer indicator: if ( (UseLocalTime && (TimeLocal()-startuptime) >= (minutestosleep * 60)) || (!UseLocalTime && (TimeCurrent()-startuptime) >= (minutestosleep * 60)) ) ALERT |
Ja danke schonmal bis hierher. Mit der For oder While Schleife geht es leider definitiv nicht. Scheinbar befindet sich die Routine komplett in einem Tick.
Und ich benötige halt eine Verzögerung zwischen den beiden Alerts. Also der erste soll kommen, dann eine Pause und dann der zweite (unterschiedliche). Mal sehen wie ich da weiterkomme. Ideen sind willkommen. |
ja, hast Du meinen vorherigen Beitrag überhaupt gelesen?
hier der code, auszugsweise: extern bool EnableTimer = TRUE; extern bool AlertAfterMinutes = FALSE; extern double MinutesToWait = 5.00; extern bool AlertOnCertainTime = TRUE; extern int AlertHour = 14; extern int AlertMinute = 25; extern string sep0="..."; extern string ult = "true:LocalTime, false:ServerTime"; extern bool UseLocalTime = TRUE;//true:TimeLocal(), false:TimeCurrent() extern string sep1="..."; extern bool PopupAlerts = TRUE; extern bool EmailAlerts = FALSE; extern bool PushNotificationAlerts = FALSE; extern bool SoundAlerts = TRUE;//FALSE; extern string SoundFileName = "news.wav"; extern string sep2="..."; extern bool ShowUserInfo = TRUE; string domainname; int startuptime=0; bool AlertDone=FALSE; //+------------------------------------------------------------------+ //| Custom indicator initialization function | //+------------------------------------------------------------------+ int init() { Print(" *** init "+iName+", © 2014 Marc (fxdaytrader) *** http://ForexBaron.net"); IndicatorShortName(iName); if (UseLocalTime) startuptime = TimeLocal(); else if (!UseLocalTime) startuptime = TimeCurrent(); //---- return(0); } int start() { if (ShowUserInfo) DisplayUserInfo(); if (EnableTimer) { if (!AlertDone) if (IsSleepPeriodOver(MinutesToWait)) AlertDone=TRUE;//finished }//if (EnableTimer) { return(0); } bool IsSleepPeriodOver(double minutestosleep) { int TradingHourTime; if (UseLocalTime) TradingHourTime = TimeLocal(); else if (!UseLocalTime) TradingHourTime = TimeCurrent(); int alerttime; ///////////////////////// if (AlertOnCertainTime) { if (TimeHour(TradingHourTime)==AlertHour && TimeMinute(TradingHourTime)==AlertMinute) { //GlobalVariableSet(globalvarName1,TimeDay(TradingHo urTime)); doAlerts("It is "+AlertHour+":"+AlertMinute+" now",SoundFileName); return(true); } }//if (AlertOnCertainTime) { ///////////////////////// if (AlertAfterMinutes) { if ( (UseLocalTime && (TimeLocal()-startuptime) >= (minutestosleep * 60)) || (!UseLocalTime && (TimeCurrent()-startuptime) >= (minutestosleep * 60)) ) { //GlobalVariableSet(globalvarName2,TimeDay(TradingHo urTime)); doAlerts(minutestosleep+" minutes are over now",SoundFileName); return(true); } }//if (AlertAfterMinutes) { //TIME NOT OVER, so return(false): return(false); } void doAlerts(string msg,string SoundFile) { msg=iName+" Alert: "+msg;//+", bid = "+DoubleToStr(MarketInfo(Symbol(),MODE_BID),Digits )+", servertime: "+TimeToStr(TimeCurrent()); string emailsubject="MT4 alert on acc. "+AccountNumber()+", "+WindowExpertName()+" - "+iName+" Alert"; if (PopupAlerts) Alert(msg); if (EmailAlerts) SendMail(emailsubject,msg); if (PushNotificationAlerts) SendNotification(msg); if (SoundAlerts) PlaySound(SoundFile); }//void doAlerts(string msg,string SoundFile) { string bool2txt(int lbool) { if (lbool==true) return("yes"); if (lbool==false) return("no"); return("%"); } void DisplayUserInfo() { int TradingHourTime; if (UseLocalTime) TradingHourTime = TimeLocal(); else if (!UseLocalTime) TradingHourTime = TimeCurrent(); Comment ("\n"+iName+", © 2014 Marc (fxdaytrader) *** "+domainname+"\n"+ " EnableTimer="+bool2txt(EnableTimer)+", UseLocalTime="+bool2txt(UseLocalTime)+", AlertAfterMinutes("+DoubleToStr(MinutesToWait,2)+" )="+bool2txt(AlertAfterMinutes)+", AlertOnCertainTime("+AlertHour+":"+AlertMinute+")= "+bool2txt(AlertOnCertainTime)+"\n"+ " ALERTS DONE="+bool2txt(AlertDone)+", current time (local time="+bool2txt(UseLocalTime)+")="+TimeToStr(Tradi ngHourTime)); } |
Mit so einer Schleife kannst Du an jeder Stelle des Programms eine Verzögerung erreichen. Die Zahl muß nur groß genug sein, je schneller der Professor ist.
traderdoc |
Alle Zeitangaben in WEZ +1. Es ist jetzt 06:20 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