Questions des débutants MQL5 MT5 MetaTrader 5 - page 638

 
Vitaly Muzichenko:

Quelqu'un peut-il me conseiller qui a rencontré et sait comment sortir de cette ligne ?

29301441,1475681547,0,0.01,EURUSD,1.1207,0.0000,0.0000,1475690944,1.1213,0.00,0.00,0.60,,13134545

comme ça :

-118,120,-39,52,-58,-76,62,-66,-49,-97,-38,-86,-125,-52,-70,-96,89,-23,13,-91,111,74,-79,16,65,127,116,-76,99,5,27,48,42,44,55,-94,84,-72,-63,115,26,18,-47,-46,5,-55,32,68,114,-20,46,-7,79,7,82,78,-91,41,82,-114,121,112,-64,-106,35,-10,24,-128,58,-81,-69,92,34,79,64,-97,52,-95,127,-18,-46,104,104,85,56,93,8,100,14,-52,-88,-38,-28,-76,-49,35,-74,27,120,74,53,124,-104,-59,-1,41,-127,-99,103,104,-38,2,47,-93,68,35,-15,44,123,47,78,-117,15,-114,-46,-98,-108,-26,

Merci !

La deuxième chaîne est plus que similaire à un tableau de caractères signés. En d'autres termes, la "chaîne" entière pourrait n'être qu'une structure binaire imprimée octet par octet, et elle pourrait avoir été chiffrée au préalable, de sorte qu'il n'y ait pas de zéro.
 

Bon après-midi.

Je ne suis pas un programmeur moi-même, mais je veux que mes EAs m'envoient des notifications par email des signaux. La tâche est simple et semble fonctionner, mais lorsque la condition du signal est remplie, ils envoient un nombre infini d'e-mails.

Veuillez m'aider à n'envoyer qu'un seul email à chaque signal.

Voici un exemple de mon code pour la moyenne mobile simple. Que dois-je ajouter ou corriger ?

int init()
  {
   return(0);
  }
start()
  {
//-----------------------------------------------------------------------------------------------------
// Сигналы
//-----------------------------------------------------------------------------------------------------
if(Open[1]>ma && Close[1]<ma)  {
bool res = SendMail("Сигнал", " Покупай");
}
if(Open[1]<ma && Close[1]>ma) {
SendMail("Сигна", "Продавай");
}
//-------------------------------------------------------------------
   return(0);
  }

 
ev85:

Bon après-midi.

Je ne suis pas un programmeur moi-même, mais je veux que mes EAs m'envoient des notifications par email des signaux. La tâche est simple et semble fonctionner, mais lorsque la condition du signal est remplie, ils envoient un nombre infini d'e-mails.

Veuillez m'aider à n'envoyer qu'un seul email à chaque signal.

Voici un exemple de mon code pour la moyenne mobile simple. Que dois-je ajouter ou corriger ?


Ajoutez la datetime mailTime et mémorisez l'heure avant l'envoi, afin de ne pas avoir à renvoyer le message.

datetime mailTime=0;
int init()
  {
   return(0);
  }

start()
  {
//-----------------------------------------------------------------------------------------------------
// Сигналы
//-----------------------------------------------------------------------------------------------------
if(Open[1]>ma && Close[1]<ma && Time[1]>mailTime)  {
bool res = SendMail("Сигнал", " Покупай");
if (res) mailTime=Time[1];
 }
if(Open[1]<ma && Close[1]>ma && Time[1]>mailTime) {
bool res=SendMail("Сигна", "Продавай");
if (res) mailTime=Time[1];
 }
//-------------------------------------------------------------------
   return(0);
  }

ps. il est temps de passer de start() à OnTick() dans les EAs

pps. mailTime doit également être enregistré dans les variables globales du terminal en cas de redémarrage d'Expert Advisor.

 
Maxim Kuznetsov:

ajoutez la datetime mailTime et mémorisez l'heure de pré-envoi pour ne pas avoir à renvoyer l'e-mail.

ps. il est temps de passer de start() à OnTick() dans les EAs

pps. Le mailTime doit également être enregistré dans les variables globales du terminal au cas où l'EA serait redémarré.

Cela n'a pas fonctionné. Il continue à envoyer les messages tout le temps.

 
ev85:

Bon après-midi.

Je ne suis pas un programmeur moi-même, mais je veux que mes EAs m'envoient des notifications par email des signaux. La tâche est simple et semble fonctionner, mais lorsque la condition du signal est remplie, ils envoient un nombre infini d'e-mails.

Veuillez m'aider à n'envoyer qu'un seul email à chaque signal.

Voici un exemple de mon code pour la moyenne mobile simple. Que dois-je ajouter ou corriger ?



static datetime TimeN=0;
int init()
  {
   return(0);
  }
start()
  {
//Операции выполняются только при появлении следующего бара
   datetime TimeC=iTime(NULL,TF,0);
   if(TimeN==0)TimeN=TimeC;
   if(TimeN==TimeC) return;
   TimeN=TimeC;

//-----------------------------------------------------------------------------------------------------
// Сигналы
//-----------------------------------------------------------------------------------------------------
if(Open[1]>ma && Close[1]<ma)  {
bool res = SendMail("Сигнал", " Покупай");
}
if(Open[1]<ma && Close[1]>ma) {
SendMail("Сигна", "Продавай");
}
//-------------------------------------------------------------------
   return(0);
  }
 
-Aleks-:
Cette année, aucun courriel n'a été envoyé.
 
ev85:
Avec cette année, aucun courriel n'est envoyé du tout((
Alors, à quoi correspond votre ma ? Est-ce que c'est le ma de la barre de zéro par hasard ?
 
-Aleks-:
Alors, à quoi correspond ma ? Ce n'est pas ma sur la barre de zéro par hasard ?

ma=iMA(NULL,0,MovingPeriod,MovingShift,MODE_SMA,PRICE_CLOSE,0) ;

 
ev85:

ma=iMA(NULL,0,MovingPeriod,MovingShift,MODE_SMA,PRICE_CLOSE,0) ;

Alors tout est clair. Le Mach de la barre zéro est constamment recalculé - les signaux sont donc émis à chaque tick.

Essayez de cette façon :

static datetime TimeN=0;

int Signal=0;


int init()

  {

   return(0);

  }

start()

  {

//Операции выполняются только при появлении следующего бара

   datetime TimeC=iTime(NULL,TF,0);

   if(TimeN==0)TimeN=TimeC;

   if(TimeN==TimeC && Signal==1) return;

   TimeN=TimeC;

   Signal=0;


//-----------------------------------------------------------------------------------------------------

// Сигналы

//-----------------------------------------------------------------------------------------------------

if(Open[1]>ma && Close[1]<ma)  

{

bool res = SendMail("Сигнал", " Покупай");

Signal=1;

}

if(Open[1]<ma && Close[1]>ma) 

{

SendMail("Сигнал", "Продавай");

Signal=1;

}

   return(0);

  }


En général, il faut faire une comparaison

ma=iMA(NULL,0,MovingPeriod,MovingShift,MODE_SMA,PRICE_CLOSE,1) ;

ma>Open[0] ;


 
Maxim Kuznetsov:
la deuxième chaîne est plus que similaire à un tableau de caractères signés. En d'autres termes, la "chaîne" entière peut n'être qu'une structure binaire imprimée octet par octet, et elle peut avoir été chiffrée au préalable, de sorte qu'il n'y a pas de 0.
Oui, après quelques manipulations, il s'est avéré que la chaîne de caractères est bien un caractère signé. Maintenant la question est : comment le rendre lisible sur le serveur ?
Raison: