Imparare e scrivere insieme in MQL5 - pagina 9

 
gdtt:

il consulente usa

dalla 0a barra, i valori dei buffer degli indicatori per essa vengono cambiati ad ogni tick fino alla chiusura della candela.

È vero, ho sperimentato, ma in sostanza non risolve il problema principale.-- Come fare in modo che un EA ricalcoli il buffer dell'indicatore non solo sulla barra richiesta, ma anche diverse barre indietro

Усреднение ценовых рядов без дополнительных буферов для промежуточных расчетов
Усреднение ценовых рядов без дополнительных буферов для промежуточных расчетов
  • 2010.10.25
  • Nikolay Kositsin
  • www.mql5.com
Статья о традиционных и не совсем традиционных алгоритмах усреднения, упакованных в максимально простые и достаточно однотипные классы. Они задумывались для универсального использования в практических разработках индикаторов. Надеюсь, что предложенные классы в определенных ситуациях могут оказаться достаточно актуальной альтернативой громоздким, в некотором смысле, вызовам пользовательских и технических индикаторов.
 

Una soluzione potrebbe essere stata trovata! Uno di loro...

Per questo, però, bisogna fare una versione speciale dell'indicatore.

 

Signori,

Sto scrivendo un indicatore: ...
int handle;
double indicatorBuffer[];
...
int OnInit()
{
... handleMA = iMA(_Symbol, _Period, periodMA, shiftMA, MODE_SMA, AppPrice);
...
}

int OnCalculate (const int rates_total, // dimensione dell'array price[]
const int prev_calculated, // barre processate alla chiamata precedente
const int begin, // dove iniziano i dati significativi
const double& price[]) // array per il calcolo
{
... fare qualcosa

La domanda è - come lasciare che handleMA = iMA(_Symbol, _Period, periodMA, shiftMA, MODE_SMA, AppPrice) sappia cos'è AppPrice?
o come estrarre Apply to: dalla scheda Parameters da usare nel codice?

Grazie in anticipo...

 
FlyAgaric:

Signori,


La domanda è - come lasciare che handleMA = iMA(_Symbol, _Period, periodMA, shiftMA, MODE_SMA, AppPrice) sappia cos'è AppPrice?
o come estrarre Apply to: dalla scheda Parameters per usarlo nel codice?

Grazie in anticipo...

Vedere OnCalculate():

La selezione di una serie temporale o di un indicatore necessario come array price[] viene eseguita dall'utente all'avvio dell'indicatore nella scheda "Parametri". Per fare questo, dovete specificare la voce necessaria nell'elenco a discesa del campo "Apply to".

Per ricevere i valori di un indicatore personalizzato da altri programmi mql5, si usa la funzione iCustom(), che restituisce l'handle dell'indicatore per le operazioni successive. Potete anche specificare l'array price[] appropriato o l'handle di un altro indicatore. Questo parametro deve essere passato per ultimo nella lista delle variabili di input dell'indicatore personalizzato.
 
Rosh:

Vedere OnCalculate():


Rosh grazie, ma la mia domanda è esattamente questa. Cosa devo specificare nell'operatore
handleMA = iMA(_Symbol, _Period, periodMA, shiftMA, MODE_SMA, AppPrice)
come AppPrice?

Sto leggendo molto attentamente l'aiuto disponibile. Forse il caldo ha preso il suo pedaggio, ma ...

 
FlyAgaric:

Rosh grazie, ma la mia domanda è esattamente questa. Cosa devo specificare nella dichiarazione
handleMA = iMA(_Symbol, _Period, periodMA, shiftMA, MODE_SMA, AppPrice)
come AppPrice?

Ho letto molto attentamente l'aiuto disponibile. Forse il caldo ha preso il suo pedaggio, ma ...

Specifica la maniglia di un indicatore, se vuoi calcolare sui dati di un altro indicatore. O il tipo di prezzi su cui verrà calcolato l'indicatore.
 
FlyAgaric:

Rosh grazie, ma la mia domanda è esattamente questa. Cosa devo specificare nella dichiarazione
handleMA = iMA(_Symbol, _Period, periodMA, shiftMA, MODE_SMA, AppPrice)
come AppPrice?

Ho letto molto attentamente l'aiuto disponibile. Forse il caldo ha preso il suo pedaggio, ma ...

Calore. Dovreste specificare ENUM_APPLIED_PRICE come AppPrice)
input ENUM_APPLIED_PRICE AppPrice=PRICE_CLOSE;
Документация по MQL5: Стандартные константы, перечисления и структуры / Константы индикаторов / Ценовые константы
Документация по MQL5: Стандартные константы, перечисления и структуры / Константы индикаторов / Ценовые константы
  • www.mql5.com
Стандартные константы, перечисления и структуры / Константы индикаторов / Ценовые константы - Документация по MQL5
 
Swan:
Calore. Dovreste specificare ENUM_APPLIED_PRICE come AppPrice)

Swan, grazie per l'attenzione. Ma se usate
input ENUM_APPLIED_PRICE AppPrice=PRICE_CLOSE; e il primo modulo

int OnCalculate (const int rates_total, // dimensione dell'array price[]
const int prev_calculated, // barre elaborate alla chiamata precedente
const int begin, //dove iniziano i dati significativi
const double& price[]) // array per il calcolo
Riceviamo un messaggio di avvertimento alla compilazione: sono definite due funzioni OnCalculate. Verrà usata la funzione dati prezzo NameIndicator.mq5 (pg)
e l'array price[] rimane slegato da AppPrice in qualsiasi modo, a meno che non sia lo stesso di Apply to: nella terza scheda "Parameters".

La questione, infatti, è se gli indicatori incorporati a singolo buffer come iMA() e il primo modulo intCalculate() possono essere utilizzati, se l'array price[] è in qualche modo
utilizzato nei calcoli.

 
Rosh:
Specifica il manico dell'indicatore se vuoi calcolare sui dati di un altro indicatore. O tipo di prezzi su cui verrà calcolato l'indicatore.

Noi (piuttosto io) abbiamo qualche malinteso.

La questione, infatti, è se possiamo usare gli indicatori integrati a singolo buffer come iMA() e la prima forma di int OnCalculate(), se l'array price[] è in qualche modo
usato nei calcoli.

 
FlyAgaric:

Noi (piuttosto io) abbiamo qualche malinteso.

La domanda, infatti, è se si possono usare indicatori incorporati a un buffer di tipo iMA() e la prima forma int OnCalculate() se l'array price[] è in qualche modo
utilizzato nei calcoli.

Il tuo parametroAppPrice non ha niente a che fare con OnCalculate().

int OnInit()
{
... handleMA = iMA(_Symbol, _Period, periodMA, shiftMA, MODE_SMA, AppPrice);
...
}

Puoi dargli il valore di una delle costanti di prezzo (opzione 1) o il manico di qualche altro indicatore (opzione 2). E poi si può:

1a variante.

Nella funzione OnCalculate() del secondo tipo

int OnCalculate (const int rates_total,      // размер входных таймсерий
                 const int prev_calculated,  // обработано баров на предыдущем вызове
                 const datetime& time[],     // Time
                 const double& open[],       // Open
                 const double& high[],       // High
                 const double& low[],        // Low
                 const double& close[],      // Close
                 const long& tick_volume[],  // Tick Volume
                 const long& volume[],       // Real Volume
                 const int& spread[]         // Spread
   );

richiedere tutti i dati necessari ed eseguire il calcolo

2a variante.

Usate OnCalculate() di qualsiasi tipo come richiesto dal codice e usate CopyBuffer() per ottenere i valori dell'indicatore.

Motivazione: