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

 
Alexey Viktorov:

Artyom, je n'ai pas commencé ma réponse par les mots...


Le parabolique a une alternance stricte, deux signaux dans une direction même sur des barres différentes sont impossibles. Et il n'y a pas besoin d'inventer quoi que ce soit pour cela, il ne fait pas de bruit même sur une barre zéro, comme la MA.

Cliquetis - Je l'ai déjà remarqué plus d'une fois. Peut-être que quelque chose a changé depuis, mais le point sur la barre du zéro peut disparaître - il l'était.

Je pars comme d'habitude du principe que plus tard on peut changer l'indicateur pour un autre - et ce bloc de code fonctionnera déjà indépendamment - habitude ...

 
Artyom Trishkin:
Cela aiderait-il? J'y ai posté un modèle, à partir duquel vous pouvez faire vous-même ce que vous voulez.

Merci, je l'ai appliqué en gros, mais j'ai toujours l'impression qu'il change parfois le SL immédiatement lorsqu'une transaction est ouverte.
 
AlGuru:

Merci, je l'ai appliqué de manière approximative, mais j'ai toujours l'impression que parfois il change de SL immédiatement lorsqu'une transaction est ouverte.
Ensuite, il faut dérouler les valeurs SL et mettre Print() dans le chalut aussi, pour qu'il rende compte de son travail et des valeurs qu'il atteint - sinon le sentiment n'est qu'un sentiment ;)
 
Une question s'est posée les gars ! Y a-t-il une limite au nombre de chiffres dans un numéro magik ? Combien de chiffres doit-il y avoir ?
 
Rustam Bikbulatov:
Voici une question pour vous les gars ! Y a-t-il une limite au nombre de chiffres du nombre magique ? Combien de chiffres doit-il y avoir ?


Un magik est généralement défini par un type int entier.

int

Le type entier int a une taille de 4 octets (32 bits). La valeur minimale est de -2.147.483.648, la valeur maximale est de 2.147.483.647.

Comme ça.

 
Alekseu Fedotov:


Une magie est généralement définie par le type entier int.

int

Le type entier int a une taille de 4 octets (32 bits). La valeur minimale est de -2.147.483.648, la valeur maximale est de 2.147.483.647.

Comme ça.


Merci beaucoup !
 

Bonjour à tous, J'ai écrit un EA et je n'arrive pas à comprendre le code. J'ai besoin que la fonction soit exécutée à chaque tick et à chaque seconde du serveur. Je viens d'appeler ma fonction 2 fois, parOnTick et ensuite parOnTimer semble avoir tout fait correctement, mais il lui manque encore souvent une seconde et à cause de cela ne fonctionne parfois pas au bon moment. Une aide, qui sait, serait très appréciée). Peut-être à cause d'une rupture de connexion avec le serveur qui cesse de fonctionner ? Est-il possible de le faire fonctionner chaque seconde, même s'il y a une interruption de la communication, et que les secondes soient strictement synchronisées avec l'heure du serveur ?


int OnInit()

  {

   EventSetTimer(1);

   return(INIT_SUCCEEDED);

  }

void OnTick()

{

Clicker (); //-- старт каждый тик

}

void OnTimer()

{

Clicker (); //-- старт каждую секунду

}

void Clicker()

  {

//--- тут идёт порядка 30 строк кода, вырезал чтобы никого не грузить

   Comment("Sek = " + (Seconds()));

   return;                                      // Выход из start()  

  }

 
Mes amis, veuillez aider un programmeur MQL4 débutant en lui donnant quelques conseils.
J'ai écrit un code qui devrait déterminer le prix maximum d'ouverture de la base pour les n dernières barres, mais pour une raison quelconque, l'EA considère le prix maximum d'ouverture de toutes les barres du graphique.

void OnTick()
{
   for (int i = 1; i <= BarTotal; i++)
   {
      double High_Open = iOpen(Symbol(), PERIOD_H1, i); 
      if (High_Open >= Current_High)
      {
         Current_High = High_Open;
         Print (Current_High); 
      }
   }
}

Merci)

 
ivan-baaton:
Mes amis, veuillez aider un programmeur MQL4 débutant en lui donnant quelques conseils.
J'ai écrit un code qui devrait déterminer le prix maximum d'ouverture de la base pour les n dernières barres, mais l'EA pour une raison quelconque considère le prix maximum d'ouverture de toutes les barres sur le graphique.

...

Merci)

Essayez une fonction comme celle-ci :

//+------------------------------------------------------------------+
double GetMaxOpen(const string symbol_name,const ENUM_TIMEFRAMES timeframe,uint start_pos,const uint count){
   double array[];
   ResetLastError();
   if(CopyOpen(symbol_name,timeframe,start_pos,count,array)==count) return(array[ArrayMaximum(array)]);
   Print(__FUNCTION__," > Ошибка копирования в массив: ",GetLastError());
   return(WRONG_VALUE);
}
//+------------------------------------------------------------------+

Je ne l'ai pas regardé, je l'ai pratiquement écrit tout seul, donc je peux avoir manqué quelque chose.

 

J'ai compris mon erreur, mais je n'ai pas compris comment la résoudre. La tâche est normalement lancée toutes les secondes, mais le temps depuis le début de la bougie actuelle n'est pas compté correctement.

La fonction Seconds() produit des secondes à partir des données du dernier tick connu, mais j'ai besoin de compter le nombre réel de secondes depuis l'ouverture de la bougie minute au moment où la fonction est appelée, même s'il n'y a pas eu de ticks au cours des dernières secondes.

TimeSeconds (TimeLocal()) ou ( TimeLocal() - Time[0]) ne fonctionnera pas non plus, car l'heure locale peut différer du serveur de plusieurs secondes. Comment résoudre le problème ?

Raison: