Toute question de débutant, afin de ne pas encombrer le forum. Professionnels, ne passez pas à côté. Nulle part sans toi - 6. - page 935

 
Cette question : est-il possible de décaler l'indexation des éléments d'un tableau d'une unité sans créer un autre tableau similaire et sans copier élément par élément les informations du premier tableau (puis les recopier) dans celui-ci ? En fait, dans MT4, cela se fait en quelque sorte dans les tableaux de séries chronologiques (lorsqu'une nouvelle barre est formée, l'indice 0 lui est attribué, et les indices de tous les éléments précédents du tableau sont décalés d'une unité).
 
FxRoller:
Bonjour à tous, une question : est-il possible de décaler l'indexation des éléments d'un tableau d'une unité sans créer un autre tableau comme celui-ci et copier élément par élément les informations du premier tableau (et puis retour) dans celui-ci ? En fait, dans MT4, cela se fait en quelque sorte dans les tableaux de séries chronologiques (lorsqu'une nouvelle barre est formée, l'indice 0 lui est attribué, et les indices de tous les éléments précédents du tableau sont décalés d'une unité).

Je joins la question suivante : il serait pratique d'utiliser la fonction intégrée pour décaler la dimension N du tableau de M éléments vers la droite ou vers la gauche.

Pour autant que je sache, pour l'instant vous devez décaler par une boucle, en définissant la taille du tableau. Il est plus difficile d'utiliser la dynamique (+les données ne sont pas perdues).

 
kosmos0975:

Je joins la question suivante : il serait pratique d'utiliser la fonction intégrée pour décaler la dimension N du tableau de M éléments vers la droite ou vers la gauche.

Pour autant que je sache, pour l'instant vous devez décaler par une boucle, en définissant la taille du tableau. Il est plus compliqué d'utiliser la dynamique (+données non perdues).

SetIndexShift() ne vous aide-t-il pas ?

Définit le décalage de la ligne de l'indicateur par rapport au début du graphique.

voidSetIndexShift(
intindex,// nombre
int shift// shift
) ;

Paramètres

indice

[in] Numéro séquentiel de la ligne. Doit être compris entre 0 et 7.

équipe

[in] Valeur du décalage en barres.

Valeur retournée

Non.

Note

Une valeur positive décale l'image de la ligne vers la droite, une valeur négative la décale vers la gauche. La valeur calculée sur la barre actuelle est dessinée avec le décalage spécifié par rapport à la barre actuelle.

Exemple :

 

Vous pouvez également copier un tableau sur lui-même avec un décalage.

int  ArrayCopy(
   void&        dst_array[],         // куда копируем                           // сюда, понятно имя массива
   const void&  src_array[],         // откуда копируем                         // сюда тоже его
   int          dst_start=0,         // с какого индекса пишем в приемник       // сюда 0
   int          src_start=0,         // с какого индекса копируем из источника  // сюда, например с первого, значит 1
   int          count=WHOLE_ARRAY    // сколько элементов                       // сюда размерность массива минус 1
   );

Le tableau sera donc copié sur lui-même avec un décalage de 1 élément. Le zéro sera écarté, et le dernier sera vide. Au contraire, en écartant le dernier élément, je ne l'ai pas essayé, mais je pense que vous pouvez définir correctement les trois derniers paramètres de la fonction.

 
AlexeyVik:

Vous pouvez également copier un tableau sur lui-même avec un décalage.

Le tableau sera donc copié sur lui-même avec un décalage de 1 élément. Le zéro sera écarté, et le dernier sera vide. Dans l'autre sens, en jetant le dernier élément, je ne l'ai pas essayé, mais je pense que les trois derniers paramètres de la fonction peuvent être définis correctement.


Je ne l'ai pas essayé, mais cela peut être utile pour changer la direction de l'indexation.

P.S. J'ai quelques questions sur le testeur de stratégie. Pouvez-vous nous aider ?

 
kosmos0975:

Je n'ai pas essayé, mais un changement de direction de l'indexation pourrait être utile.

P.S. Il y a des questions sur le testeur de stratégie. Pouvez-vous nous aider ?

Voulez-vous dire changer la direction de l'indexation après avoir copié un tableau en lui-même ? Est-ce nécessaire ? Je pense qu'il n'y aura aucun problème à copier de l'index zéro sans le dernier et à coller du premier, alors que l'index zéro restera vide ou l'ancienne valeur, peu importe, car cette procédure n'est pas nécessaire uniquement pour copier, mais spécifiquement pour remplacer une des valeurs du tableau (zéro ou dernière) par une nouvelle. Par conséquent, après cette copie, l'élément "vacant" est rempli avec la nouvelle valeur. Et peu importe ce qui est resté dedans.

Sur le testeur, si je peux - je vais aider. Mais ici il y a plus digne qui peut suggérer.

 

Les signaux de commande et le contrôle des positions ouvertes sont effectués par l'indicateur. Les commandes d'ouverture et de fermeture des positions sont envoyées à l'Expert Advisor via les variables globales du terminal.

L'utilisation d'indicateurs est pratique car il y a beaucoup d'indicateurs, et vous pouvez voir le travail de plusieurs blocs logiques en même temps.

Question. Dans le testeur de stratégie, l'indicateur peut fonctionner avec la fonction OrderSelect(),OrdersTotal(), etc.

 
AlexeyVik:

Voulez-vous dire qu'il faut inverser la direction de l'indexation après avoir copié le tableau dans lui-même ? Est-ce vraiment nécessaire ? Je pense qu'il n'y aura aucun problème à copier de l'index zéro sans le dernier et à coller du premier, tandis que l'index zéro restera soit vide soit l'ancienne valeur, peu importe, car cette procédure n'est pas seulement nécessaire pour copier, mais spécifiquement pour remplacer une des valeurs du tableau (zéro ou dernière) par une nouvelle. Par conséquent, après cette copie, l'élément "vacant" est rempli avec la nouvelle valeur. Et peu importe ce qui est resté dedans.

Sur le testeur, si je peux - je vais aider. Mais ici il y a plus digne qui peut suggérer.

Avant la copie et après.
 
Non vérifié, mais qu'est-ce qui vous empêche de le vérifier vous-même ? Il suffit d'enregistrer le modèle avec tous les indicateurs sous le nom de l'EA et ensuite, lorsque vous démarrez l'EA dans le testeur, tous les indicateurs seront chargés et fonctionneront probablement correctement. Mais il est possible qu'ils prennent les valeurs des onglets "Commerce" et "Historique du compte".
 
kosmos0975:
Avant la copie et après.
Pourquoi se gratter l'oreille droite avec le doigt de la main gauche ? Ou le pied... J'ai seulement dit que la deuxième option, par manque de nécessité, n'a pas été testée. Mais logiquement, cela devrait fonctionner sans aucun problème.