Ctrl+B --> pulsante "Tutto" - c'è un oggetto, che è quello di cui sto parlando. Ilproblema è che se creo un RETTANGOLO in modo normale senza Canvas. Crea il giusto numero di oggettiRECTANGLE.
Con Canvas, posso crearne solo uno. Perché è così? Faccio un nome unico per ogniRETTANGOLO.
Grazie al programmatore, naturalmente.
Perché pensi che il tuo nome sia unico? Avete controllato prima di creare un nuovo oggetto? E controllate il risultato della creazione dell'oggetto? Qual è il codice di errore per questo?
Nessun codice completamente riproducibile - nessuna discussione concreta. Non so cosa hai fatto lì. Hai creato una specie di problema dalla cosa più semplice.
#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);
}
Ho un calcolo delle aperture degli ordini utilizzando variabili globali. Per esempio, se è 5, significa che sono già stati aperti cinque ordini e sto aspettando che il sesto salga. Se il contatore è impostato a 5, significa che vengono aperti 5 ordini extra, anche se sono già aperti. Lo stesso accade quando chiudo il terminale e lo riapro. Come risolvere il problema?
Ho un calcolo delle aperture degli ordini utilizzando variabili globali. Per esempio, se è 5, significa che sono già stati aperti cinque ordini e sto aspettando che il sesto salga. Se il contatore è impostato a 5, significa che vengono aperti 5 ordini extra, anche se sono già aperti. Lo stesso accade quando chiudo il terminale e lo riapro. Come risolvere il problema?
Nella funzione int OnInit(), dobbiamo controllare l'esistenza della variabile globale. Se esiste ed è maggiore di zero, la impostiamo a zero.
La scala è tracciata. Ma l'indicatore lo capisce solo con un nuovo tick,
A volte c'è un enorme ritardo. Cosa si può fare?
Volevi evitare il ridimensionamento a scalare ...
OnChartEvent() non dipende dai tick
Aggiorna tutti gli oggetti creati in OnChartEvent(), quando l'evento grafico necessario viene registrato. Altrimenti, solo su un nuovo tick sarà aggiornato.
Ctrl+B --> pulsante "Tutto" - c'è un oggetto, che è quello di cui sto parlando. Ilproblema è che se creo un RETTANGOLO in modo normale senza Canvas. Crea il giusto numero di oggettiRECTANGLE.
Con Canvas, posso crearne solo uno. Perché è così? Faccio un nome unico per ogniRETTANGOLO.
Grazie al programmatore, naturalmente.
Perché pensi che il tuo nome sia unico? Avete controllato prima di creare un nuovo oggetto? E controllate il risultato della creazione dell'oggetto? Qual è il codice di errore per questo?
Nessun codice completamente riproducibile - nessuna discussione concreta. Non so cosa hai fatto lì. Hai creato una specie di problema dalla cosa più semplice.
Cosa intende per riavvio?
Ho un calcolo delle aperture degli ordini utilizzando variabili globali. Per esempio, se è 5, significa che sono già stati aperti cinque ordini e sto aspettando che il sesto salga. Se il contatore è impostato a 5, significa che vengono aperti 5 ordini extra, anche se sono già aperti. Lo stesso accade quando chiudo il terminale e lo riapro. Come risolvere il problema?
Ho un calcolo delle aperture degli ordini utilizzando variabili globali. Per esempio, se è 5, significa che sono già stati aperti cinque ordini e sto aspettando che il sesto salga. Se il contatore è impostato a 5, significa che vengono aperti 5 ordini extra, anche se sono già aperti. Lo stesso accade quando chiudo il terminale e lo riapro. Come risolvere il problema?
Nella funzione int OnInit(), dobbiamo controllare l'esistenza della variabile globale. Se esiste ed è maggiore di zero, la impostiamo a zero.
È un quadruplo?
Sì. Ho notato che MQL4 quando ho chiesto di Canvas
È un quattro?
Dovrebbe funzionare anche su un quattro, suppongo.
Grazie, funziona tutto.
Quando si ridimensiona il grafico si può rimpicciolire anche il rettangolo?
La scala è tracciata. Ma l'indicatore lo capisce solo con un nuovo tick,
A volte c'è un enorme ritardo. Cosa posso fare?
Grazie, funziona tutto.
Quando si ridimensiona il grafico si può rimpicciolire anche il rettangolo?
La scala è tracciata. Ma l'indicatore lo capisce solo con un nuovo tick,
A volte c'è un enorme ritardo. Cosa si può fare?