[Toute question de débutant, afin de ne pas encombrer le forum. Professionnels, ne passez pas votre chemin. Je ne peux aller nulle part sans toi. - page 315

 
chief2000 >> :

La question est de savoir comment cela fonctionne (optimisation des indicateurs) :

Est-ce que je comprends bien qu'à chaque nouveau tic, le même rectangle

(de même taille avec un nombre égal de barres) seront supprimées et redessinées ?

Est-il utile d'ajouter une vérification du nombre de barres (s'il y a plus de barres, alors seulement redessiner) ?

Pour décharger l'unité centrale de l'ordinateur ou le gain sera-t-il minime et ne vaudra-t-il pas la peine de s'y attarder ?

Oui, et au lieu d'effacer, ObjectCreate peut être défini en vérifiant if(ObjectFind(RectangleSell)==-1){ ObjectCreate()}

et le reste sans vérification, de sorte que vous n'avez pas à supprimer et à remettre en place un objet à chaque tic.

if( MA_Fast[ i+1]> MA_Slow[ i+1]) {
   string RectangleSell = StringConcatenate("RECTANGLE_", StartBoxTime);   
   if(ObjectFind( RectangleSell)==-1){
      ObjectCreate( RectangleSell, OBJ_RECTANGLE, 0,  StartBoxTime, BoxLow,  EndBoxTime, BoxHigh);
     }
   ObjectSet( RectangleSell, OBJPROP_STYLE, STYLE_SOLID);
   ObjectSet( RectangleSell, OBJPROP_RAY, False);
   ObjectSet( RectangleSell, OBJPROP_WIDTH, 1);
   ObjectSet( RectangleSell, OBJPROP_BACK , True);
   ObjectSet( RectangleSell, OBJPROP_COLOR, ColorSell);
}
 
Vinin >> :

Nous devons ajouter la synchronisation du temps.

Il y a sûrement des développements, vous pouvez montrer comment l'implémenter sur MA !

 
Vladimir11 >> :

Pouvez-vous me conseiller, je travaille sur un programme quotidien.

Et je veux accéder aux données des minutes. S'agit-il de données actualisées ou anciennes ?

Si en temps réel, ils sont mis à jour, si dans le testeur sur D1, les données M.. sur les dernières barres (en temps réel et non celui qui est testé).

 

C'est mon premier message sur le forum. J'étudie le MQL4. Je ne sais pas si une telle question a déjà été posée, je ne l'ai pas trouvée. Je pense que je dois utiliser la fonction IndicatorCounted, mais je ne sais pas comment m'y prendre. J'ai ajouté des cotations pour 300 000 et maintenant, lorsque j'essaie de lancer des accroches d'indicateurs, je pense que je ne devrais pas spécifier toutes les cotations, mais seulement une certaine, par exemple 3000. Mais je ne veux pas recalculer tous les 3000 aussi, j'ai besoin d'IndicatorCounted. Je ne sais pas comment spécifier la condition qui montrerait seulement les 3000 derniers et ne recalculerait pas ceux déjà passés.

Merci pour vos commentaires.

 
depth_finde >> :

C'est mon premier message sur le forum. J'étudie le MQL4. Je ne sais pas si une telle question a déjà été posée, je ne l'ai pas trouvée. Je pense que je dois utiliser la fonction IndicatorCounted, mais je ne sais pas comment m'y prendre. J'ai ajouté des cotations pour 300 000 et maintenant, lorsque j'essaie de lancer des accroches d'indicateurs, je pense que je ne devrais pas spécifier toutes les cotations, mais seulement une certaine, par exemple 3000. Mais je ne veux pas recalculer tous les 3000 aussi, j'ai besoin d'IndicatorCounted. Je ne sais pas comment spécifier la condition qui montrerait seulement les 3000 derniers et ne recalculerait pas ceux déjà passés.

Merci pour vos commentaires.

Oui, comme ça.

int start()
  {
   int counted_bars = IndicatorCounted();
//----
   if( counted_bars < 0) 
       return(-1);
//----
   if( counted_bars > 0) 
       counted_bars --;
   int pos = Bars - counted_bars;  
//----
   while( pos >= 0) 
     {
       ma1_buffer[ pos] = iMA(NULL, 0 , Period1* Коэфициент, 0, Метод_Вычисления_МА, Низ,  pos);
       ma2_buffer[ pos] = iMA(NULL, 0 , Period1* Коэфициент, 0, Метод_Вычисления_МА, Верх, pos);
       ma3_buffer[ pos] = iMA(NULL, 0 , Period2* Коэфициент, 0, Метод_Вычисления_МА, Низ,  pos);
       ma4_buffer[ pos] = iMA(NULL, 0 , Period2* Коэфициент, 0, Метод_Вычисления_МА, Верх, pos);
       ma5_buffer[ pos] = iMA(NULL, 0 , Period3* Коэфициент, 0, Метод_Вычисления_МА, Низ,  pos);
       ma6_buffer[ pos] = iMA(NULL, 0 , Period3* Коэфициент, 0, Метод_Вычисления_МА, Верх, pos);
       pos--;
       
     }
     
//----
   return(0);
  }
//+------------------------------------------------------------------+
 
costy_ писал(а) >>

Si en temps réel, ils sont mis à jour, si dans le testeur D1, les données M.. sur les dernières barres (en temps réel et non en temps testé).

Répondu en privé

 
costy_ писал(а) >>

C'est plus ou moins comme ça.

Probablement pas, parce que comme vous l'avez montré dans la première manche sera calculé non pas 3000 mais 300000 citations, tout ce qu'il ya.

 
depth_finde >> :

Probablement pas, car de la façon dont vous avez montré la première exécution, elle ne lira pas 3000 mais 300000 citations, autant qu'il y en ait.

Eh bien oui, une seule fois, puis changé ! !!

Pour que l'indicateur apparaisse sur l'ensemble du graphique et non sur une partie de celui-ci.

 
Vinin >> :

Répondu en personne.

>>Merci beaucoup !

 
costy_ писал(а) >>

Eh bien oui, juste une fois, puis changé ! !!

Pour afficher l'indicateur sur l'ensemble du graphique et non sur une partie de celui-ci.

L'idée est de ne pas télécharger les 300 000 indicateurs et d'attendre 5 minutes pour qu'ils se chargent, mais d'en télécharger 3000 au premier passage et ensuite seulement ceux qui ont changé.

Si nous avons cinq indicateurs de ce type sur un graphique, le processus de chargement prendra 25 minutes.

Raison: