Soirée de fin de semaine - page 9

 
Aleksey Panfilov:

Il y a six poignées d'un indicateur sur trois échelles de temps.

Et la compensation de la valeur à prendre, est déjà fixée. J'ai copié sur eux une valeur à la fois.

J'ai été troublé par l'utilisation de trois poignées d'un indicateur sur trois horizons temporels et par la copie de l'intervalle de décalage possible à partir de ces poignées.

Si vous devez obtenir une valeur d'indicateur à partir de plusieurs barres à la fois, vous devez copier les valeurs dans un tableau. En utilisant l'iATR comme exemple :

//+------------------------------------------------------------------+
//| Get value of buffers for the iATR                                |
//+------------------------------------------------------------------+
double iATRGet(const int index)
  {
   double ATR[1];
//--- reset error code 
   ResetLastError();
//--- fill a part of the iATR array with values from the indicator buffer that has 0 index 
   if(CopyBuffer(handle_iATR,0,index,1,ATR)<0)
     {
      //--- if the copying fails, tell the error code 
      PrintFormat("Failed to copy data from the iATR indicator, error code %d",GetLastError());
      //--- quit with zero result - it means that the indicator is considered as not calculated 
      return(0.0);
     }
   return(ATR[0]);
  }
//+------------------------------------------------------------------+
//| Get value of buffers for the iATR in the array                   |
//+------------------------------------------------------------------+
bool iATRGetArray(const int start_pos,const int count,double &arr_buffer[])
  {
   bool result=true;
   if(!ArrayIsDynamic(arr_buffer))
     {
      Print("This a no dynamic array!");
      return(false);
     }
   ArrayFree(arr_buffer);
   int       buffer_num=0;          // indicator buffer number 
//--- reset error code 
   ResetLastError();
//--- fill a part of the iATRBuffer array with values from the indicator buffer that has 0 index 
   int copied=CopyBuffer(handle_iATR,buffer_num,start_pos,count,arr_buffer);
   if(copied!=count)
     {
      //--- if the copying fails, tell the error code 
      PrintFormat("Failed to copy data from the iATR indicator, error code %d",GetLastError());
      //--- quit with zero result - it means that the indicator is considered as not calculated 
      return(false);
     }
//---
   return(result);
  }
 
Vladimir Karputov:

Si vous voulez recevoir une valeur d'indicateur de plus d'une barre à la fois, vous devez copier les valeurs dans un tableau. En utilisant l'iATR comme exemple :

Oui, il semble que c'était une erreur de laisser les tableaux que j'ai copiés en dynamique. :(

Je vais vérifier.

 
Aleksey Panfilov:

Oui, il semble que ce soit une erreur de laisser les tableaux que j'ai copiés en dynamique. :(

Je vais vérifier.

Je ne copie que dans les tableaux dynamiques! Et, avant de copier, j'ai forcéArrayFree. J'ai eu des problèmes avec les tableaux statiques. Depuis lors, uniquement des dynamiques.

 
Vladimir Karputov:

Je ne copie que dans des tableaux dynamiques! Et avant de copier, je forceArrayFree. Il y avait des problèmes avec les tableaux statiques. Depuis lors, uniquement des dynamiques.

Je l'ai. L'erreur n'est pas là.

Voici le conseiller expert qui n'est pas parti.

Dossiers :
 
Aleksey Panfilov:

Je l'ai. L'erreur n'est pas là.

Voici l'expert qui n'y est pas allé.

ERREUR : est-ce que vous copiez UNE valeur ou DEUX?

   //---  Используя функцию CopyBuffer, мы копируем по 1 последних новых значения индикаторов в динамические массивы

   if(CopyBuffer(Handle_4P72_L0_1,0,0,200,line1_L0)<0  // || CopyBuffer(Handle_4P72_L0_2,0,0,1,line2_L0)<0   || CopyBuffer(SMA_Handle_00,0,0,1,SMA_L0)<0
   || CopyBuffer(Handle_4P72_L1_1,0,0,200,line1_L1)<0  // || CopyBuffer(Handle_4P72_L1_2,0,0,1,line2_L1)<0   || CopyBuffer(SMA_Handle_01,0,0,1,SMA_L1)<0
   || CopyBuffer(Handle_4P72_L2_1,0,0,200,line1_L2)<0  // || CopyBuffer(Handle_4P72_L2_2,0,0,1,line2_L2)<0   || CopyBuffer(SMA_Handle_02,0,0,1,SMA_L2)<0
   ||  CopyTime(_Symbol,_Period,0,1,New_Time)<0)
 
Vladimir Karputov:

ERREUR : est-ce que vous copiez UNE valeur ou DEUX?

Dans cet EA (dont la date est différente), j'ai essayé trois manuels et deux cents valeurs.

 

Si vous êtes prêt à créer des robots pour MT5, je peux commencer à vous donner des idées. Je simule les conditions dans TS-Lab, mais j'aimerais les négocier sur MT5 en mode automatique.

S'il n'y a pas de problème avec le test, je décrirai la logique de négociation. Le premier sera probablement celui-ci.

 
Vladimir Karputov:

Je vais commencer par de petites portions.

Dès qu'il y a des"Secondes avant la fermeture de la bougie signal" secondes avant la fermeture de la bougie actuelle, nous calculons la taille moyenne des bougies"Nombre de bougies pour le calcul de la taille moyenne des bougies". Si la bougie actuelle dépasse la taille moyenne de"Bougie actuelle : excès de taille, pourcentages" - nous ouvrons une position avec le volume"Lots" et plaçons un ordre limite en attente avec le volume"Lots" *"Facteur de multiplication" à partir du prix d'ouverture à la distance de"Niveau limite en attente : pourcentage de la hauteur de la bougie actuelle" en pourcentage de la hauteur de la bougie du signal.

Est-ce correct ?


J'ai besoin de temps pour me souvenir de ce que j'ai fait là-bas :) J'attrape un rhume à cause des courants d'air. C'est à la fois rageant et drôle : avoir de la fièvre en été et attraper un rhume :)

 
Vladimir Karputov:

Il faut du temps pour se souvenir de ce que j'ai fait :) Et puis, comme si c'était voulu, il y a des courants d'air et le résultat est un rhume. C'est à la fois drôle et rageant : avoir de la fièvre et attraper un rhume en été :)

Sentez-vous mieux.

 
Vladimir Karputov:

Je ne copie que dans des tableaux dynamiques! Et avant de copier, je forceArrayFree. Il y avait des problèmes avec les tableaux statiques. Depuis lors, uniquement des dynamiques.

Oh, allez... Je n'ai pas non plus de problème avec les statiques. Cela dépend de ce dont nous parlons, cependant. Dans les indices, oui, les dynamiques sont meilleures, si l'on ne souhaite pas gérer le tampon et attraper les erreurs. Mais chez les hiboux, il n'y a pas de différence, en fait.