Toute question des nouveaux arrivants sur MQL4 et MQL5, aide et discussion sur les algorithmes et les codes. - page 648

 
psyman:

Neverness, pourquoi écrivez-vous cela ici ?

Commencez un fil séparé dans le flume et distribuez des éléphants là-bas, chapeau bas à vous.

Je l'ai dit au modérateur tout de suite.

M. le modérateur, discutons de la théorie du commerce dans un fil séparé.

Le modérateur est contre pour l'instant.

Peut-être que le modérateur n'a pas sa propre "théorie commerciale".

 
inter78:

Bonjour, je me pose également la question du passage d'un graphique à l'autre. Il y a 28 ou 30 graphiques ouverts. Je les échange de manière réfléchie avec des raccourcis et s'ils correspondent à la condition , j'ouvre les positions. J'en ai 10 ou 20. Ou 5. Cela n'a pas d'importance. L'important, c'est que les autres se mettent en travers du chemin et qu'il n'y a pas d'information sur les postes ouverts. J'ai essayé d'envoyer les ID dans des variables globales. Mais il renvoie des chiffres complètement différents. On m'a expliqué que l'ID est grande et déformée. J'ai essayé à travers un fichier. Il revient en TXT et n'est pas converti en long. J'ai mis ID manuellement dans le code - cela semble fonctionner. Lorsque je déplace le champ, il ouvre le graphique nécessaire. Que dois-je faire correctement ?

Le double et le long ont la même longueur - 8 octets.

Pour enregistrer un long en double (et vice versa), vous pouvez utiliser "union".


Par exemple :

//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
void OnStart()
  {
//---
   long id=ChartID();
   
   double X=LongToDouble(id);
   long   Y=DoubleToLong(X);
   
   Print("id=",id," X=",X," Y=",Y);
  }


//+------------------------------------------------------------------+
union eightbytes
   {
   double   dbl;
   long     lng;
   } VALUE;

double LongToDouble(long value)
   {
   VALUE.lng=value;
   return(VALUE.dbl);
   }

long DoubleToLong (double value)
   {
   VALUE.dbl=value;
   return(VALUE.lng);
   }
 
neverness:

J'en ai parlé au modérateur tout de suite.

M. le modérateur, discutons de la théorie du commerce dans un fil séparé.

Le modérateur est contre pour l'instant.

Peut-être que le modérateur n'a pas sa propre "théorie commerciale".

Vous devez vous rendre dans la branche des clowns théoriques où ils aiment dessiner quelque chose que vous ne comprenez pas et dont vous ne savez pas pourquoi.

Il y a beaucoup de fils similaires sur le forum - discutez-en au moins !

От теории к практике
От теории к практике
  • 2017.12.01
  • www.mql5.com
Добрый вечер, уважаемые трейдеры! Решил было на какое-то время покинуть форум, и сразу как-то скучно стало:)))) А просто читать, увы - неинтересно...
 
Taras Slobodyanik:

Double et long ont la même longueur - 8 octets.

Pour enregistrer un long en double (et vice versa), vous pouvez utiliser "union".


Par exemple :

Excusez-moi, Taras, pourriez-vous avoir un morceau de code sur la façon d'envoyer l'ID à une variable globale et de le récupérer sans distorsion ?
 
inter78:
Désolé Taras, ne pouvez-vous pas avoir un peu de code sur la façon d'envoyer l'ID à une variable globale et l'extraire sans distorsion ?

donc tout est prêt, il faut juste ajouter l'écriture/lecture

string GVname="gvName";

//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
void OnStart()
  {
//---
   //создаем временную глобальную переменную
   if (!GlobalVariableCheck(GVname))
      GlobalVariableTemp(GVname);
   
   long  id=ChartID();
   
   //сохраняем long как double
   GV_Save(LongToDouble(id));
   
   //читаем double и переводим в long
   long  Y=DoubleToLong(GV_Read());
   
   Print("id=",id," Y=",Y);
  }

//+------------------------------------------------------------------+
union eightbytes
   {
   double   dbl;
   long     lng;
   } VALUE;

double LongToDouble(long value)
   {
   VALUE.lng=value;
   return(VALUE.dbl);
   }

long DoubleToLong (double value)
   {
   VALUE.dbl=value;
   return(VALUE.lng);
   }


//+------------------------------------------------------------------+
double GV_Read()
{
if (!GlobalVariableCheck(GVname))
   GlobalVariableTemp(GVname);
   
return(GlobalVariableGet(GVname));
}
//+------------------------------------------------------------------+
void GV_Save(double value)
{
GlobalVariableSet(GVname, value);
}
 
Taras Slobodyanik:

donc tout est en place, il faut juste ajouter l'écriture/lecture

Merci beaucoup ! Je me demande si quelqu'un a déjà essayé de fabriquer un tel indicateur ? Je n'ai pas été capable d'en trouver un aussi longtemps. Je pense que cela intéresserait beaucoup de monde.
 
Vitaly Muzichenko:

Faire l'initialisation OnInit()

Non, il n'y a pas de signal sur la barre actuelle. Peut-être que la variable _time peut être réinitialisée après que l'indicateur ait tout compté pour la première fois après avoir rejoint le graphique.

Comment puis-je savoir que l'indicateur a tout compté une fois ?
 
Ghabo:

Je lance l'indicateur sur le graphique et... ALERTE mais le signal est à 5 barres. Pendant la suite des travaux, il émet des bips comme il se doit.

Comment faire pour qu'il arrête de biper au démarrage ?

if(М_А>0.0)  
{
if(time!=Time[0])
   {
    time=Time[0]; 
    AL(Symbol()+" "+Period()+" УХ ТЫ",2);//
   }
 }

Dans la fonction AL(), toutes les alertes possibles.

Qu'est-ce que M_A ? Que contient-il et d'où proviennent ses données ?

Vous devez vérifier la validité du signal sur la barre actuelle en même temps que le contrôle du temps. Et vous vérifiez juste la valeur M_A. D'où vient-il ?

 
Artyom Trishkin:

Qu'est-ce que M_A ? Que contient-il et d'où proviennent ses données ?

Vous devez vérifier la validité du signal sur la barre actuelle ainsi que le temps. Et vous vérifiez simplement la valeur M_A. D'où vient-il ?

Appeler un indicateur.

М_А =NormalizeDouble(iCustom(NULL,0,"Morning_All_Best",0,i),Digits);

Comment vérifier la validité ?

 
Ghabo:

Appel de l'indicateur.

Comment puis-je vérifier la validité de ces documents ?

1. Pourquoi faites-vous de la normalisation ? C'est une opération trop coûteuse pour fonctionner en cycle d'indicateurs et elle n'est pas nécessaire ici.

2. Que signifie "plus de zéro" ? Quels signaux cet indicateur personnalisé émet-il ? Qu'est-ce qui est affiché dans les valeurs tampons de cet indicateur dans la fenêtre de données (Ctrl+D) ?

Raison: