como adicionar código indicador no código do consultor especializado ??

 

como mencionei acima, desejo fazer ea com codificação estocástica.

o problema é como adicionar código indicador em ea ??

 
albert_lim83:

o problema é como adicionar código indicador em ea ??

Você pode, com certas limitações, mas usar o iCustom é muito mais fácil.

Mas se você realmente quiser: Transferir um Código Indicador para um Código de Conselheiro Especializado. Estrutura do Indicador - Artigos MQL4

 

Para estocásticos não é necessário iCustom

duplo iStochastic( símbolo de corda, int timeeframe, int %Kperiod, int %Dperiod, int slowing, int método int, int price_field, int mode, int shift)
Calcula o oscilador estocástico e retorna seu valor.
Parâmetros:
símbolo - Símbolo cujos dados devem ser usados para calcular o indicador. NULL significa o símbolo atual.
cronograma - Cronograma. Pode ser qualquer um dos valores de enumeração de prazos. 0 significa o período de tempo atual do gráfico.
%PeriodoK - Período da linha %K.
%Período - Período da linha %D.
desacelerado - Valor de desaceleração.
método - Método MA. Pode ser qualquer um dos valores deenumeração do métodoMoving Average.
preço_campo - Parâmetro do campo de preço. Pode ser um destes valores: 0 - Baixo/Alto ou 1 - Fechado/Fechado.
modo - Índice da linha indicadora. Pode ser qualquer um dos valores de enumeração dos identificadores da linha de Indicadores.
turno - Índice do valor retirado do buffer de indicadores (deslocamento em relação à barra atual a quantidade indicada de períodos atrás).
Amostra:
 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)) retorno(0);
Uma grande ajuda de codificação está aqui para encontrar o Índice Alfabético de Funções da MQL4 https://www.mql5.com/en/forum/122679

 

que tal adicionar o indicador rvi em ea ?

também usando o mesmo código da forma como se adiciona o indicador estocástico?

 
 
albert_lim83:

que tal adicionar o indicador rvi em ea ?

também usando o mesmo código da forma como se adiciona o indicador estocástico ?


iCustom() ou iRVI()

 
albert_lim83:

que tal adicionar o indicador rvi em ea ?

também usando o mesmo código da forma como se adiciona o indicador estocástico ?


  1. Explicação detalhada do fórum iCustom - MQL4
 

Tento adicionar o indicador RVI na EA de fuga, mas falha...

ele mostra

expressão em âmbito global não permitida

definição dafunção inesperada

Parênteses desequilibrados

como corrigir esses erros ??

 

aqui o código que eu fiz esta manhã.

qualquer um pode me ajudar a consertá-lo ??


//+------------------------------------------------------------------+
int init()
{
//---- mapeamento de buffers indicadores
SetIndexBuffer(0,Buffer);
SetIndexBuffer(1,SignalBuffer);
//---- linha indicadora
SetIndexStyle(0,DRAW_LINE);
SetIndexStyle(1,DRAW_LINE);
//---- definições de desenho
SetIndexDrawBegin(0,RVIP período+3);
SetIndexDrawBegin(1,RVIP período+7);
//---- nome para DataWindow e subwindow label do indicador
IndicatorShortName("RVI("+RVIPeriod+")");
SetIndexLabel(0, "RVI");
SetIndexLabel(1, "RVIS");
//---- inicialização feita
retorno(0);
}
{
double bid =MarketInfo(Symbol(),MODE_BID); // Solicitação do valor da Licitação
double ask =MarketInfo(Symbol(),MODE_ASK); // Solicitação do valor de Ask
ponto duplo =MarketInfo(Symbol(),MODE_POINT);//Request for Point
retorno; // Saída início()
if(AccountFreeMargin()<100)
Imprimir("Nós não temos dinheiro. Margem Livre = ", AccountFreeMargin());
devolução(0);
}

int start()
{
{
int i,j,nLimit,nCountedBars;
duplo dValueUp,dValueDown,dNum,dDeNum;
//----
if(Bars<=RVIP period+8) return(0);
//----
nCountedBars=IndicatorCounted();
//---- verificação de possíveis erros
if(nCountedBars<0) retorno(-1);
//---- última barra contada será recontada
nLimit=Bars-RVIPeriod-4;
if(nCountedBars>RVIPeriod+4)
nLimit=Bars-nCountedBars;
//---- RVI contado no buffer 1-st
for(i=0; i<=nLimit; i++)
{
dNum=0,0;
dDeNum=0,0;
for(j=i; j<i+RVIP period; 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+=dValueDown;
}
if(dDeNum!=0.0)
Buffer[i]=dNum/dDeNum;
senão
Buffer[i]=dNum;
}
//---- linha de sinal contada no buffer 2-nd
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;
//----
retorno(0);
}
{
OrderSend(Symbol,LotSize,Ask,StopLoss,TakeProfit,0,0);
se (Fechar<i)
OpenBuy();
return(0);

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


duplo GetSizeLot() { return(LotSize); }
duplo GetTakeProfitBuy() { return(Ask+TakeProfit*Point); }
duplo GetTakeProfitSell() { return(Bid-TakeProfit*Point); }
duplo GetStopLossBuy() { return(Bid-StopLoss*Point); }
duplo GetStopLossSell() { return(Ask(Ask+StopLoss*Point); }
string GetCommentForOrder() { return();}

return(0); }

 

Antes de postar, leia alguns dos outros tópicos ... então você teria visto numerosos pedidos como este:

Por favor, use isto para postar o código . . torna a leitura mais fácil.

 
albert_lim83:

aqui o código que eu fiz esta manhã.

qualquer um pode me ajudar a consertá-lo ??

Você não pode usar o código Indicador em um EA . . . leia o tópico para o qual eu postei um link. Você tem que ter números iguais de { e } também números iguais de ( e ). . . já não disse isto uma vez ? https://www.mql5.com/en/forum/139447 Acho que você não se preocupa em aprender com outros posts ?
Razão: