Erreurs, bugs, questions - page 276

 

Merci beaucoup pour votre rapidité)

 

Sur le sujet. Je l'ai presque eu, mais COUNTER ne démarre pas dans le journal du terminal dit


supprimé

chargé avec succès


ça a marché ! !!
 

vous avez une erreur ici.

   v161_handle=iCustom(NULL,0,"ErolМТ5");                            
   v162_handle=iCustom(NULL,0,"ErolМТ5");
   Sum_handle=iCustom(NULL,0,"ErolМТ5");
Dans ce cas, les trois variables auront le même handle, car vous appelez le même indicateur trois fois.
 
sergey1294:

vous avez une erreur ici

Dans ce cas, les trois variables auront le même handle, car vous appelez le même indicateur trois fois.

Oui, mais si je comprends bien, les valeurs des lignes d' indice de l'indicateur (les valeurs des 3 lignes)

on s'en sort :

CopyBuffer(v161_handle,1,0,3,Spr1Buffer)
CopyBuffer(v162_handle,2,0,3,Spr2Buffer)
CopyBuffer(Sum_handle,4,0,3,SumBuffer)

ici 1, 2 et 4 sont les valeurs d'index des lignes d'indicateur, qui sont stockées dans le tampon,

que nous comparons ensuite entre elles.

Mais ce n'est pas un problème, il ne calcule pas correctement avec ces indices de ligne indicatrice.

Документация по MQL5: Стандартные константы, перечисления и структуры / Константы индикаторов / Линии индикаторов
Документация по MQL5: Стандартные константы, перечисления и структуры / Константы индикаторов / Линии индикаторов
  • www.mql5.com
Стандартные константы, перечисления и структуры / Константы индикаторов / Линии индикаторов - Документация по MQL5
 

Des conseils sur les endroits où aller ou sur ce qu'il faut faire ici ?


void OnTick()
{  
   ArraySetAsSeries(Spr1Buffer,true);
   ArraySetAsSeries(Spr2Buffer,true);
   ArraySetAsSeries(SumBuffer,true);

   if(CopyBuffer(v161_handle,1,0,3,Spr1Buffer)<0 || CopyBuffer(v162_handle,2,0,3,Spr2Buffer)<0 || CopyBuffer(Sum_handle,4,0,3,SumBuffer)<0)
      {
      Alert("Ошибка копирования буферов индикатора номер ошибки:",GetLastError());
      }
   bool SellSpr1 =(Spr1Buffer[1] > Spr2Buffer[1]);
   bool SellSum1 =(SumBuffer[1]>=Sp);
   if(SellSpr1 && SellSum1 && !PositionSelect(_Symbol))     
      {
        PositionOpenSell1();
      }
   bool BuySpr1 =(Spr1Buffer[1] < Spr2Buffer[1]);
   bool BuySum1 =(SumBuffer[1]>=Sp);
   if(BuySpr1 && BuySum1 && !PositionSelect(_Symbol))     
      {
        PositionOpenBuy1();
      }
 
alexluek:

Oui, mais si je comprends bien, les valeurs des lignes d' indice de l'indicateur (valeurs des 3 lignes)

on s'en sort :

ici 1, 2 et 4 sont les valeurs d'index des lignes d'indicateur, qui sont stockées dans le tampon,

que nous comparons ensuite les uns aux autres.

Mais ce n'est pas un problème, il ne calcule pas correctement selon ces indices de lignes d'indicateur

Il suffit de charger une copie de l'indicateur et d'adresser les index de tampon nécessaires via le tampon de copie
 
sergey1294:
Il suffit de charger une copie de l'indicateur, et d'adresser l'index du tampon désiré via le copybuffer.

Non, je n'arrive pas à obtenir les valeurs de la 2ème ligne.

car les valeurs de 2 indices de ligne stockés dans des tampons différents sont comparées.


   bool SellSpr1 =(Spr1Buffer[1] > Spr2Buffer[1]);
 
alexluek:

Faux, il n'est pas possible d'obtenir les valeurs de la 2ème ligne

car les valeurs de 2 indices de ligne stockés dans des tampons différents sont comparées.


il peut y avoir une erreur dans l'indicateur lui-même
 
sergey1294:
il peut y avoir des erreurs dans l'indicateur lui-même

l'indicateur lit correctement

 

Sauver le noyé est le travail du noyé.

Cela peut s'avérer utile à l'avenir :

Pour appeler 2 ou plusieurs lignes d'indicateurs dans un EA pour la barre courante.

choisir 1 handle et appeler l'indicateur, puis utiliser le copybuffer pour sauvegarder les valeurs d'indice

et ensuite travailler avec ces tampons. sergey1294 merci pour l'aide !

int OnInit()
  {
   v161_handle=iCustom(NULL,0,"LeroyMТ5");                            
   if(v161_handle<0)
     {
      Alert("Ошибка при создании индикаторов: ",GetLastError());
      return(-1);
     }
   return(0);
  }


void OnTick()
{  
   ArraySetAsSeries(Sp1Buffer,true);
   ArraySetAsSeries(Sp2Buffer,true);
   ArraySetAsSeries(Sp3Buffer,true);
   if(CopyBuffer(v161_handle,1,0,1,Sp1Buffer)<0 || CopyBuffer(v161_handle,2,0,1,Sp2Buffer)<0 || CopyBuffer(v161_handle,4,0,1,Sp3Buffer)<0)
      {
      Alert("Ошибка копирования буферов индикатора номер ошибки:",GetLastError());
      return;
      }    
   bool SellSpr1 =( Sp1Buffer[0]> Sp2Buffer[0] && Sp3Buffer[0]>=Sp );
   if(SellSpr1  && !PositionSelect(_Symbol))     
      {
        PositionOpenSell1();
      }
   bool BuySpr1 =( Sp1Buffer[0]< Sp2Buffer[0] && Sp3Buffer[0]>=Sp );
   if(BuySpr1 && !PositionSelect(_Symbol));   
      {
        PositionOpenBuy1();
      }
}     
Raison: