Fissare l'indicatore sul grafico. Ottiene il primo valore di bid1 al primo tick. Ricordatelo (io l'ho fatto - inserisco il secondo buffer y[0] e registro il suo valore in init()).
Al secondo tick otteniamo il secondo valore di bid2.
Poi abbiamo bisogno di ottenere la differenza di punti. delta=bid1-bid2 (ho fatto così: delta=x[0]-x[1]).
Ora aggiungete delta a y[0] e ottenete il valore di y[1], che corrisponde effettivamente al valore di bid2.
La curva dell'indicatore dovrebbe essere identica a quella che stiamo cercando, ma è tracciata utilizzando i valori calcolati delle differenze di offerta.
Questo indicatore è necessario come modello per ulteriori calcoli.
Non lanciare pietre. L'ho spiegato meglio che potevo.
Cercherò di spiegare. Ma tenete presente che sono un programmatore principiante, praticamente.
Abbiamo un indicatore di tick, che costruisce una curva per valori di offerta.
Ora quello che voglio fare.
Fissare l'indicatore sul grafico. Ottiene il primo valore di bid1 al primo tick. Ricordatelo (io l'ho fatto: ho inserito il secondo buffer y[0] e prescritto il suo valore in init()).
Al secondo tick otteniamo il secondo valore di bid2.
Poi abbiamo bisogno di ottenere la differenza di punti. delta=bid1-bid2 (ho fatto così: delta=x[0]-x[1]).
Ora aggiungete delta a y[0] e ottenete il valore di y[1] che corrisponde effettivamente al valore di bid2.
La curva dell'indicatore dovrebbe essere identica all'indicatore ricercato, ma è tracciata utilizzando i valori calcolati delle differenze di offerta.
Questo indicatore è necessario come modello per ulteriori calcoli.
Non lanciare pietre. Ho cercato di spiegarlo meglio che potevo.
Grazie.
Non è chiaro cosa vuoi fare
c'è un problema qui - usi i buffer degli indicatori come un array per memorizzare i tick (Bid), la dimensione del buffer degli indicatori cambia il terminale stesso, e inoltre - il terminale sposta i buffer degli indicatori stessi all'apparizione di una nuova barra
dovreste usare un array per memorizzare i tick, e usare un buffer di indicatori per disegnare
Ho creato un codice simile al tuo, dove salvo i tick in un array
#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);
}
//+------------------------------------------------------------------+
Ora, dovreste aggiungere il vostro calcolo a questo codice e disegnarlo usando il buffer dell'indicatore Label1Buffer come da vostra idea
Sarebbe bello se aggiungessero la possibilità di cambiare le proprietà di un altro indicatore programmaticamente. Più o meno, dopo aver aggiunto (programmaticamente) un altro indicatore al grafico, è possibile impostare il suo colore, stile e spessore delle linee
ecco il problema esatto - usate i buffer degli indicatori come un array per memorizzare i tick (Bid), la dimensione del buffer degli indicatori cambia il terminale stesso, e inoltre - il terminale sposta i buffer degli indicatori stessi quando appare una nuova barra
dovreste usare un array per memorizzare i tick, e usare un buffer indicatore per disegnare
Ho creato un codice simile al tuo, dove salvo i tick in un array
Ora, dovete aggiungere il vostro calcolo a questo codice e disegnarlo usando il buffer dell'indicatore Label1Buffer, come da vostra idea
Grazie per aver risposto. Vi torturerò ancora un po'.
Yevhenii Levchenko: Sarebbe bello se aggiungessero la possibilità di cambiare le proprietà di un altro indicatore programmaticamente. Più o meno, dopo aver aggiunto (programmaticamente) un altro indicatore al grafico, è possibile impostare il colore, lo stile e lo spessore delle linee
Per disegnare usando i buffer degli indicatori in MQL, significa mettere un valore nel buffer dell'indicatore - nel mio esempio, è Label1Buffer (assegnare un valore)
nel tuo esempio assegni dei valori solo quando una condizione è soddisfatta e se la condizione non è soddisfatta? - Quindi non verrà stampato nulla.
E ancora, ho creato un "modello" dove l'array TickArr contiene i valori dei tick Bid, ma nelle tue condizioni usi i valori precedenti del buffer dell'indicatore - e chi ha messo quali valori in questi buffer?
Prova a disegnare una linea vicino al buffer dell'indicatore, poi confronterai i tick.
Se dici che sei praticamente uno zero nella programmazione, allora perché ti assumi dei compiti così poco standard, forse dovresti iniziare con quelli semplici? O per migliorare la tua conoscenza delle basi? È più facile farlo fare a te, sì.
Per disegnare usando i buffer degli indicatori in MQL, significa mettere un valore (assegnare un valore) al buffer dell'indicatore - nel mio esempio, il Label1Buffer
nel tuo esempio assegni dei valori solo quando una condizione è soddisfatta e se la condizione non è soddisfatta? - Quindi non verrà stampato nulla.
E ancora, ho creato un "modello" dove l'array TickArr contiene i valori dei tick Bid, ma nelle tue condizioni usi i valori precedenti del buffer dell'indicatore - e chi ha messo quali valori in questi buffer?
Prova a disegnare una linea dal buffer dell'indicatore, e poi confronterai i tick.
Prova a porre la domanda in modo diverso, la tua domanda potrebbe non essere chiara
Cercherò di spiegare. Ma tenete presente che non sono un programmatore, praticamente.
Abbiamo un indicatore di tick che costruisce una curva sui valori di offerta.
Ora quello che voglio fare.
Fissare l'indicatore sul grafico. Ottiene il primo valore di bid1 al primo tick. Ricordatelo (io l'ho fatto - inserisco il secondo buffer y[0] e registro il suo valore in init()).
Al secondo tick otteniamo il secondo valore di bid2.
Poi abbiamo bisogno di ottenere la differenza di punti. delta=bid1-bid2 (ho fatto così: delta=x[0]-x[1]).
Ora aggiungete delta a y[0] e ottenete il valore di y[1], che corrisponde effettivamente al valore di bid2.
La curva dell'indicatore dovrebbe essere identica a quella che stiamo cercando, ma è tracciata utilizzando i valori calcolati delle differenze di offerta.
Questo indicatore è necessario come modello per ulteriori calcoli.
Non lanciare pietre. L'ho spiegato meglio che potevo.
Grazie.
Cercherò di spiegare. Ma tenete presente che sono un programmatore principiante, praticamente.
Abbiamo un indicatore di tick, che costruisce una curva per valori di offerta.
Ora quello che voglio fare.
Fissare l'indicatore sul grafico. Ottiene il primo valore di bid1 al primo tick. Ricordatelo (io l'ho fatto: ho inserito il secondo buffer y[0] e prescritto il suo valore in init()).
Al secondo tick otteniamo il secondo valore di bid2.
Poi abbiamo bisogno di ottenere la differenza di punti. delta=bid1-bid2 (ho fatto così: delta=x[0]-x[1]).
Ora aggiungete delta a y[0] e ottenete il valore di y[1] che corrisponde effettivamente al valore di bid2.
La curva dell'indicatore dovrebbe essere identica all'indicatore ricercato, ma è tracciata utilizzando i valori calcolati delle differenze di offerta.
Questo indicatore è necessario come modello per ulteriori calcoli.
Non lanciare pietre. Ho cercato di spiegarlo meglio che potevo.
Grazie.
Non è chiaro cosa vuoi fare
c'è un problema qui - usi i buffer degli indicatori come un array per memorizzare i tick (Bid), la dimensione del buffer degli indicatori cambia il terminale stesso, e inoltre - il terminale sposta i buffer degli indicatori stessi all'apparizione di una nuova barra
dovreste usare un array per memorizzare i tick, e usare un buffer di indicatori per disegnare
Ho creato un codice simile al tuo, dove salvo i tick in un array
Ora, dovreste aggiungere il vostro calcolo a questo codice e disegnarlo usando il buffer dell'indicatore Label1Buffer come da vostra idea
non è chiaro cosa vuoi fare
ecco il problema esatto - usate i buffer degli indicatori come un array per memorizzare i tick (Bid), la dimensione del buffer degli indicatori cambia il terminale stesso, e inoltre - il terminale sposta i buffer degli indicatori stessi quando appare una nuova barra
dovreste usare un array per memorizzare i tick, e usare un buffer indicatore per disegnare
Ho creato un codice simile al tuo, dove salvo i tick in un array
Ora, dovete aggiungere il vostro calcolo a questo codice e disegnarlo usando il buffer dell'indicatore Label1Buffer, come da vostra idea
Grazie per aver risposto. Vi torturerò ancora un po'.
Devo aggiungere il calcolo qui?
Ecco il mio calcolo.
L'ho aggiunto e niente.
Sarebbe bello se aggiungessero la possibilità di cambiare le proprietà di un altro indicatore programmaticamente. Più o meno, dopo aver aggiunto (programmaticamente) un altro indicatore al grafico, è possibile impostare il colore, lo stile e lo spessore delle linee
Usa Canvas e disegna cartoni animati.
Allegherò una foto in più.
Aggiunto e niente.
non è così che funziona ))))
Per disegnare usando i buffer degli indicatori in MQL, significa mettere un valore nel buffer dell'indicatore - nel mio esempio, è Label1Buffer (assegnare un valore)
nel tuo esempio assegni dei valori solo quando una condizione è soddisfatta e se la condizione non è soddisfatta? - Quindi non verrà stampato nulla.
E ancora, ho creato un "modello" dove l'array TickArr contiene i valori dei tick Bid, ma nelle tue condizioni usi i valori precedenti del buffer dell'indicatore - e chi ha messo quali valori in questi buffer?
Prova a disegnare una linea vicino al buffer dell'indicatore, poi confronterai i tick.
Allegherò una foto in più.
E se l'angolo è invertito? Come verrebbe fatto il calcolo?
Allegherò una foto in più.
non funzionerà ))))
Per disegnare usando i buffer degli indicatori in MQL, significa mettere un valore (assegnare un valore) al buffer dell'indicatore - nel mio esempio, il Label1Buffer
nel tuo esempio assegni dei valori solo quando una condizione è soddisfatta e se la condizione non è soddisfatta? - Quindi non verrà stampato nulla.
E ancora, ho creato un "modello" dove l'array TickArr contiene i valori dei tick Bid, ma nelle tue condizioni usi i valori precedenti del buffer dell'indicatore - e chi ha messo quali valori in questi buffer?
Prova a disegnare una linea dal buffer dell'indicatore, e poi confronterai i tick.
Ho avvertito che sono un hacker).
L'ho fatto in questo modo.
Ora disegna il grafico in tick ma ci sono alcune interruzioni di linea.
Sto facendo un 4.