[ARCHIVE] Toute question de débutant, afin de ne pas encombrer le forum. Professionnels, ne passez pas à côté. Nulle part sans toi - 3. - page 556

 


Il est bien sûr préférable de passer au tableau de lecture/écriture

1. Ne modifiez pas la taille du tableau par 1 à chaque itération, il est préférable de le faire moins fréquemment, par exemple en l'augmentant par incréments de 50 ou 100 si nécessaire.

2. Vous feriez mieux d'utiliser DoubleToStr() pour l'impression des contrôles.

3. je ne comprends pas pourquoi une variable de type chaîne de caractères est utilisée pour la lecture.

 
Vinin:


Il est bien sûr préférable de passer à un tableau de lecture/écriture.

1. Ne modifiez pas la taille du tableau par 1 à chaque itération, il est préférable de le faire moins fréquemment, par exemple en l'augmentant par incréments de 50 ou 100 si nécessaire.

2. Il est préférable d'utiliser DoubleToStr() pour l'impression de contrôle.

3. je ne comprends pas pourquoi une variable de type chaîne de caractères est utilisée pour la lecture.

1. cela ne fonctionne pas autrement. il écrit des lignes nulles, comme pour 4 colonnes, il doit être mis à jour à chaque fois.

2. ok.

3. un conseil spécial, maintenant il lit tout correctement. mais il s'avère, une ligne nulle est redondante, et une course supplémentaire.mais la valeur n'est pas là, donc il remplit la ligne nulle en conséquence.

 
orb:

1. cela ne fonctionne pas autrement. il écrit des lignes nulles, comme pour 4 colonnes que vous devez mettre à jour à chaque fois

2. ok.

3. un spécial conseillé, maintenant il lit tout correctement. mais il s'avère, une ligne nulle est supplémentaire, tandis qu'une course supplémentaire.et la valeur n'est pas là, respectivement la ligne nulle est remplie.


Avec une telle approche, il y aura de gros freins.
 
Vinin:

Avec cette approche, il y aura de gros freins.

Je vois, jusqu'à présent c'est plus facile pour moi d'écrire de cette façon.

Pouvez-vous me dire comment éviter que le "while" soit exécuté une fois de plus ?

 
orb:

Je vois, jusqu'à présent c'est plus facile pour moi d'écrire de cette façon.

comment se débarrasser de l'exécution d'une fois de plus ?



Je ne pouvais pas m'en débarrasser. Mais je n'ai pas utilisé de variables de type chaîne
 
Je l'ai. Peut-on alors appliquer ArrayResize(); moins que le compteur de la boucle, cela supprimera-t-il cette chaîne du tableau ?
 
orb:
Je l'ai. Peut-on alors appliquer ArrayResize() ; moins que le nombre de cycles, cela supprimera-t-il cette chaîne du tableau ?

Oui, il le fera.

Moins vous utilisez cette fonction, plus elle est rapide. Réserver 100 éléments et lire en contrôlant le dépassement du tableau. Si nécessaire, augmentez à nouveau le tableau de 100 éléments. Dans le même temps, vous conservez le nombre réel d'éléments téléchargés. Après un téléchargement complet du tableau, vous faites un nouveau ArrayResize(), mais par le nombre réel d'éléments téléchargés.

Mais les fonctions permettant de travailler avec des tableaux fonctionnent plus correctement. Vous devez d'abord enregistrer le nombre d'éléments du tableau dans un fichier, puis le tableau lui-même.

Lire le nombre d'éléments en premier, définir la taille du tableau. Téléchargez le tableau. Et pas de boucles

 
Vinin:

Oui, il le fera.

Moins vous utilisez cette fonction, plus elle est rapide. Réserver 100 éléments et lire en contrôlant le dépassement du tableau. Si nécessaire, augmentez à nouveau le tableau de 100 éléments. Dans le même temps, vous conservez le nombre réel d'éléments téléchargés. Après un téléchargement complet du tableau, vous faites un nouveau ArrayResize(), mais par le nombre réel d'éléments téléchargés.

Mais les fonctions permettant de travailler avec des tableaux fonctionnent plus correctement. Vous devez d'abord enregistrer le nombre d'éléments du tableau dans un fichier, puis le tableau lui-même.

Lire le nombre d'éléments en premier, définir la taille du tableau. Téléchargez le tableau. Et pas de boucles

Merci ! Je garderai cela à l'esprit pour l'avenir.
 

Veuillez me conseiller sur la manière de résoudre correctement ce problème :

Il y a une projection des niveaux de support/résistance de l'ancienne TF à la TF actuelle. Il est nécessaire de déterminer lequel de ces niveaux a été le dernier à être testé par le prix. J'ai essayé de le faire à travers les drapeaux :

int start()
{ 
      int limit;
      int counted_bars=IndicatorCounted();
      if(counted_bars>0) counted_bars--;

      limit=Bars-counted_bars;
      if(limit>barsToProcess)
         limit=barsToProcess;

     for(int i=0;i<limit;i++)

{
 
  bool flag_R[], flag_S[], S[];

   double Level_Re = iCustom(NULL,0,"........",0,i); // для каждого бара получаем значения со старшего ТФ
   double Level_Su = iCustom(NULL,0,"........",1,i); // для каждого бара получаем значения со старшего ТФ

{
   if (iHigh(Symbol(),0,i)>=Level_Re)              // проверяем тестирование ценой уровня Re
   {flag_R[i]=true; flag_S[i]=false; S[i]=true;}   // выставляем флаги
   
   if (iLow(Symbol(),0,i)<=Level_Su)               // проверяем тестирование ценой уровня Su
   {flag_R[i]=false; flag_S[i]=true; S[i]=true;}   // выставляем флаги


   if (S[i]==false) {flag_R[i]=flag_R[i+1]; flag_S[i]=flag_S[i+1];} // если тестирования не было - берем предыдущее значение

   if (flag_R[0]==true) Print("Re zone tested"); if (flag_S[0]==true) Print("Su zone tested");
   
}
}

return(0);
}

mais le journal ne montre rien.... [Si je configure, par exemple, Print(Level_Re), puis que je parcours l'ensemble du tableau, le journal s'arrête à la valeur du niveau de la dernière barre, c'est-à-dire que les niveaux eux-mêmes sont calculés correctement, mais avec les drapeaux, quelque chose ne fonctionne pas pour moi..... ]

Quelle est l'erreur ? Ou quelle est la meilleure façon de le faire ?

 
alkador:

à T-G

Essayez comme ceci :

datetime expiration=TimeCurrent()+MaxSecLiveTime ;

OrderSend(Symbol(), OP_BUYSTOP, Lots(), PriceBuy, 0, 0, 0, EA_Comment, Magic, expiration, CLR_NONE) ;


et quelle est la différence avec :

extern int MaxSecLiveTime = 120;
OrderSend(Symbol(), OP_BUYSTOP, Lots(), PriceBuy, 0, 0, 0, EA_Comment, Magic, TimeCurrent()+MaxSecLiveTime, CLR_NONE);
Raison: