Discusión sobre el artículo "Cómo llamar a los indicadores en MQL5" - página 2

 

A mi no me deja compilar el archivo.

No sé si hay alguna idea de lo que está pasando.

Gracias,

Jordi

 
Gracias por vuestro enorme trabajo.
 

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
 
si... es mas facil inventar tu propio indicador e incorporarlo al codigo del robot que codificar estos manejadores cada vez... tedio