Erreurs, bugs, questions - page 2531

 
Aleksey Vyazmikin:

C'est dommage que vous n'ayez même pas osé participer aux tests.

Voulait exécuter un test le premier jour, mais le fil a grandi à plusieurs pages, certains bugs dans la première version du code de test ... n'a pas lu plus loin, mes propres intérêts

Je pense que j'ai besoin d'un manuel clair (avec des images) et d'un minimum de réflexion sur ce qu'il faut faire pour l'utilisateur, puis l'activité de l'utilisateur peut apparaître.

 
Igor Makanu:

Je voulais exécuter le test le premier jour, mais le fil de discussion s'est étendu sur plusieurs pages, des bugs avec la première version du code de test... Je n'ai pas voulu lire plus loin, je me suis intéressé à mes propres intérêts

Je pense que j'ai besoin d'un manuel clair (avec des images) et d'un minimum de réflexion sur ce qu'il faut faire pour l'utilisateur, puis l'activité de l'utilisateur peut apparaître...

Et le forum lui-même est très inconfortable pour quelque chose comme ça, nous avons besoin de la possibilité pour l'auteur du sujet d'éditer le premier post à la fin de n'importe quelle période, où se trouvent toutes les informations nécessaires et pertinentes, plutôt que de chercher parmi la masse de messages. Dans ce format, ce n'est qu'un fil conducteur pour la gaffe.

 

Voici une question.

Je dois stocker un pointeur vers un tableau de type double[] (habituel, indicateur) afin qu'il puisse être référencé dans le programme.

Les développeurs de la norme suggèrent soit de transmettre une référence à ce tableau dans toute la hiérarchie des fonctions, encombrant ainsi les paramètres d'entrée là où cela n'est absolument pas nécessaire, soit de copier l'intégralité du tableau sur lui-même àchaque tic, puis d'utiliser une référence à son tableau interne, qui peut être transmis, mémorisé et utilisé dans la hiérarchie des fonctions.

Les deux solutions me semblent très laides. Passer une référence à travers l'arbre d'appel entier est déjà laid, et quand vous considérez que nous ne savons pas à quel moment nous pourrions avoir besoin d'accéder au tableau, cela devient vraiment stupide.

Copier l'ensemble du tableau à chaque tic, alors qu'il y a une source, c'est aussi un peu un état d'esprit, et surtout, c'est une perte de productivité.

Quelqu'un a-t-il rencontré ce problème ? Comment contourner cette limitation stupide ?

Je me souviens qu'une fois, je crois,fxsaber a suggéré une fonction de copie d'adresse en utilisant une action chamanique, mais je ne la retrouve pas.

Qui peut suggérer quoi ?

 
Vict:

Mon processeur de rareté est seulement en ma possession et dans un musée, il n'est guère intéressant pour personne.

Il est toujours intéressant d'évaluer les progrès réalisés.


Igor Makanu:

Je voulais exécuter le test le premier jour, mais le fil de discussion a pris plusieurs pages, certains bugs avec la première version du code de test... Je n'ai pas lu plus loin et j'ai été occupé par mes propres intérêts.

Je pense que j'ai besoin d'un manuel clair (avec des images) et d'un minimum de réflexion sur ce qu'il faut faire pour l'utilisateur, puis l'activité de l'utilisateur peut apparaître.

Il ne devrait pas y avoir de bogues, les autres fonctionnent bien. Voici maintenant une capture d'écran de la façon dont le testeur de stratégie doit être configuré.

Je ne pensais pas du tout qu'il serait difficile de mettre en place l'optimiseur... Ce qui n'est pas clair maintenant - laissez-moi vous donner un indice.


Vict :

Et le forum lui-même est très inconfortable pour quelque chose comme ça, nous avons besoin de la possibilité pour l'auteur du fil de discussion d'éditer le premier message après n'importe quelle période, où toutes les informations nécessaires et pertinentes se trouvent, plutôt que de chercher parmi les masses de messages. Dans ce format, ce n'est qu'un fil conducteur pour la gaffe.

Nous n'avons pas d'autre forum, je mets régulièrement à jour les résultats lorsqu'il y a des informations - ce n'est pas si difficile à trouver.

 
Georgiy Merts:

Voici une question.

Je dois stocker un pointeur vers un tableau de type double[] (habituel, indicateur) afin qu'il puisse être référencé dans le programme.

Les développeurs de la norme suggèrent soit de transmettre une référence à ce tableau tout au long de la hiérarchie des fonctions, encombrant ainsi les paramètres d'entrée là où cela n'est absolument pas nécessaire, soit de copier l'intégralité du tableau sur lui-même àchaque tic, puis d'utiliser une référence à son tableau interne, qui peut être transmis, mémorisé et utilisé au sein de la hiérarchie des fonctions.

Les deux solutions me semblent très laides. Passer une référence à travers l'arbre d'appel entier est déjà laid, et quand vous considérez que nous ne savons pas à quel moment nous pourrions avoir besoin d'accéder au tableau, cela devient vraiment stupide.

Copier l'ensemble du tableau à chaque tic, alors qu'il y a une source, c'est aussi un peu un état d'esprit, et surtout, c'est une perte de productivité.

Quelqu'un a-t-il rencontré ce problème ? Comment contourner cette limitation stupide ?

Je me souviens qu'une fois, je crois,fxsaber a suggéré une fonction de copie d'adresse en utilisant une action chamanique, mais je ne la retrouve pas.

Qui peut suggérer quoi ?

Si nous parlons de mql5, nous pourrions envelopper l'indicateur dans une classe et, si nécessaire, le tirer, et dans cette classe nous organisons la copie et le stockage des données nécessaires vers le ngbin requis et contrôlons sa mise à jour unique à chaque tick. Je le fais de cette façon.
 
Vladimir Simakov:
Si nous parlons de mql5, alors, comme alternative, nous transformons l'indicateur en une classe et, si nécessaire, nous le récupérons et l'utilisons pour stocker et copier les données nécessaires dans le ngbin requis et contrôler sa mise à jour unique à chaque tick. Je le fais de cette façon.

C'est ce que je fais habituellement moi-même...

Mais cela ne fonctionne pas avec les tampons indicateurs. Ou ai-je manqué quelque chose et cela peut être fait d'une manière ou d'une autre ?

 
Georgiy Merts:

Mais avec les tampons indicateurs, l'enveloppe ne disparaît pas.

C'est toujours le cas.
 
Georgiy Merts:

Mais avec les tampons indicateurs, l'emballage ne passe pas. Ou bien j'ai raté quelque chose, cela peut-il se faire d'une manière ou d'une autre ?

tout fonctionne, mais les tableaux qui seront des tampons indicateurs doivent être décrits avec le modificateur public

J'ai créé un indicateur HMA pour MQL4 - 4 indicateurs dans une sous-fenêtre :

CHMA *hma[4];
int OnInit()
  {
//--- indicator buffers mapping
   int i=0;
   hma[0] = new CHMA(4,PeriodInd1,Method1,Price1,Shift1);
   hma[1] = new CHMA(3,PeriodInd2,Method2,Price2,Shift2);
   hma[2] = new CHMA(2,PeriodInd3,Method3,Price3,Shift3);
   hma[3] = new CHMA(1,PeriodInd4,Method4,Price4,Shift4);

   IndicatorBuffers(16);
   IndicatorSetDouble(INDICATOR_MINIMUM,0.0);
   IndicatorSetDouble(INDICATOR_MAXIMUM,5.0);
   IndicatorSetInteger(INDICATOR_HEIGHT,IndHeight);
   while(i<8)       { SetIndexBuffer(i,hma[int(i/2)].Uptrend); SetIndexBuffer(i+1,hma[int(i/2)].Dntrend); i+=2; 			}
   for(i=0;i<4;i++) { SetIndexBuffer(i+8,hma[i].ExtMapBuffer); SetIndexBuffer(i+12,hma[i].vect); 					}
   for(i=0;i<8;i++) { SetIndexStyle(i,DRAW_ARROW,EMPTY,ArrowWidth, i%2==0 ? ArrowColor1 : ArrowColor2); SetIndexArrow(i,ArrowCode); 	}
   for(i=8;i<17;i++){ SetIndexStyle(i,DRAW_NONE);											}
   IndicatorShortName("");
   IndicatorDigits(0);
//---
   return(INIT_SUCCEEDED);
  }

et la classe elle-même où le corps de l'ancien indicateur a juste été copié :

class CHMA
  {
private:
   int               period_,shift_,p,level_;
   ENUM_APPLIED_PRICE price_;
   ENUM_MA_METHOD    method_;
   double            GetWMA(int x,int per){ return(iMA(NULL,0,per,0,method_,price_,x+shift_)); }
public:
   double            ExtMapBuffer[],vect[],Uptrend[],Dntrend[];
                     CHMA(int level,int period,ENUM_MA_METHOD method,ENUM_APPLIED_PRICE price,int shift);
   void              calcind(int lim,int prevcalculated);
   int               lastvalue();
  };

la couleur jaune correspond aux tampons de l'ancien indicateur, je n'ai pas voulu changer le code de l'ancien indicateur du tout, je l'ai juste copié dans la classe, cela m'a pris un peu moins d'une heure

 
TheXpert:
a toujours fait.

Que voulez-vous dire ? Vous pouvez déclarer un membre de la classe comme un tableau d'indicateurs.

Je vais vérifier maintenant.

Hmmm... Bien...

Eh bien, alors - tout est beaucoup plus simple, et la question est résolue sans aucun problème - nous déclarons les membres de la classe comme des tableaux d'indicateurs, et passons un pointeur à cette même classe pour la mémorisation. La solution, bien sûr, n'est pas très agréable, mais en l'absence de pointeurs vers le tableau, elle est acceptable.

 
Igor Makanu:

tout fonctionne, mais les tableaux qui seront des tampons indicateurs doivent être décrits avec le modificateur public

Oui, bien sûr.

Bien sûr, l'accès public aux membres de la classe n'est pas bon, mais le problème principal - l'accès aux données du tableau sans copie - est résolu.

Merci, la question est clarifiée.

Raison: