¿cómo añadir el código del indicador en el código de expertadvisor?

 

como he mencionado anteriormente, deseo hacer ea con codificación estocástica.

el problema es como agregar el código del indicador en el ea?

 
albert_lim83:

el problema es como añadir el código del indicador en el ea ?

Se puede, con ciertas limitaciones, pero usar iCustom es mucho más fácil.

Pero si usted realmente quiere: Transferencia de un código de indicador a un código de asesor experto. Estructura de los indicadores - Artículos MQL4

 

Para el estocástico no es necesario iCustom

double iStochastic( string symbol, int timeframe, int %Kperiod, int %Dperiod, int slowing, int method, int price_field, int mode, int shift)
Calcula el oscilador estocástico y devuelve su valor.
Parámetros:
símbolo - Símbolo cuyos datos deben utilizarse para calcular el indicador. NULL significa el símbolo actual.
timeframe - Marco de tiempo. Puede ser cualquiera de los valores de la enumeración Timeframe. 0 significa el marco de tiempo del gráfico actual.
%Kperiod - Período de la línea %K.
%Dperiod - %D período de la línea.
ralentizando - Valor de ralentización.
método - Método MA. Puede ser cualquiera de los valores dela enumeración del método Moving Average.
campo_precio - Parámetro del campo del precio. Puede ser uno de estos valores: 0 - Bajo/Alto o 1 - Cierre/Cerrado.
modo - Índice de la línea del indicador. Puede ser cualquiera de los valores de la enumeración de identificadores de línea de los indicadores.
desplazamiento - Índice del valor tomado del buffer del indicador (desplazamiento relativo a la barra actual la cantidad dada de períodos atrás).
Muestra:
 if(iStochastic(NULL,0,5,3,3,MODE_SMA,0,MODE_MAIN,0)>iStochastic(NULL,0,5,3,3,MODE_SMA,0,MODE_SIGNAL,0)) return(0);
Mucha ayuda de codificación está aquí para encontrar el índice alfabético de las funciones MQL4 https://www.mql5.com/en/forum/122679

 

¿como añadir el indicador rvi en el ea?

también utilizando el mismo código que la forma de añadir estocástico?

 
 
albert_lim83:

¿como añadir el indicador rvi en el ea?

también utilizando el mismo código que la forma de añadir estocástico ?


iCustom() o iRVI()

 
albert_lim83:

¿como añadir el indicador rvi en el ea?

¿también usando el mismo código que la forma de añadir el estocástico?


  1. Explicación detallada de iCustom - Foro MQL4
 

Intento añadir el indicador RVI en el EA de escape, pero falla...

muestra

expresión en el ámbito global no permitida

definición de lafunción inesperada

paréntesis desequilibrados

¿como solucionar este error?

 

aquí el código que hice esta mañana.

¿alguien puede ayudarme a arreglarlo?


//+------------------------------------------------------------------+
int init()
{
//---- mapeo de buffers de indicadores
SetIndexBuffer(0,Buffer);
SetIndexBuffer(1,SignalBuffer);
//---- línea del indicador
SetIndexStyle(0,DRAW_LINE);
SetIndexStyle(1,DRAW_LINE);
//---- ajustes de dibujo
SetIndexDrawBegin(0,RVIPeriod+3);
SetIndexDrawBegin(1,RVIPeriod+7);
//---- nombre para la etiqueta de la DataWindow y la subventana del indicador
IndicatorShortName("RVI("+RVIPeriod+")";
SetIndexLabel(0, "RVI");
SetIndexLabel(1, "RVIS");
//---- inicialización realizada
return(0);
}
{
double bid =MarketInfo(Symbol(),MODE_BID); // Solicitud del valor de Bid
double ask =MarketInfo(Symbol(),MODE_ASK); // Solicitud del valor de Ask
double point =MarketInfo(Symbol(),MODE_POINT);//Solicitar el valor del Punto
return; // Salir de start()
if(AccountFreeMargin()<100)
Print("No tenemos dinero. Margen libre = ", AccountFreeMargin());
return(0);
}

int inicio()
{
{
int i,j,nLimit,nCountedBars;
double dValueUp,dValueDown,dNum,dDeNum;
//----
if(Bars<=RVIPeriod+8) return(0);
//----
nCountedBars=IndicatorCounted();
//---- comprobar posibles errores
if(nCountedBars<0) return(-1);
//---- la última barra contada se vuelve a contar
nLimit=Bars-RVIPeriod-4;
if(nCountedBars>RVIPeriod+4)
nLimit=Barras-nBarrasContabilizadas;
//---- RVI contados en el 1er búfer
for(i=0; i<=nLimit; i++)
{
dNum=0.0
dDeNum=0.0;
for(j=i; j<i+RVIPeriod; j++)

{
dValueUp=((Close[j]-Open[j])+2*(Close[j+1]-Open[j+1])+2*(Close[j+2]-Open[j+2])+(Close[j+3]-Open[j+3]))/6;
dValueDown=((High[j]-Low[j])+2*(High[j+1]-Low[j+1])+2*(High[j+2]-Low[j+2])+(High[j+3]-Low[j+3]))/6;
dNum+=dValueUp;
dDeNum+=dValorAbajo;
}
if(dDeNum!=0.0)
Buffer[i]=dNum/dDeNum;
si no
Buffer[i]=dNum;
}
//---- línea de señal contada en el 2do búfer
nLimit=Bars-RVIPeriod-7;
if(nCountedBars>RVIPeriod+8)
nLimit=Bars-nCountedBars+1;
for(i=0; i<=nLimit; i++)
SignalBuffer[i]=(Buffer[i]+2*Buffer[i+1]+2*Buffer[i+2]+Buffer[i+3])/6;
//----
return(0);
}
{
OrderSend(Symbol,LotSize,Ask,StopLoss,TakeProfit,0,0);
si (Close<i)
OpenBuy();
return(0);

OrderSend(Symbol,LotSize,Bid,StopLoss,TakeProfit,0,0);
si (Close>i)
OpenSell();
return(0);
}


double GetSizeLot() { return(LotSize); }
double GetTakeProfitBuy() { return(Ask+TakeProfit*Point); }
double GetTakeProfitSell() { return(Oferta+TakeProfit*Punto); }
double GetStopLossBuy() { return(Oferta-Pérdida*Punto); }
double GetStopLossSell() { return(Ask+StopLoss*Point); }
string GetCommentForOrder() { return();}

return(0); }

 

Antes de postear, por favor, lee algunos de los otros hilos... entonces habrás visto numerosas peticiones como ésta:

Por favor, use esto para publicar el código . . hace que sea más fácil de leer.

 
albert_lim83:

aquí el código que hice esta mañana.

¿alguien puede ayudarme a arreglarlo?

No se puede utilizar el código del indicador en un EA . . . leer el hilo que he publicado un enlace a. Tienes que tener igual número de { y } también igual número de ( y ). . . no he dicho ya esto una vez ? https://www.mql5.com/en/forum/139447 supongo que no te molestas en aprender de otros posts ?