Erreurs, bugs, questions - page 1028

 
Silent:

Alors a) pourquoi cela fonctionne-t-il pour l'objet b) si on le remplace, il commence à s'effriter

Pas toutes, seulement 18 lignes sur 21...

Je vais essayer de les réécrire tous, ce n'est toujours pas clair. Il semble qu'il s'agisse d'un seul type.

ENUM_TIMEFRAMES current_period_tf=PERIOD_CURRENT;
   string n="";
   if(_Period==PERIOD_M1)  {current_period_tf=PERIOD_M1;};
   if(_Period==PERIOD_M2)  {current_period_tf=PERIOD_M2;};
   if(_Period==PERIOD_M3)  {current_period_tf=PERIOD_M3;};
   if(_Period==PERIOD_M4)  {current_period_tf=PERIOD_M4;};
   if(_Period==PERIOD_M5)  {current_period_tf=PERIOD_M5;};
   if(_Period==PERIOD_M6)  {current_period_tf=PERIOD_M6;};
   if(_Period==PERIOD_M10) {current_period_tf=PERIOD_M10;};
   if(_Period==PERIOD_M12) {current_period_tf=PERIOD_M12;};
   if(_Period==PERIOD_M15) {current_period_tf=PERIOD_M15;};
   if(_Period==PERIOD_M20) {current_period_tf=PERIOD_M20;};
   if(_Period==PERIOD_M30) {current_period_tf=PERIOD_M30;};
   if(_Period==PERIOD_H1)  {current_period_tf=PERIOD_H1;};
   if(_Period==PERIOD_H2)  {current_period_tf=PERIOD_H2;};
   if(_Period==PERIOD_H3)  {current_period_tf=PERIOD_H3;};
   if(_Period==PERIOD_H4)  {current_period_tf=PERIOD_H4;};
   if(_Period==PERIOD_H6)  {current_period_tf=PERIOD_H6;};
   if(_Period==PERIOD_H8)  {current_period_tf=PERIOD_H8;};
   if(_Period==PERIOD_H12) {current_period_tf=PERIOD_H12;};
   if(_Period==PERIOD_D1)  {current_period_tf=PERIOD_D1;};
   if(_Period==PERIOD_W1)  {current_period_tf=PERIOD_D1;};
   if(_Period==PERIOD_MN1) {current_period_tf=PERIOD_MN1;};
   ChartSetSymbolPeriod(ChartID(),_Symbol,PERIOD_M1);
   ObjectSetInteger(0,n,OBJPROP_TIMEFRAMES,current_period_tf);
   ChartSetSymbolPeriod(ChartID(),_Symbol,current_period_tf);
 
tol64:
Oui, je l'ai fait, merci, ça fait tic-tac).
 
Silent:
Oui, je l'ai fait, merci, ça fait tic-tac).

Maintenant, essayez comme ceci :

   string n="";
   ENUM_TIMEFRAMES current_period_tf=_Period;
   ChartSetSymbolPeriod(ChartID(),_Symbol,PERIOD_M1);
   ObjectSetInteger(0,n,OBJPROP_TIMEFRAMES,current_period_tf);
   ChartSetSymbolPeriod(ChartID(),_Symbol,current_period_tf);

 
MetaDriver:

Maintenant, essayez comme ceci :

J'ai essayé, je n'arrive pas à revenir de M1 automatiquement. Si j'énumère comme ci-dessus

if(_Period==PERIOD_M1)  {current_period_tf=PERIOD_M1;};

Je peux revenir de temps en temps, mais si j'assigne _Période en une seule fois, je tombe en M1 et y reste.

La mise à jour n'est pas sauvegardée même si je me suis déplacé à la fin de l'indicateur.

     if(_Period==PERIOD_M1) {ChartSetSymbolPeriod(ChartID(),_Symbol,current_period_tf);};

Je ne sais pas pourquoi il se bouche, j'essaie de le découvrir.

 

C'est une béquille au lieu de la synchronisation (sur une sortie lorsqu'il n'y a pas de ticks). L'idée est comme un tank - il y a une erreur - passez à M1 et revenez.

   if(_LastError!=0)
     {
      ChartSetSymbolPeriod(ChartID(),_Symbol,PERIOD_M1);
      ChartSetSymbolPeriod(ChartID(),_Symbol,current_period_tf);
     };
   if(_LastError==0)
     {
      ChartSetSymbolPeriod(ChartID(),_Symbol,current_period_tf);
     };
// и контрольный
   if(_Period==PERIOD_M1) {ChartSetSymbolPeriod(ChartID(),_Symbol,current_period_tf);};
seulement à partir de M1 il ne se libère pas toujours.
 
Silent:

J'ai essayé, à partir de M1 je ne peux pas revenir en arrière automatiquement. Si j'énumère comme ci-dessus

Je peux revenir en arrière de temps en temps, mais si j'assigne _Period en une seule fois, je tombe en M1 et j'y reste.

Votre cas est guéri par un petit glissement.

   string n="";
   ENUM_TIMEFRAMES current_period_tf=_Period;
   ChartSetSymbolPeriod(ChartID(),_Symbol,PERIOD_M1);
   Sleep(150);
   ObjectSetInteger(0,n,OBJPROP_TIMEFRAMES,current_period_tf);
   ChartSetSymbolPeriod(ChartID(),_Symbol,current_period_tf);

Le mien est pire. (Au fait, votre boîtier fonctionnait sans Slip, il a cessé de fonctionner il y a quelques semaines).

Le même schéma a cessé de fonctionner sans glissade sur d'autres cartes (non actuelles) :

void cChartReInit::Run() // Scanning all charts and reinit if button is pushed
  {
   for(long i=ChartNext(0);i>0;i=ChartNext(i))
    {
     if(!ChartGetInteger(i,CHART_WINDOW_IS_VISIBLE)) continue;
     long wc = ChartGetInteger(i,CHART_WINDOWS_TOTAL);
     long wi = ObjectFind(i, pButtonName);
     if(--wc!=wi) { CreateReinitButton(i); ChartRedraw(i); continue;}
     if(ObjectGetInteger(i,pButtonName,OBJPROP_STATE))
       {
        ObjectSetInteger(i,pButtonName,OBJPROP_STATE,false);
        ENUM_TIMEFRAMES cp = ChartPeriod(i);
        Sleep(1350);  // раньше это было не нужно
        ChartSetSymbolPeriod(i, ChartSymbol(i), ((cp==PERIOD_M1) ? PERIOD_M5 : PERIOD_M1));
        Sleep(1350);  // раньше это было не нужно
        ChartSetSymbolPeriod(i, ChartSymbol(i), cp);
       }
     ChartRedraw(i);
    } // for(Charts)
  }
Code d'ici : https://www.mql5.com/ru/code/224
ChartReinit
ChartReinit
  • votes : 7
  • 2010.11.29
  • Vladimir Gomonov
  • www.mql5.com
Кнопочная переинициализация чарта с перерасчетом всех индикаторов, а также простенький и прозрачный объектно-ориентированный пример обработки всех чартов из одного эксперта.
 
MetaDriver:

Votre dossier est traité avec une petite fiche.

Le mien est pire. (Au fait, votre affaire sans Slip fonctionnait, elle s'est arrêtée il y a quelques semaines).

Mais le même schéma a cessé de fonctionner sans dérapage sur d'autres cartes (non actuelles) :

Code d'ici : https://www.mql5.com/ru/code/224/10323

Le glissement ne fonctionne pas dans les indicateurs, n'est-ce pas ?

Lien vers les lancements de la page 404

 
Silent:

Le glissement ne fonctionne pas dans les indicateurs, n'est-ce pas ?

C'est un lien vers une page 404.

Oui.

Essayez une sorte de boucle coûteuse...

Vous pourriez le faire avec un minuteur, mais je n'aime pas tout ça.

// J'ai corrigé le lien. D'abord via "mes codes", maintenant via une connexion commune à kodobaza. Est-ce que ça fonctionne maintenant ? Ou dois-je me déconnecter pour obtenir un lien public ?

 
MetaDriver:

Ouais. :(

Essayez une sorte de cycle coûteux...

Je peux le faire avec un minuteur, mais je n'aime pas tout ça.

J'ai essayé d'attacher OnTimer avec ChartRedraw au lieu de passer à un autre cadre temporel - aucune réponse, il met à jour, mais l'erreur se bloque.

Je vais regarder à nouveau.

Update a le sentiment que tout ceci est lié aux fils. Quelque part, ils ne correspondent pas, l'un se bloque avec une erreur, l'autre tique tout seul. La synchronisation Ras, cependant. Et il n'y a pas de commande pour un recalcul complet.

J'ai aussi essayé

#define   RESET 0

   if(_LastError!=0)
     {
     return(RESET);
     };
ça n'a pas l'air de fonctionner du tout. Je l'ai pris dans le kodobase cependant.
 
Silent:

J'ai essayé de joindre OnTimer avec ChartRedraw au lieu de passer à un autre TF - aucune réponse, il se met à jour, mais l'erreur se bloque.

Je vais réessayer.

Non, ça ne marche pas comme ça. Il faut une pause après le premier interrupteur avant le second .
Raison: