Abajo hay un ejemplo simple de esto que puse mientras jugaba.
Si es incorrecto por favor corrígeme y lo modificaré.
Lo que me parece extraño es que los valores no parecen coincidir con una media móvil simple en el gráfico.
################### En un script
int period = 21; // La media móvil de 21 barras int sampleSize = 100; //Este es el número de barras de datos que desea obtener int handle = iCustom(Symbol(),0, "Examples\Custom Moving Average", period,// Período 0, // Desplazamiento MODE_SMA, // Método de cálculo PRICE_CLOSE // Cálculo sobre precios de cierre );
void OnTick() {
// Este es el array donde se copiarán las medias móviles. // Cada elemento es un valor de media móvil // El primer elemento de esta matriz (elemento en la posición 0) es el más reciente // El último elemento es el último elemento de la matriz ArraySize() - 1 double movingAverageValues[];
ArraySetAsSeries(movingAverageValues, true); if (CopyBuffer(handle,0,0,sampleSize,movingAverageValues) < 0){Print("CopyBufferMA1 error =",GetLastError());}
################################# En un EA (NOTA: el OnInit y OnTick)
int OnInit(){
int period = 21; // La media móvil de 21 barras
int sampleSize = 100; //Este es el número de barras de datos que desea obtener int handle = iCustom(Symbol(),0, "Examples\Custom Media Móvil", period, // Periodo 0, // Desplazamiento MODE_SMA, // Método de cálculo PRICE_CLOSE // Cálculo sobre precios de cierre );
}
OnTick() {
// Este es el array donde se copiarán las medias móviles. // Cada elemento aquí es un valor de media móvil // El primer elemento de esta matriz (elemento en la posición 0) es el más reciente // El último elemento es el último elemento de la matriz ArraySize() - 1 double movingAverageValues[];
ArraySetAsSeries(movingAverageValues, true); if (CopyBuffer(handle,0,0,sampleSize,movingAverageValues) < 0){Print("CopyBufferMA1 error =",GetLastError());}
A mi no me deja compilar el archivo.
No sé si hay alguna idea de lo que está pasando.
Gracias,
Jordi
Gracias.
Abajo hay un ejemplo simple de esto que puse mientras jugaba.
Si es incorrecto por favor corrígeme y lo modificaré.
Lo que me parece extraño es que los valores no parecen coincidir con una media móvil simple en el gráfico.
################### En un script
int period = 21; // La media móvil de 21 barras
int sampleSize = 100; //Este es el número de barras de datos que desea obtener
int handle = iCustom(Symbol(),0, "Examples\Custom Moving Average",
period,// Período
0, // Desplazamiento
MODE_SMA, // Método de cálculo
PRICE_CLOSE // Cálculo sobre precios de cierre
);
void OnTick()
{
// Este es el array donde se copiarán las medias móviles.
// Cada elemento es un valor de media móvil
// El primer elemento de esta matriz (elemento en la posición 0) es el más reciente
// El último elemento es el último elemento de la matriz ArraySize() - 1
double movingAverageValues[];
ArraySetAsSeries(movingAverageValues, true);
if (CopyBuffer(handle,0,0,sampleSize,movingAverageValues) < 0){Print("CopyBufferMA1 error =",GetLastError());}
double currentMovingAverage = movingAverageValues[0];
double earliestMovingAverage = movingAverageValues[ArraySize(movingAverageValues) - 1];
################################# En un EA (NOTA: el OnInit y OnTick)
int OnInit(){
int period = 21; // La media móvil de 21 barras
int sampleSize = 100; //Este es el número de barras de datos que desea obtener
int handle = iCustom(Symbol(),0, "Examples\Custom Media Móvil",
period, // Periodo
0, // Desplazamiento
MODE_SMA, // Método de cálculo
PRICE_CLOSE // Cálculo sobre precios de cierre
);
}
OnTick()
{
// Este es el array donde se copiarán las medias móviles.
// Cada elemento aquí es un valor de media móvil
// El primer elemento de esta matriz (elemento en la posición 0) es el más reciente
// El último elemento es el último elemento de la matriz ArraySize() - 1
double movingAverageValues[];
ArraySetAsSeries(movingAverageValues, true);
if (CopyBuffer(handle,0,0,sampleSize,movingAverageValues) < 0){Print("CopyBufferMA1 error =",GetLastError());}
double currentMovingAverage = movingAverageValues[0];
double earliestMovingAverage = movingAverageValues[ArraySize(movingAverageValues) - 1];
}
Gran artículo