Fixez l'indicateur sur le graphique. Obtenir la première valeur de bid1 sur le premier tick. Retenez-le (c'est ce que j'ai fait - j'entre dans le deuxième tampon y[0] et j'enregistre sa valeur dans init()).
Au deuxième tick, nous obtenons la deuxième valeur de bid2.
Ensuite, nous devons obtenir la différence de points. delta=bid1-bid2 (je l'ai fait de cette façon : delta=x[0]-x[1]).
Ajoutez maintenant delta à y[0] et obtenez la valeur de y[1], qui correspond en fait à la valeur de bid2.
La courbe de l'indicateur devrait être identique à celle que nous recherchons, mais elle est tracée en utilisant les valeurs calculées des écarts d'offre.
Cet indicateur est nécessaire comme modèle pour les calculs ultérieurs.
Ne jetez pas de pierres. Je l'ai expliqué du mieux que j'ai pu.
Je vais essayer d'expliquer. Mais n'oubliez pas que je suis un programmeur novice, pratiquement.
Nous disposons d'un indicateur de tick, qui construit une courbe par valeurs d'enchères.
Maintenant, ce que je veux faire.
Fixez l'indicateur sur le graphique. Obtenir la première valeur de bid1 sur le premier tick. Retenez-le (c'est ce que j'ai fait : j'ai entré le deuxième tampon y[0] et prescrit sa valeur dans init()).
Au deuxième tick, nous obtenons la deuxième valeur de bid2.
Ensuite, nous devons obtenir la différence de points. delta=bid1-bid2 (je l'ai fait de cette façon : delta=x[0]-x[1]).
Ajoutez maintenant delta à y[0] et obtenez la valeur de y[1] qui correspond réellement à la valeur de bid2.
La courbe de l'indicateur devrait être identique à celle que nous recherchons, mais elle est tracée en utilisant les valeurs calculées des écarts d'offre.
Cet indicateur est nécessaire comme modèle pour les calculs ultérieurs.
Ne jetez pas de pierres. J'ai essayé de l'expliquer du mieux que je pouvais.
Merci.
Ce que vous voulez faire n'est pas clair
il y a un problème ici - vous utilisez les tampons d'indicateur comme un tableau pour stocker les ticks (Bid), la taille du tampon d'indicateur change le terminal lui-même, et en plus - le terminal déplace les tampons d'indicateur lui-même à l'apparition d'une nouvelle barre
vous devez utiliser un tableau pour stocker les ticks, et utiliser un tampon d'indicateur pour dessiner.
J'ai créé un code similaire au vôtre, où j'enregistre les ticks dans un tableau.
#property indicator_separate_window#property indicator_buffers1#property indicator_plots1//--- plot Label1#property indicator_label1"Label1"#property indicator_type1DRAW_LINE#property indicator_color1clrRed#property indicator_style1STYLE_SOLID#property indicator_width11//--- input parametersinputint TickCount=10; //Размер массива тиков//--- indicator buffersdouble Label1Buffer[];
double TickArr[];
//+------------------------------------------------------------------+//| Custom indicator initialization function |//+------------------------------------------------------------------+intOnInit()
{
//--- indicator buffers mappingSetIndexBuffer(0,Label1Buffer,INDICATOR_DATA);
ArrayResize(TickArr,TickCount); //изменим размер массиваArrayInitialize(TickArr,SymbolInfoDouble(_Symbol,SYMBOL_BID)); // проинициализируем массив значением текущего Bid//---return(INIT_SUCCEEDED);
}
//+------------------------------------------------------------------+//| Custom indicator iteration function |//+------------------------------------------------------------------+intOnCalculate(constint rates_total,
constint prev_calculated,
constdatetime &time[],
constdouble &open[],
constdouble &high[],
constdouble &low[],
constdouble &close[],
constlong &tick_volume[],
constlong &volume[],
constint &spread[])
{
for(int i=ArraySize(TickArr)-1;i>0;i--)
{
TickArr[i] = TickArr[i-1]; // сдвинули массив
}
TickArr[0] = SymbolInfoDouble(_Symbol,SYMBOL_BID); // в 0-й элемент массива запомнили новый Bid//--- return value of prev_calculated for next callreturn(rates_total);
}
//+------------------------------------------------------------------+
Maintenant, vous devez ajouter votre calcul à ce code et le dessiner en utilisant le tampon de l'indicateur Label1Buffer comme vous le souhaitez.
Il serait bien qu'ils ajoutent la possibilité de changer les propriétés d'un autre indicateur de façon programmatique. En gros, après avoir ajouté (par programmation) un autre indicateur au graphique, vous pouvez en définir la couleur, le style et l'épaisseur des lignes.
voici le problème exact - vous utilisez les tampons d'indicateur comme un tableau pour stocker les ticks (Bid), la taille du tampon d'indicateur change le terminal lui-même, et en plus - le terminal déplace les tampons d'indicateur lui-même quand une nouvelle barre apparaît.
vous devez utiliser un tableau pour stocker les ticks, et utiliser un tampon d'indicateur pour dessiner les ticks.
J'ai créé un code similaire au vôtre, où j'enregistre les ticks dans un tableau.
Maintenant, vous devez ajouter votre calcul à ce code et le dessiner en utilisant le tampon de l'indicateur Label1Buffer, comme vous le souhaitez.
Merci de votre réponse. Je vais vous torturer un peu plus.
Yevhenii Levchenko: Il serait bien qu'ils ajoutent la possibilité de changer les propriétés d'un autre indicateur de façon programmatique. En gros, après avoir ajouté (par programmation) un autre indicateur au graphique, vous pouvez définir la couleur, le style et l'épaisseur des lignes.
Pour dessiner en utilisant les tampons indicateurs en MQL, cela signifie mettre une valeur dans le tampon indicateur - dans mon exemple, c'est Label1Buffer (assigner une valeur)
dans votre exemple, vous attribuez des valeurs uniquement lorsqu'une condition est remplie et si la condition n'est pas remplie ? - Donc rien ne sera imprimé.
Et encore, j'ai créé un "modèle" où le tableau TickArr contient les valeurs des ticks Bid, mais dans vos conditions vous utilisez les valeurs précédentes du tampon de l'indicateur - et qui a mis quelles valeurs dans ces tampons ?
Essayez de tracer une ligne dans le tampon de l'indicateur, puis vous comparerez les ticks.
Si vous dites que vous êtes pratiquement nul en programmation, alors pourquoi acceptez-vous des tâches aussi atypiques, vous devriez peut-être commencer par des tâches simples ? Ou pour améliorer vos connaissances de base ? C'est plus facile de le faire faire pour vous, oui.
Pour dessiner en utilisant des tampons indicateurs en MQL, cela signifie mettre une valeur (assigner une valeur) au tampon indicateur - dans mon exemple, le tampon Label1Buffer
dans votre exemple, vous attribuez des valeurs uniquement lorsqu'une condition est remplie et si la condition n'est pas remplie ? - Donc rien ne sera imprimé.
Et encore, j'ai créé un "modèle" où le tableau TickArr contient les valeurs des ticks Bid, mais dans vos conditions vous utilisez les valeurs précédentes du tampon de l'indicateur - et qui a mis quelles valeurs dans ces tampons ?
Essayez de tracer une ligne dans le tampon de l'indicateur, puis vous comparerez les ticks.
Essayez de poser la question différemment, votre question n'est peut-être pas claire.
Je vais essayer d'expliquer. Mais n'oubliez pas que je ne suis pas un programmeur, pratiquement.
Nous disposons d'un indicateur tick qui construit une courbe sur les valeurs des offres.
Maintenant, ce que je veux faire.
Fixez l'indicateur sur le graphique. Obtenir la première valeur de bid1 sur le premier tick. Retenez-le (c'est ce que j'ai fait - j'entre dans le deuxième tampon y[0] et j'enregistre sa valeur dans init()).
Au deuxième tick, nous obtenons la deuxième valeur de bid2.
Ensuite, nous devons obtenir la différence de points. delta=bid1-bid2 (je l'ai fait de cette façon : delta=x[0]-x[1]).
Ajoutez maintenant delta à y[0] et obtenez la valeur de y[1], qui correspond en fait à la valeur de bid2.
La courbe de l'indicateur devrait être identique à celle que nous recherchons, mais elle est tracée en utilisant les valeurs calculées des écarts d'offre.
Cet indicateur est nécessaire comme modèle pour les calculs ultérieurs.
Ne jetez pas de pierres. Je l'ai expliqué du mieux que j'ai pu.
Merci.
Je vais essayer d'expliquer. Mais n'oubliez pas que je suis un programmeur novice, pratiquement.
Nous disposons d'un indicateur de tick, qui construit une courbe par valeurs d'enchères.
Maintenant, ce que je veux faire.
Fixez l'indicateur sur le graphique. Obtenir la première valeur de bid1 sur le premier tick. Retenez-le (c'est ce que j'ai fait : j'ai entré le deuxième tampon y[0] et prescrit sa valeur dans init()).
Au deuxième tick, nous obtenons la deuxième valeur de bid2.
Ensuite, nous devons obtenir la différence de points. delta=bid1-bid2 (je l'ai fait de cette façon : delta=x[0]-x[1]).
Ajoutez maintenant delta à y[0] et obtenez la valeur de y[1] qui correspond réellement à la valeur de bid2.
La courbe de l'indicateur devrait être identique à celle que nous recherchons, mais elle est tracée en utilisant les valeurs calculées des écarts d'offre.
Cet indicateur est nécessaire comme modèle pour les calculs ultérieurs.
Ne jetez pas de pierres. J'ai essayé de l'expliquer du mieux que je pouvais.
Merci.
Ce que vous voulez faire n'est pas clair
il y a un problème ici - vous utilisez les tampons d'indicateur comme un tableau pour stocker les ticks (Bid), la taille du tampon d'indicateur change le terminal lui-même, et en plus - le terminal déplace les tampons d'indicateur lui-même à l'apparition d'une nouvelle barre
vous devez utiliser un tableau pour stocker les ticks, et utiliser un tampon d'indicateur pour dessiner.
J'ai créé un code similaire au vôtre, où j'enregistre les ticks dans un tableau.
Maintenant, vous devez ajouter votre calcul à ce code et le dessiner en utilisant le tampon de l'indicateur Label1Buffer comme vous le souhaitez.
ce que vous voulez faire n'est pas clair
voici le problème exact - vous utilisez les tampons d'indicateur comme un tableau pour stocker les ticks (Bid), la taille du tampon d'indicateur change le terminal lui-même, et en plus - le terminal déplace les tampons d'indicateur lui-même quand une nouvelle barre apparaît.
vous devez utiliser un tableau pour stocker les ticks, et utiliser un tampon d'indicateur pour dessiner les ticks.
J'ai créé un code similaire au vôtre, où j'enregistre les ticks dans un tableau.
Maintenant, vous devez ajouter votre calcul à ce code et le dessiner en utilisant le tampon de l'indicateur Label1Buffer, comme vous le souhaitez.
Merci de votre réponse. Je vais vous torturer un peu plus.
Dois-je ajouter le calcul ici ?
Voici mon calcul.
Je l'ai ajouté et rien.
Il serait bien qu'ils ajoutent la possibilité de changer les propriétés d'un autre indicateur de façon programmatique. En gros, après avoir ajouté (par programmation) un autre indicateur au graphique, vous pouvez définir la couleur, le style et l'épaisseur des lignes.
Utilisez Canvas et dessinez des dessins animés.
Je vais joindre une photo en plus.
Ajouté et rien.
ce n'est pas comme ça que ça marche ))))
Pour dessiner en utilisant les tampons indicateurs en MQL, cela signifie mettre une valeur dans le tampon indicateur - dans mon exemple, c'est Label1Buffer (assigner une valeur)
dans votre exemple, vous attribuez des valeurs uniquement lorsqu'une condition est remplie et si la condition n'est pas remplie ? - Donc rien ne sera imprimé.
Et encore, j'ai créé un "modèle" où le tableau TickArr contient les valeurs des ticks Bid, mais dans vos conditions vous utilisez les valeurs précédentes du tampon de l'indicateur - et qui a mis quelles valeurs dans ces tampons ?
Essayez de tracer une ligne dans le tampon de l'indicateur, puis vous comparerez les ticks.
Je vais joindre une photo en plus.
Et si l'angle est inversé ? Comment le calcul serait-il effectué ?
Je vais joindre une photo en plus.
ça ne va pas marcher ))))
Pour dessiner en utilisant des tampons indicateurs en MQL, cela signifie mettre une valeur (assigner une valeur) au tampon indicateur - dans mon exemple, le tampon Label1Buffer
dans votre exemple, vous attribuez des valeurs uniquement lorsqu'une condition est remplie et si la condition n'est pas remplie ? - Donc rien ne sera imprimé.
Et encore, j'ai créé un "modèle" où le tableau TickArr contient les valeurs des ticks Bid, mais dans vos conditions vous utilisez les valeurs précédentes du tampon de l'indicateur - et qui a mis quelles valeurs dans ces tampons ?
Essayez de tracer une ligne dans le tampon de l'indicateur, puis vous comparerez les ticks.
J'ai prévenu que je suis un hacker).
Je l'ai fait de cette façon.
Maintenant, il dessine le graphique en tick mais il y a des ruptures de ligne.
Je fais un 4.