Di seguito è riportato un semplice esempio che ho messo insieme giocando.
Se è sbagliato, vi prego di correggermi e lo modificherò.
Quello che trovo strano è che i valori non sembrano corrispondere a una semplice media mobile sul grafico.
################### In uno script
int period = 21; // La media mobile a 21 barre int sampleSize = 100; /Questo è il numero di barre di dati che si desidera recuperare int handle = iCustom(Symbol(),0, "Examples\Custom Moving Average", periodo,// Periodo 0, // Offset MODE_SMA, // Metodo di calcolo PRICE_CLOSE // Calcolo sui prezzi di chiusura );
void OnTick() {
// Questo è l'array in cui verranno copiate le medie mobili. // Ogni elemento è un valore di media mobile // Il primo elemento di questo array (elemento in posizione 0) è il più recente // L'ultimo elemento è l'ultimo elemento dell'array ArraySize() - 1 double movingAverageValues[];
ArraySetAsSeries(movingAverageValues, true); if (CopyBuffer(handle,0,0,sampleSize,movingAverageValues) < 0){Print("Errore CopyBufferMA1 =",GetLastError());}
################################# In un EA (NOTA: OnInit e OnTick)
int OnInit(){
int period = 21; // La media mobile a 21 barre
int sampleSize = 100; /Questo è il numero di barre di dati che si desidera recuperare int handle = iCustom(Symbol(),0, "Examples\Custom Moving Average", period, // Periodo 0, // Offset MODE_SMA, // Metodo di calcolo PRICE_CLOSE // Calcolo sui prezzi di chiusura );
}
OnTick() {
// Questo è l'array in cui verranno copiate le medie mobili. // Ogni elemento è un valore di media mobile // Il primo elemento di questo array (elemento in posizione 0) è il più recente // L'ultimo elemento è l'ultimo elemento dell'array ArraySize() - 1 double movingAverageValues[];
ArraySetAsSeries(movingAverageValues, true); if (CopyBuffer(handle,0,0,sampleSize,movingAverageValues) < 0){Print("Errore CopyBufferMA1 =",GetLastError());}
A me non permette di compilare il file.
Non so se c'è qualche idea su cosa stia succedendo.
Grazie,
Jordi
Grazie!
Di seguito è riportato un semplice esempio che ho messo insieme giocando.
Se è sbagliato, vi prego di correggermi e lo modificherò.
Quello che trovo strano è che i valori non sembrano corrispondere a una semplice media mobile sul grafico.
################### In uno script
int period = 21; // La media mobile a 21 barre
int sampleSize = 100; /Questo è il numero di barre di dati che si desidera recuperare
int handle = iCustom(Symbol(),0, "Examples\Custom Moving Average",
periodo,// Periodo
0, // Offset
MODE_SMA, // Metodo di calcolo
PRICE_CLOSE // Calcolo sui prezzi di chiusura
);
void OnTick()
{
// Questo è l'array in cui verranno copiate le medie mobili.
// Ogni elemento è un valore di media mobile
// Il primo elemento di questo array (elemento in posizione 0) è il più recente
// L'ultimo elemento è l'ultimo elemento dell'array ArraySize() - 1
double movingAverageValues[];
ArraySetAsSeries(movingAverageValues, true);
if (CopyBuffer(handle,0,0,sampleSize,movingAverageValues) < 0){Print("Errore CopyBufferMA1 =",GetLastError());}
double currentMovingAverage = movingAverageValues[0];
double earliestMovingAverage = movingAverageValues[ArraySize(movingAverageValues) - 1];
################################# In un EA (NOTA: OnInit e OnTick)
int OnInit(){
int period = 21; // La media mobile a 21 barre
int sampleSize = 100; /Questo è il numero di barre di dati che si desidera recuperare
int handle = iCustom(Symbol(),0, "Examples\Custom Moving Average",
period, // Periodo
0, // Offset
MODE_SMA, // Metodo di calcolo
PRICE_CLOSE // Calcolo sui prezzi di chiusura
);
}
OnTick()
{
// Questo è l'array in cui verranno copiate le medie mobili.
// Ogni elemento è un valore di media mobile
// Il primo elemento di questo array (elemento in posizione 0) è il più recente
// L'ultimo elemento è l'ultimo elemento dell'array ArraySize() - 1
double movingAverageValues[];
ArraySetAsSeries(movingAverageValues, true);
if (CopyBuffer(handle,0,0,sampleSize,movingAverageValues) < 0){Print("Errore CopyBufferMA1 =",GetLastError());}
double currentMovingAverage = movingAverageValues[0];
double earliestMovingAverage = movingAverageValues[ArraySize(movingAverageValues) - 1];
}
Ottimo articolo