Ctrl+B --> bouton "All" - il y a un objet, ce qui est ce dont je parle. Leproblème est que si je crée un RECTANGLE de manière normale sans Canvas. Il crée le bon nombre d'objetsRECTANGLE.
Avec Canvas, je ne peux en créer qu'un seul. Pourquoi est-ce que c'est comme ça ? Je crée un nom unique pour chaqueRECTANGLE.
Merci pour le programmeur, bien sûr.
Pourquoi pensez-vous que votre nom est unique ? L'avez-vous vérifié avant de créer un nouvel objet ? Et vérifiez-vous le résultat de la création de l'objet? Quel est le code d'erreur pour cela ?
Pas de code entièrement reproductible - pas de discussion concrète. Je ne sais pas ce que vous avez fait là. Vous avez fait une sorte de problème à partir de la chose la plus simple.
#property copyright"Copyright 2019, MetaQuotes Software Corp."#property link"https://www.mql5.com"#property version"1.00"#property strict#property indicator_chart_window#include <Canvas\Canvas.mqh>
CCanvas C;
int History = 5000;
//+------------------------------------------------------------------+//| Custom indicator initialization function |//+------------------------------------------------------------------+intOnInit()
{
//--- indicator buffers mapping//---return(INIT_SUCCEEDED);
}
voidOnDeinit(constint reason)
{
}
//+------------------------------------------------------------------+//| 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[])
{
//---int BarsCounted = IndicatorCounted();
if (BarsCounted < 0) return (-1);
if (BarsCounted > 0) BarsCounted--;
int BarsTotal = Bars - BarsCounted;
if( BarsTotal > History ) BarsTotal = History;
for (int i = BarsTotal-1; i >=1 ; i--)
{
double rsi = iRSI(NULL, 0, 14, PRICE_CLOSE, i);
if(rsi > 70 ) {
C.CreateBitmap(0, 0, i, Time[i+5], Close[i+1], 50, 70,COLOR_FORMAT_ARGB_NORMALIZE);
C.Rectangle(10, 40, 70, 80, ColorToARGB(clrRed,200));
C.Update(true);
Print(i);
}
}
//--- return value of prev_calculated for next callreturn(rates_total);
}
J'ai un calcul d'ouvertures de commandes utilisant des variables globales. Par exemple, s'il est égal à 5, cela signifie que cinq ordres ont déjà été ouverts et que j'attends le sixième ordre pour monter. Si le compteur est fixé à 5, cela signifie que 5 ordres supplémentaires sont ouverts, bien qu'ils soient déjà ouverts. La même chose se produit lorsque je ferme le terminal et que je l'ouvre à nouveau. Comment le réparer ?
J'ai un calcul d'ouvertures de commandes utilisant des variables globales. Par exemple, s'il est égal à 5, cela signifie que cinq ordres ont déjà été ouverts et que j'attends le sixième ordre pour monter. Si le compteur est fixé à 5, cela signifie que 5 ordres supplémentaires sont ouverts, bien qu'ils soient déjà ouverts. La même chose se produit lorsque je ferme le terminal et que je l'ouvre à nouveau. Comment le réparer ?
Dans la fonction int OnInit(), nous devons vérifier l'existence de la variable globale. Si elle existe et est supérieure à zéro, nous la mettons à zéro.
L'échelle est suivie. Mais l'indicateur ne le comprend qu'avec un nouveau tick,
Parfois, il y a un énorme retard. Que pouvez-vous faire ?
Vous vouliez éviter le redimensionnement à l'échelle ...
OnChartEvent() n'est pas dépendant des tics.
Mettez à jour tous les objets créés dans OnChartEvent(), lorsque l'événement graphique nécessaire est enregistré. Sinon, la mise à jour ne se fera que lors d'un nouveau tick.
Ctrl+B --> bouton "All" - il y a un objet, ce qui est ce dont je parle. Leproblème est que si je crée un RECTANGLE de manière normale sans Canvas. Il crée le bon nombre d'objetsRECTANGLE.
Avec Canvas, je ne peux en créer qu'un seul. Pourquoi est-ce que c'est comme ça ? Je crée un nom unique pour chaqueRECTANGLE.
Merci pour le programmeur, bien sûr.
Pourquoi pensez-vous que votre nom est unique ? L'avez-vous vérifié avant de créer un nouvel objet ? Et vérifiez-vous le résultat de la création de l'objet? Quel est le code d'erreur pour cela ?
Pas de code entièrement reproductible - pas de discussion concrète. Je ne sais pas ce que vous avez fait là. Vous avez fait une sorte de problème à partir de la chose la plus simple.
Qu'entendez-vous par redémarrage ?
J'ai un calcul d'ouvertures de commandes utilisant des variables globales. Par exemple, s'il est égal à 5, cela signifie que cinq ordres ont déjà été ouverts et que j'attends le sixième ordre pour monter. Si le compteur est fixé à 5, cela signifie que 5 ordres supplémentaires sont ouverts, bien qu'ils soient déjà ouverts. La même chose se produit lorsque je ferme le terminal et que je l'ouvre à nouveau. Comment le réparer ?
J'ai un calcul d'ouvertures de commandes utilisant des variables globales. Par exemple, s'il est égal à 5, cela signifie que cinq ordres ont déjà été ouverts et que j'attends le sixième ordre pour monter. Si le compteur est fixé à 5, cela signifie que 5 ordres supplémentaires sont ouverts, bien qu'ils soient déjà ouverts. La même chose se produit lorsque je ferme le terminal et que je l'ouvre à nouveau. Comment le réparer ?
Dans la fonction int OnInit(), nous devons vérifier l'existence de la variable globale. Si elle existe et est supérieure à zéro, nous la mettons à zéro.
C'est un quadruple ?
Oui. J'ai remarqué que le MQL4 quand j'ai posé la question sur Canvas
C'est un quatre ?
Ça devrait marcher sur un quatre, aussi, je suppose.
Merci, tout fonctionne.
Lorsque vous mettez le graphique à l'échelle, le rectangle peut-il également être réduit ?
L'échelle est suivie. Mais l'indicateur ne le comprend qu'avec un nouveau tick,
Parfois, il y a un énorme retard. Que puis-je faire ?
Merci, tout fonctionne.
Lorsque vous mettez le graphique à l'échelle, le rectangle peut-il également être réduit ?
L'échelle est suivie. Mais l'indicateur ne le comprend qu'avec un nouveau tick,
Parfois, il y a un énorme retard. Que pouvez-vous faire ?