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

 
Vitaly Muzichenko:

Tout ce qui précède fait le code, à l'exception du jaune mis en évidence - je pense qu'il est inutile et pas tout à fait correct. Je n'ai jamais vu personne se retourner à une heure différente, toujours à la même heure - 22-00 GMT, mais je peux me tromper.

Mais on constate souvent des durées de reconduction différentes, certaines de 5 minutes, d'autres d'un peu plus d'une minute.

---

Vérifier le code, peut-être changer quelque chose :

Donc et lier tout à l'heure GMT. Obtenez la différence entre l'heure locale et l'heure du serveur, et vous pouvez immédiatement comprendre dans combien de rollover. Et 5 minutes ou 1, je pense qu'il n'y a pas de différence significative. Prenez 5 minutes pour tous.

 
Alexey Viktorov:

Donc, attachez tout à l'heure GMT. Obtenez la différence entre l'heure locale et l'heure du serveur, et vous pouvez immédiatement comprendre la durée du roulement. Et 5 minutes ou 1, je ne pense pas qu'il y ait une grande différence. Prenez 5 minutes pour tous.

En quoi votre option est-elle meilleure ou plus fiable ?

Si vous le pouvez, montrez-moi le code !
 
Vitaly Muzichenko:

En quoi le vôtre est-il meilleur, ou plus fiable ?

Peut-être pas du tout. Je n'ai pas suivi vos codes. Je donne juste mon avis.

 

Vitaly Muzichenko:

Si vous le pouvez, montrez-moi le code !

Tu fais semblant ?

 
Alexey Viktorov:

Peut-être que ce n'est rien. Je n'ai pas suivi vos codes. Je donne juste mon avis.

Voici tout en un seul post :

Vous devez filtrer l'entrée du spread pendant le roulement afin que l'EA ne négocie pas sur le spread étendu.

Forum sur le trading, les systèmes de trading automatisés et les tests de stratégie

Toutes les questions des débutants sur MQL4 et MQL5, aide et discussion sur les algorithmes et les codes.

Vitaly Muzichenko, 2021.02.11 14:04

Je n'ai jamais rencontré un tel code auparavant. D'une manière ou d'une autre, je n'ai jamais vu que le renversement était quelqu'un à un moment différent, toujours en un seul et même temps - à 22-00 GMT, bien que je puisse me tromper.

Mais on constate souvent des durées de reconduction différentes, certaines de 5 minutes, d'autres d'un peu plus d'une minute.

---

Vérifier le code, peut-être changer quelque chose :

//+------------------------------------------------------------------+
void OnTick(void)
{
   int sp = SymbolInfoInteger(Symbol(),SYMBOL_SPREAD);
   static int ts=0;

   if(CheckSpr(sp)) {
      // Здесь код отправки
      Comment( sp,"=",ts++,"=",res );
   } else Comment( "false: ",sp,"=",ts++,"=",res );
}

//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
MqlDateTime dt;
int res=0;
bool CheckSpr(int _sp)
{
  TimeGMT(dt);
  static int ts=0;
  static long tc=0;
   if(dt.hour==22) return(false); // ролловер
   tc++;
   ts += _sp;
   res =ts/tc;
   if(tc>LONG_MAX-1) {
      tc=0;
      ts=0;
   }
   // Comment( res,"=",tc );
   if(tc<500) return(false); // собираем спред на 500 тиках
   return(res>_sp?true:false);
}

 
Vitaly Muzichenko:

Voici tout en un seul message :

Nous devons éliminer l'entrée de l'écart pendant le roulement afin que l'EA ne négocie pas sur l'écart étendu.


Pas d'échanges pendant une heure complète ?

   if(dt.hour==22) return(false); // ролловер

Ou avez-vous mal compris quelque chose ?

 
Vitaly Muzichenko:

Voici tout en un seul message :

Nous devons filtrer l'entrée du spread pendant le rollover, afin que l'EA ne traite pas sur le spread étendu.


est-ce que nous interdisons hypothétiquement une sorte d'enregistrement étalé (fichier, base de données) spécifiquement dans le roulement ?

 
Alexey Viktorov:

Pas d'échange pendant une heure entière ?

Ou avez-vous mal compris quelque chose ?

C'est vrai, pendant une heure entière après, l'écart se creuse. Et avant le retournement dans 5 minutes, elle est élargie à certains endroits également.

 
Alexey Viktorov:

Pas d'échange pendant une heure entière ?

Ou ai-je mal compris quelque chose ?

Cependant, on pourrait l'écrire de cette façon :

void OnTick(void)
{
   int sp = SymbolInfoInteger(Symbol(),SYMBOL_SPREAD);

   if(CheckSpr(sp)) {
      // Здесь код отправки
      Comment( sp,"=",res );
   } else Comment( "false: ",sp,"=",res );
}

//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
MqlDateTime dt;
int res=0;
bool CheckSpr(int _sp)
{
  static int ts=0;
  static long tc=0;
  TimeGMT(dt);
   if(dt.hour==22 && res<_sp) return(false); // Если 1 час после ролловера спред упадёт до нормального - торгуем
   tc++;
   ts += _sp;
   res =ts/tc;
   if(tc>LONG_MAX-1) {
      tc=0;
      ts=0;
   }
   if(tc<500) return(false);
   return(res>_sp?true:false);
}

Cela devrait fonctionner correctement.

 
Vitaly Muzichenko:

Vous pourriez cependant le prescrire de cette façon :

Ça devrait marcher.

C'est drôle... Ça ne devrait pas...)

Si la bataille est pour une transaction avec un spread normal, il suffit de mettre sa "limite" en entrée et d'ignorer la transaction si le spread est supérieur à la limite.

Les spreads peuvent être étirés par des dillings sans rollover.

Raison: