Retarder l'alerte de plusieurs secondes

 
Bonjour à tous.
Je voudrais modifier ce code pour que l' alerte, au lieu d'apparaître à l'ouverture de la bougie, détecte les conditions après quelques secondes.

Merci pour tout, Massimo.


int start(){
if (BarStart !=Time[0]) 
{
  BarStart = Time[0]; 

  //Indicator Buffer 1
     
       if ( iRSI(NULL, PERIOD_CURRENT, 2, PRICE_CLOSE, 0+1) > 70
      
      
      )
        {
         Buffer1[0] = Low[0] - iATR(NULL, PERIOD_CURRENT, 14, 0); //Set indicator value at Candlestick Low - Average True Range
        }
      else
        {
         Buffer1[0] = 0;
        }
      //Indicator Buffer 2
    
      && iRSI(NULL, PERIOD_CURRENT, 2, PRICE_CLOSE, 0) < 30
     
      )
        {
         Buffer2[0] = High[0] + iATR(NULL, PERIOD_CURRENT, 14, 0); //Set indicator value at Candlestick High + Average True Range
        }
      else
        {
         Buffer2[0] = 0;
        }
     }
   return(0);
  }
 
omissamf: Je voudrais modifier ce code
  1. Alors qu'est-ce qui vous retient ? Apprenez à le coder ou payez quelqu'un. Nous n'allons pas le coder POUR vous. Nous sommes prêts à vous AIDER si vous postez votre tentative (en utilisant SRC) et la nature de votre problème.
  2. Avez-vous essayé
      BarStart = Time[0]; 
      Sleep(3000); RefreshRates();

 
Bonjour WHRoeder, merci pour votre réponse. Je m'excuse pour mon comportement, mais ce n'était pas mon intention d'offenser ou de manquer de respect à qui que ce soit. J'ai essayé toute la journée de changer le code pour accomplir ceci, mais je n'ai pas réussi. Ils sont le début de l'étude MQL4. Je demande à nouveau pardon aux administrateurs. Salutations, Massimo
 

Bonjour WHRoeder, j'ai essayé, mais ça ne marche pas! !! J'ai essayé par tous les moyens, mais je ne comprends pas où je me trompe ! !!

En tout cas, merci pour tout, Massimo.

 
Je ne vois pas d'alerte dans votre code
 
Bonjour GunRai, je vous envoie le code complet, donc je vais vous expliquer. Je ne pouvais pas retarder la confirmation des conditions de l'ouverture de la bougie (comme il le fait maintenant), mais après 3 secondes, même la suggestion de WHRoeder. Je ne peux pas comprendre où je me trompe ! !!

Merci, Max.


//+------------------------------------------------------------------+
//|                                                    RSI 70-30.mq4 |
//|                                                          Massimo |
//|                                             https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Massimo"
#property link      "https://www.mql5.com"
#property version   "1.00"
#include <stdlib.mqh>
#include <stderror.mqh>

//--- indicator settings
#property indicator_chart_window
#property indicator_buffers 2

#property  indicator_type1 DRAW_ARROW
#property  indicator_width1 1
#property  indicator_color1 0xFFAA00
#property  indicator_label1 "Buy"

#property  indicator_type2 DRAW_ARROW
#property  indicator_width2 1
#property  indicator_color2 0x0000FF
#property  indicator_label2 "Sell"
static datetime BarStart=0;

//--- indicator buffers
double Buffer1[];
double Buffer2[];

datetime time_alert; //used when sending alert
extern bool Audible_Alerts = true;
double myPoint; //initialized in OnInit

void myAlert(string type, string message)
  {
   if(type == "print")
      Print(message);
   else if(type == "error")
     {
      Print(type+" | RSI 30-70 @ "+Symbol()+","+Period()+" | "+message);
     }
   else if(type == "order")
     {
     }
   else if(type == "modify")
     {
     }
   else if(type == "indicator")
     {
      if(Audible_Alerts) Alert(type+" | RSI 30-70 @ "+Symbol()+","+Period()+" | "+message);
     }
  }
  
  //+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int OnInit()
  {   
   IndicatorBuffers(2);
   SetIndexBuffer(0, Buffer1);
   SetIndexEmptyValue(0, 0);
   SetIndexArrow(0, 241);
   SetIndexBuffer(1, Buffer2);
   SetIndexEmptyValue(1, 0);
   SetIndexArrow(1, 242);
   //initialize myPoint
   myPoint = Point();
   if(Digits() == 5 || Digits() == 3)
     {
      myPoint *= 10;
     }
   return(INIT_SUCCEEDED);
  }
//_____________________________________________
//_____________________________________________


int start(){
if (BarStart !=Time[0]) 
{
  BarStart = Time[0]; 
   Sleep(3000); RefreshRates(); //this code don't work

//
     
      //Indicator Buffer 1
      if(iRSI(NULL, PERIOD_CURRENT, 2, PRICE_CLOSE, 0) < 30
      
      )
        {
         Buffer1[0] = Low[0] - iATR(NULL, PERIOD_CURRENT, 14, 0); //Set indicator value at Candlestick Low - Average True Range
         if(0 == 0 && Time[0] != time_alert) { myAlert("indicator", "Buy"); time_alert = Time[0]; } //Instant alert, only once per bar
        }
      else
        {
         Buffer1[0] = 0;
        }
      //Indicator Buffer 2
      if(iRSI(NULL, PERIOD_CURRENT, 2, PRICE_CLOSE, 0) > 70
     
      )
        {
         Buffer2[0] = High[0] + iATR(NULL, PERIOD_CURRENT, 14, 0); //Set indicator value at Candlestick High + Average True Range
         if(0 == 0 && Time[0] != time_alert) { myAlert("indicator", "Sell"); time_alert = Time[0]; } //Instant alert, only once per bar
        }
      else
        {
         Buffer2[0] = 0;
        }
     }
   return(0);
  }
//+------------------------------------------------------------------+
 
Vous avez raison, vous exécutez un indicateur.
int start(){
if (BarStart !=Time[0]) 
{
  BarStart = Time[0]; 
   Sleep(3000); RefreshRates(); //this code don't work
Essayez ceci
#define   MAX_DATETIME   D'3000.12.31 23:59:59'  // 32,535,215,999
#define   MIN_DATETIME   D'1970.01.01 00:00:00'  // Zero.

int start(){
static datetime alertTime = MAX_DATETIME;
if(TimeCurrent() > alertTime){ alertTime = MAX_DATETIME; Alert(...); }
if (BarStart !=Time[0]) 
{
  BarStart = Time[0]; 
  :
  if(condition) alertTime = TimeCurrent() + 3; // Delay
 
WHRoeder:
Vous avez raison, vous exécutez un indicateur.
Essayez ceci

Merci, maintenant j'étudie le code que vous m' avez posté et je vous le ferai savoir.
Pour l'instant, merci infiniment, Massimo.
 
WHRoeder:
Vous avez raison, vous utilisez un indicateur.
y thi

WHRoeder Bonjour, j'ai essayé de modifier le code avec vos instructions. J'ai essayé plusieurs façons et c'est ce que vous envoyez est ce que vous avez pas d'erreurs, mais le retard d'environ cinq secondes il ya seulement sull'alerte sonore, tandis que les flèches continuent d'apparaître ouverture exacte de la bougie.

Bonjour et merci, Massimo.

#define   MAX_DATETIME   D'3000.12.31 23:59:59'  // 32,535,215,999
#define   MIN_DATETIME   D'1970.01.01 00:00:00'  // Zero.


int start(){
static datetime alertTime = MAX_DATETIME;
if (TimeCurrent() > alertTime)
{ alertTime = MAX_DATETIME;
 Alert(“ ATTENTION!!!!); }

if (BarStart !=Time[0]) 
{
  BarStart = Time[0]; 
  
//
     
      //Indicator Buffer 1
      if(iRSI(NULL, PERIOD_CURRENT, 2, PRICE_CLOSE, 0) < 30
      
      )
        {
         alertTime = TimeCurrent() + 3;
         Buffer1[0] = Low[0] - iATR(NULL, PERIOD_CURRENT, 14, 0);        }
      else
        {
         Buffer1[0] = 0;
        }
      //Indicator Buffer 2
      if(iRSI(NULL, PERIOD_CURRENT, 2, PRICE_CLOSE, 0) > 70
     
      )
        {
                     alertTime = TimeCurrent() + 3;
         Buffer2[0] = High[0] + iATR(NULL, PERIOD_CURRENT, 14, 0);                }
      else
        {
         Buffer2[0] = 0;
        }
     }
   return(0);
  }
//+------------------------------------------------------------------+





 
omissamf: il n'y a que le son sull'alerte,
  1. Aucune idée de ce que vous vouliez dire.
  2. Alert( ATTENTION!!!!); }
    Essayez/postez un code qui se compile.
 
WHRoeder:
  1. Aucune idée de ce que vous vouliez dire.
  2. Essayez/postez un code qui se compile.
J'ai mis ATTENTION ! !! parce que c'est celui qui apparaît en alerte sonore/visuelle, mais j' essaie, avec votre aide, de retarder l'apparition de la Flèche de quelques secondes. Dans ce cas. Attention ! !! Il apparaîtra après 5 secondes, alors que les Flèches apparaissent juste après l'ouverture de la bougie.
Merci pour tout, Massimo.
Raison: