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

 

Tout d'abord, essayez de lier le quatrième tampon non affichable ExtMapBuffer4 au tampon indicateur

SetIndexBuffer(3,ExtMapBuffer4);

parce que vous écrivez

   IndicatorBuffers(4);                                                 //устанавливаем общее количество всех индикаторов, участвующих в расчете всех индикаторных линий

au début vous décrivez 3 lignes/buffers

d'ailleurs, vous n'aurez pas besoin de la déclarer comme une série temporelle et de la vérifier

 

et votre principale erreur ici

      ExtMapBuffer3[i]=iMAOnArray(ExtMapBuffer4,0,МА_ТЛ,0,Вид_МА_ТЛ,0); //рассчет значения для расчета Третьей Линии (ТЛ)

tu dois faire comme ça.

      ExtMapBuffer3[i]=iMAOnArray(ExtMapBuffer4,0,МА_ТЛ,0,Вид_МА_ТЛ,i); //рассчет значения для расчета Третьей Линии (ТЛ)
 
midorum:

Tout d'abord, essayez de lier le quatrième tampon non affichable ExtMapBuffer4 au tampon indicateur

parce que vous écrivez

au début vous décrivez 3 lignes/buffers

d'ailleurs, vous n'aurez pas besoin de la déclarer comme une série temporelle et de la vérifier

Merci pour la réponse... Pour mettre enfin les points sur les i, j'aimerais en savoir plus à ce sujet :

1. Vous avez écrit : " essayez d'abord d'associer le quatrième tampon non mappé ExtMapBuffer4 au tampon indicateur ". Je pensais qu'il fallait lier uniquement les tableaux qui devaient être affichés d'une manière ou d'une autre sur l'écran du terminal client, et que le nombre total de tous les tableaux qui participent au calcul de l'indicateur personnalisé devait être spécifié à l'aide de la fonction IndicatorBuffers. Je dois donc me tromper ?

2. Si cela ne vous dérange pas, pourquoi ne pas déclarer ce tableau comme une série chronologique ? Est-il en quelque sorte auto-organisé comme une série temporelle ?

 
7777877:

Merci pour votre réponse... Pour terminer, je voudrais savoir une dernière chose :

1. Vous écrivez : "d'abord, essayez de connecter le quatrième tampon non mappé ExtMapBuffer4 au tampon indicateur". Je pensais qu'il fallait lier uniquement les tableaux qui devaient être affichés d'une manière ou d'une autre sur l'écran du terminal client, et que le nombre total de tous les tableaux qui participent au calcul de l'indicateur personnalisé devait être spécifié à l'aide de la fonction IndicatorBuffers. Alors j'avais tort ?

2. Si ce n'est pas difficile pour vous, expliquez-nous pourquoi nous ne devrions pas déclarer ce tableau comme une série chronologique ? Est-il en quelque sorte auto-organisé comme une série temporelle ?

exactement comme ça, c'est automatiquement organisé comme une série temporelle.

vous décrivez des tampons indicateurs visibles au début

En utilisantIndicatorBuffers(), vous pouvez augmenter le nombre de séries temporelles organisées automatiquement à 8 et les lier à vos tableaux.

 
Question dupliquée à nouveau, suppression de l'ancienne, aide qui peut !


Ok. Je vais essayer de donner l'essentiel du problème, peut-être que quelqu'un pourra le suggérer ou aider à le mettre en œuvre plus facilement.

Nous travaillons sur le graphique en 1 minute. Prenons la barre des minutes (haut+bas/2 - valeur moyenne de la barre) sur le graphique du 29/10/12 à 00:00 - elle servira de point de référence.

Ensuite, nous vérifions la déviation de ce prix vers le haut de 10 pips (chaque déviation correcte est +1).

Lorsque nous atteignons l'écart de 10 points par rapport au point de départ - le compteur +1 ; et nous commençons à vérifier les autres écarts, mais à partir du point où nous avons atteint l'écart de 10 points, et nous attendons la prochaine hausse de 10 points du prix.

Par exemple, on obtient :

Si (point de départ) + 10 pips <= prix (nous utilisons tous les prix ultérieurs des barres à partir du point de départ.) Nous obtenons un compteur = compteur +1 ; et nous commençons le point de départ déjà à partir de ce point - (point de départ + 10 pips).

Si (point de départ + 10 pips) + 10 pips <= prix (tous les prix ultérieurs des barres à partir du point de référence sont utilisés) nous obtenons counter=Counter +1 ; et nous partons de ce point - (point de départ + 10 pips) + 10 pips.

Si (point de départ + 10 pips + 10 pips) + 10 pips <= prix (nous utilisons tous les prix ultérieurs des barres à partir du point de référence.) nous obtenons counter=Counter +1 ; et nous partons de ce point - (point de départ + 10 pips + 10 pips) + 10 pips.

et ainsi de suite...

Jusqu'à ce que nous atteignions un compteur de 10 (compteur == 10).

Et à chaque nouvelle barre d'une minute formée (haut+bas/2 - valeur moyenne de la barre), nous vérifions cette condition et attendons que le compteur atteigne 10 (compteur == 10). Supposons que deux jours se soient écoulés, à chaque nouvelle barre formée nous vérifions et décalons si les conditions sont correctes ......

Et lorsque nous atteignons le compteur =10, nous émettons le message "Compteur == 10". Nous déplaçons le point de départ de 2 jours en avant du point initial défini par l'utilisateur, c'est-à-dire du 29/10/12 à 00:00 au 31/10/12 à 00:00 et nous répétons le cycle.

Répétez le cycle et avancez ainsi dans le programme.

C'est-à-dire que nous devrions prendre les barres nouvellement formées et dessiner (high+low/2 - valeur moyenne de la barre). Vérifiez ensuite les conditions et, si elles sont correctes, procédez au changement de vitesse comme décrit ci-dessus.

J'ai essayé de l'implémenter par le biais d'un tableau, mais c'est très confus et cela donne des valeurs erronées ! Aidez-moi à mettre en œuvre cet algorithme !
Dossiers :
qawer.mq4  3 kb
 
merkulov.artem:

J'ai essayé de l'implémenter par le biais d'un tableau, cela devient très confus et donne des valeurs erronées !!! Aidez-nous à mettre en œuvre cet algorithme !

Il serait très intéressant que vous puissiez commenter votre algorithme en détail (chaque commande et les données utilisées), car il est très difficile de comprendre ce qui est fait et dans quel but.

alors, peut-être que vous pourrez obtenir de l'aide, ou peut-être que vous trouverez le problème vous-même.

 

Selon l'aide, la fonctionSetIndexDrawBegin indique à partir de quelle barre il faut commencer à dessiner. J'ai pris un indicateur AC standard pour le tester et j'ai changé ses paramètres.

SetIndexDrawBegin(0,8);
   SetIndexDrawBegin(1,38);
   SetIndexDrawBegin(2,38);

à

   SetIndexDrawBegin(0,8);
   SetIndexDrawBegin(1,8);
   SetIndexDrawBegin(2,8);

Rien n'a changé ; il commence à dessiner à partir de ... pas de 8 bars à 0 bar, mais à partir de quelle barre il n'est pas clair.

Vous pouvez voir que ce n'est pas 8...


 
hoz:

Selon l'aide, la fonctionSetIndexDrawBegin indique à partir de quelle barre il faut commencer à dessiner. J'ai pris un indicateur AC standard pour le tester et j'ai changé ses paramètres.

à

Rien n'a changé ; il commence à dessiner à partir de ... pas de 8 bars à 0 bar, mais à partir de quelle barre il n'est pas clair.

Vous pouvez voir que ce n'est pas 8...


Le numéro de série de la barre depuis le début des données (lire "depuis le début du graphique" "depuis le côté gauche"), à partir de laquelle la ligne sélectionnée de l'indicateur doit être tracée. Le dessin de l'indicateur est effectué de gauche à droite.
 
midorum:
Définissez le numéro de série de la barre à partir du début des données (lisez "à partir du début du graphique" "à partir du côté gauche du graphique"), à partir de laquelle la ligne de l'indicateur indiqué doit commencer à être dessinée. L'indicateur est dessiné de gauche à droite.

Et si je dois dessiner les 30 dernières barres par exemple, comment dois-je faire ?

 
hoz:

Et si je veux que les 30 dernières barres soient dessinées, comment dois-je faire ?

essayer Bars-30