Ajuda na codificação - página 112

 
mladen:
Em vez de usar iCustom() para rsi e cci usar as funções incorporadas.

Parâmetros necessários para RSI :

iCCI([TD]string symbol, int timeframe, int period, int applied_price, int shift)
double iRSI([/TD]string symbol, int timeframe, int period, int applied_price, int shift)[/TD]

[/TR]

[/TABLE]

Parâmetros necessários para CCI :

[TABLE="class: docvar"]

[TR][

TD]double

E para CMO, o primeiro parâmetro é LastBarOnly e o segundo é CMO_Range, portanto a chamada iCustom() deve ser algo como :

iCustom(NULL,0, "cmo",false,CMORange,0,i);

onde CMORange seria algum parâmetro

sou um novato no mql4, você pode escrever, por favor?

 
anonimm:
sou um novato no mql4, você pode escrever, por favor

Faça algo assim :

#property indicator_chart_window

#property indicator_buffers 2

#property indicator_color1 Crimson

#property indicator_color2 RoyalBlue

extern int barsToProcess=100;

extern int RsiPeriod = 14;

extern int RsiPrice = PRICE_CLOSE;

extern int CciPeriod = 14;

extern int CciPrice = PRICE_TYPICAL;

extern int CmoRange = 14;

//

double ExtMapBuffer1[];

double ExtMapBuffer2[];

//------------------------------------------------------------------

//

//------------------------------------------------------------------

int init()

{

SetIndexBuffer(0,ExtMapBuffer1); SetIndexStyle(0,DRAW_ARROW); SetIndexArrow(0,233);

SetIndexBuffer(1,ExtMapBuffer2); SetIndexStyle(1,DRAW_ARROW); SetIndexArrow(1,234);

return(0);

}

int deinit() { return(0); }

//------------------------------------------------------------------

//

//------------------------------------------------------------------

int start()

{

int counted_bars=IndicatorCounted();

if(counted_bars>0)counted_bars--;

int limit=Bars-counted_bars; if(limit>barsToProcess)limit=barsToProcess;

for(int i=limit;i>=0;i--)

{

double rsi=iRSI(NULL,0,RsiPeriod,RsiPrice,i);

double cci=iCCI(NULL,0,CciPeriod,CciPrice,i);

double cmo=iCustom(NULL,0,"cmo",false,CmoRange,0,i);

if(rsi>60.0 && cci>150.0 && cmo>30.0)

ExtMapBuffer1=High+5*Point;

else ExtMapBuffer1=EMPTY_VALUE;

if(rsi<40.0 && cci<-150.0 && cmo<-30.0)

ExtMapBuffer2=Low-5*Point;

else ExtMapBuffer2=EMPTY_VALUE;

}

return(0);

}

Anexar também um indicador de teste (igual ao código acima)

Arquivos anexados:
_test.mq4  2 kb
 

Coloco aqui uma das melhores divergências estocásticas do FX5 que já vi 5 (eu tento muitas indis como essa),

Indica "divergência normal" e a muito interessante "divergência oculta".

Alguém pode acrescentar no código a possibilidade de mudar a cor das linhas de tendência no gráfico e os estocásticos

E pode alguém usar este código fazer a uma divergência tão bela de RSI porque eu nunca a encontro

Muito obrigado para o codificador que o fará

Tenha um bom dia

Zilliq

https://mon-partage.fr/f/qtt6kDOR/

Ps: Graças ao moderador que muda este posto no lugar certo ;-)

Arquivos anexados:
 
zilliq:
Coloco aqui uma das melhores divergências estocásticas do FX5 que já vi 5 (eu tento muitas indis como essa),

Indica "divergência normal" e a muito interessante "divergência oculta".

Alguém pode acrescentar no código a possibilidade de mudar a cor das linhas de tendência no gráfico e os estocásticos

E pode alguém usar este código fazer a uma divergência tão bela de RSI porque eu nunca a encontro

Muito obrigado para o codificador que o fará

Tenha um bom dia

Zilliq

https://mon-partage.fr/f/qtt6kDOR/

Ps: Graças ao moderador que muda este posto no lugar certo ;-)

zilliq

Experimente agora : as cores podem ser definidas a partir de parâmetros

Arquivos anexados:
 

Muito obrigado Mladen ,

Eu tento imediatamente

Zilliq

 

Olá Mladen

Os valores indicadores de correlação da elite avançada não aparecem , você pode ajudar? Obrigado.

 
nevar:
Olá MladenCorrelation indicator values from advanced elite does not appear , você pode ajudar? Obrigado.

Olá Nevar, se este for https://www.mql5.com/en/forum/180028 você também recebeu a dll e habilitou a importação da dll?

 

Obrigado MrTools

Sim, é resolvido com o arquivo dll.

 

Ajuda de codificação necessária....

Eu estou brincando com OBJ_VLINE e não vou a lugar nenhum rapidamente. Usando o seguinte código, posso desenhar uma VLINE em uma interseção de duas médias móveis como um exemplo.

{

string name="vline "+DoubleToStr(i,0);

ObjectCreate(name,OBJ_VLINE,0,iTime(Symbol(),0,i),0);

}

O que estou realmente tentando fazer é criar uma linha VLINE e Horizontal no ponto em que um MA muda de inclinação de positivo para negativo. A linha Horizontal mostra o preço real onde a mudança acontece. Estou usando o seguinte código para mudar de cor na inclinação.

fasttrend=tend rápida;

if (MABuf>MABuf) fasttrend= 1;

if (MABuf<MABuf) fasttrend=-1;

if (fast-trend>0)

{

FastUpBuffer = MABuf;

if (fasttrend<0) FastUpBuffer=MABuf;

FastDnBuffer = EMPTY_VALUE;

}

senão se (tendência rápida<0)

{

FastDnBuffer = MABuf;

if (tendência rápida>0) FastDnBuffer=MABuf;

FastUpBuffer = EMPTY_VALUE

}

Minha primeira tentativa resultou apenas no desenho de linhas em cada barra que era colorida, mas não era realmente o que eu tinha em mente. Também não tenho idéia de como apagar os antigos "cabelos cruzados" quando um novo é criado. Existe alguma função flutuando ao redor que faça isso? Eu gostaria de configurar isto como uma alternativa às setas para indicar a mudança de inclinação onde podemos ver o preço real na barra onde o indicador realmente mudou de direção.

Obrigado por qualquer ajuda,

Alex

 
hughesfleming:
Ajuda para a codificação necessária....

Eu estou brincando com OBJ_VLINE e não vou a lugar nenhum rapidamente. Usando o seguinte código, posso desenhar uma VLINE em uma interseção de duas médias móveis como um exemplo.

{

string name="vline "+DoubleToStr(i,0);

ObjectCreate(name,OBJ_VLINE,0,iTime(Symbol(),0,i),0);

}

O que estou realmente tentando fazer é criar uma linha VLINE e Horizontal no ponto em que um MA muda de inclinação de positivo para negativo. A linha Horizontal mostra o preço real onde a mudança acontece. Estou usando o seguinte código para mudar de cor na inclinação.

fasttrend=tend rápida;

if (MABuf>MABuf) fasttrend= 1;

if (MABuf<MABuf) fasttrend=-1;

if (fast-trend>0)

{

FastUpBuffer = MABuf;

if (fasttrend<0) FastUpBuffer=MABuf;

FastDnBuffer = EMPTY_VALUE;

}

senão se (tendência rápida<0)

{

FastDnBuffer = MABuf;

if (tendência rápida>0) FastDnBuffer=MABuf;

FastUpBuffer = EMPTY_VALUE

}

Minha primeira tentativa resultou apenas no desenho de linhas em cada barra que era colorida, mas não era realmente o que eu tinha em mente. Também não tenho idéia de como apagar os antigos "cabelos cruzados" quando um novo é criado. Existe alguma função flutuando ao redor que faça isso? Eu gostaria de configurar isto como uma alternativa às setas para indicar a mudança de inclinação onde podemos ver o preço real na barra onde o indicador realmente mudou de direção.

Obrigado por qualquer ajuda,

Alex

Alex

Você tentou algo como isto (para a adição da linha horizontal ) :

{

string name="vline"+Time;ObjectCreate(name,OBJ_VLINE,0,Time,0);

name="hline"+Time;ObjectCreate(name,OBJ_HLINE,0,Time,MABuff);

}

Razão: