Ajuda na codificação - página 111

 

Muito obrigado! você é tão bom!

 

Olá,

Alguém conhece um indicador que traçaria apenas o ponto de oscilação no gráfico como descrito abaixo (como o do Painel de instrumentos):

Estratégia de fuga fractal

Como foi dito anteriormente, a ação dos preços se move em ondas. A direção das tendências (para cima ou para baixo) é determinada pelos altos e baixos consecutivos.

A Tendência para cima é quando estas ondas estão fazendo altos e baixos mais altos.

Tendência para baixo é quando estas ondas estão fazendo baixas e altas mais baixas.

Como os fractais são altos e baixos, eles podem ser usados para determinar a direção da tendência.

Considere o gráfico GU H4 (à direita). Antes do ponto A, a tendência é ascendente, ou seja, o segundo fractal baixo é mais alto que o primeiro ... o segundo fractal alto é mais alto que o primeiro.

Um novo fractal baixo formado no ponto A é maior que os dois fractais baixos anteriores (continuando a tendência UP). A vela imediatamente após o ponto A formou um novo fractal alto. Este fractal é menor que o fractal alto anterior , indicando uma possível mudança na direção da tendência. A vela sob o ponto B 'quebra' o nível fractal do ponto A (linha verde). Uma seta vermelha é desenhada indicando que a direção da tendência mudou para DOWN.

As setas podem ser exibidas por ArrowsOn=verdadeiro. Nota: as setas são desenhadas somente quando uma quebra fractal muda a direção da tendência. Por exemplo, após o ponto B, os fractais inferiores continuam a ser quebrados (mais 2 vezes).

Após o ponto B, a tendência é considerada Diminuída até que um fractal alto seja quebrado. Pouco antes do ponto C, forma-se um fractal baixo mais alto. A direção da tendência ainda é considerada para baixo... nenhum fractal alto foi quebrado ainda.

No ponto E, o fractal alto do ponto C é quebrado. Mesmo sendo uma pequena quebra, uma seta verde é desenhada no ponto D, indicando uma mudança na direção da tendência. A tendência é agora considerada como UP até a próxima quebra fractal baixa.

Muito obrigado por sua ajuda.

Melhor,

Gringoh

Arquivos anexados:
 

Obrigado Mladen, é perfeito!!! Se eu quiser adicionar outra linha ao indicador como esta, como modifico o código? obrigado antecipadamente....

#property indicator_separate_window

#property indicator_buffers 2

#property indicator_color1 Red

#property indicator_color2 Blue

double UpperBuf[];

double UpperBuf1[];

double UpperBufb[];

double UpperBuf1b[];

//+------------------------------------------------------------------+

//| |

//+------------------------------------------------------------------+

void init()

{

IndicatorBuffers(4);

SetIndexBuffer(0, UpperBuf1);

SetIndexBuffer(1, UpperBuf1b);

SetIndexBuffer(2, UpperBuf);

SetIndexBuffer(3, UpperBufb);

}

void deinit() {}

void start()

{

int counted = IndicatorCounted();

if(counted < 0) return (-1);

if(counted > 0) counted--;

int limit = Bars - counted;

for(int i = 0; i < limit; i++)

if (Close!=0)

UpperBuf= ((High/Close)-34)*Volume;

else UpperBuf= 0;

for( i = 0; i < limit; i++) UpperBuf1= iMAOnArray(UpperBuf,0,33,0,MODE_EMA,i);

for( i = 0; i < limit; i++)

if (Close!=0)

UpperBufb= ((High/Close)-34)*Volume;

else UpperBufb= 0;

for( i = 0; i < limit; i++) UpperBuf1b= iMAOnArray(UpperBufb,0,33,0,MODE_EMA,i);

}

 
k3rn3l:
Obrigado Mladen, é perfeito!!! Se eu quiser adicionar outra linha ao indicador como esta, como modifico o código? obrigado antecipadamente....

#property indicator_separate_window

#property indicator_buffers 2

#property indicator_color1 Red

#property indicator_color2 Blue

double UpperBuf[];

double UpperBuf1[];

double UpperBufb[];

double UpperBuf1b[];

//+------------------------------------------------------------------+

//| |

//+------------------------------------------------------------------+

void init()

{

IndicatorBuffers(4);

SetIndexBuffer(0, UpperBuf1);

SetIndexBuffer(1, UpperBuf1b);

SetIndexBuffer(2, UpperBuf);

SetIndexBuffer(3, UpperBufb);

}

void deinit() {}

void start()

{

int counted = IndicatorCounted();

if(counted < 0) return (-1);

if(counted > 0) counted--;

int limit = Bars - counted;

for(int i = 0; i < limit; i++)

if (Close!=0)

UpperBuf= ((High/Close)-34)*Volume;

else UpperBuf= 0;

for( i = 0; i < limit; i++) UpperBuf1= iMAOnArray(UpperBuf,0,33,0,MODE_EMA,i);

for( i = 0; i < limit; i++)

if (Close!=0)

UpperBufb= ((High/Close)-34)*Volume;

else UpperBufb= 0;

for( i = 0; i < limit; i++) UpperBuf1b= iMAOnArray(UpperBufb,0,33,0,MODE_EMA,i);

}

k3rn3l

Você já o fez (há 2 linhas no indicador). Se você quer dizer mais uma (para ter 3) simplesmente faça a mesma coisa que fez para a segunda linha

 

caros codificadores,

achei este indicador METASTOCK muito bom, você pode fazê-lo para o mt4?

x:=Input("Fechamentos inferiores consecutivos - Entrada",

0,21,5);

y:=Input("Fechamento Consecutivo Superior - Saída",

0,21,5);

atraso:=Input("Entrada e Saída de atraso",0,5,0);

trama:=Ingresso("sinais: [1]Limpo, [2]Todos",

1,2,2);

In:=Sum(C<Ref(C,-1),x)=x;

Out:=Sum(C>Ref(C,-1),y)=y;

Init:=Cum(In+Out>-1)=1;

InInit:=Cum(In)=1;

flag:=BarsSince(Init OU Init)

<BarsSince(Init OU Out)+InInit;

sinais:=(InInit AND Alert(InInit=0,2)

OU bandeira E Alerta(bandeira=0,2))

-(bandeira=0 E Alerta(bandeira,2));

0;Ref(If(plot=1,signals,In-Out),-delay)

 
debashis:
caros codificadores,

achei este indicador METASTOCK muito bom, você pode fazê-lo para o mt4?

x:=Input("Fechamentos inferiores consecutivos - Entrada",

0,21,5);

y:=Input("Fechamento Consecutivo Superior - Saída",

0,21,5);

atraso:=Input("Entrada e Saída de atraso",0,5,0);

trama:=Ingresso("sinais: [1]Limpo, [2]Todos",

1,2,2);

In:=Sum(C<Ref(C,-1),x)=x;

Out:=Sum(C>Ref(C,-1),y)=y;

Init:=Cum(In+Out>-1)=1;

InInit:=Cum(In)=1;

flag:=BarsSince(Init OU Init)

<BarsSince(Init OU Out)+InInit;

sinais:=(InInit AND Alert(InInit=0,2)

OU bandeira E Alerta(bandeira=0,2))

-(bandeira=0 E Alerta(bandeira,2));

0;Ref(If(plot=1,signals,In-Out),-delay)

debashis

Qual é o nome desse indicador?

 

guru

sua chamada "sistema padrão básico". http://www.metastocktools.com/MetaStock/Pattern01.txt

 

Olá Malden, obrigado por me ajudar com a ASCTrend. Estou me perguntando se você poderia me ajudar a fazer uma ea para este indicador. há outro indicador chamado MaonMa. (Vou anexá-los) Meu pensamento é quando as setas ASCTrend subirem E a barra estiver acima da linha amarela (60 MA), colocar uma troca longa, parar de perder será a mais baixa anterior, da mesma forma, quando as setas ASCTrend descerem E a barra estiver abaixo da linha amarela (60 MA), colocar uma troca curta, parar de perder será a mais alta anterior. Obrigado.

Arquivos anexados:
 

Olá Mladen,

Eu preciso de sua ajuda novamente. Eu defini o seguinte código para um indicador baseado em seta. mas seu PC congelante, se ele evitaria o atraso, você pode escrever o código novamente usando os códigos originais rsi,cci e cmo no indicador sem a função icustom.

#janela_do_código de propriedade

#property indicator_buffers 2

#indicador de propriedade_color1 Crimson

#indicador de propriedade_color2 RoyalBlue

//---- parâmetros de entrada

barras internas externasToProcess=100;

//---- buffers

duplo ExtMapBuffer1[];

duplo ExtMapBuffer2[];

//+------------------------------------------------------------------+

//| Função de inicialização do indicador personalizado |

//+------------------------------------------------------------------+

int init()

{

//---- indicadores

SetIndexStyle(0,DRAW_ARROW);

SetIndexArrow(0,233);

SetIndexBuffer(0,ExtMapBuffer1);

SetIndexEmptyValue(0,0,0.0);

SetIndexStyle(1,DRAW_ARROW);

SetIndexArrow(1,234);

SetIndexBuffer(1,ExtMapBuffer2);

SetIndexEmptyValue(1,0.0);

//----

retorno(0);

}

//+------------------------------------------------------------------+

//| Função de desinicialização de indicador personalizada |

//+------------------------------------------------------------------+

int deinit()

{

//----

//----

retorno(0);

}

//+------------------------------------------------------------------+

//| Função de iteração de indicador personalizada |

//+------------------------------------------------------------------+

int start()

{

int counted_bars=IndicatorCounted(),

limite;

if(counted_bars>0)

barrinhas_contadas..;

limite=barras_contadas_às_barras;

if(limit>barsToProcess)

limit=barsToProcess;

for(int i=0;i<limite;i++)

{

double rsi=iCustom(NULL,0, "rsi",barsToProcess,0,i);

double cci=iCustom(NULL,0, "cci",barsToProcess,0,i);

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

if(rsi>60,0 && cci>150,0&&cmo>30,0)

ExtMapBuffer1=Alto+5*Ponto;

senão

ExtMapBuffer1=0,0;

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

ExtMapBuffer2=Low-5*Point;

mais

ExtMapBuffer2=0,0;

}

retorno(0);

}

 
anonimm:
Olá Mladen,

Eu preciso de sua ajuda novamente. Eu defini o seguinte código para um indicador baseado em seta. mas seu pc. de congelamento, se ele evitaria o atraso, você pode escrever o código novamente usando os códigos originais rsi,cci e cmo no indicador sem a função icustom.

#janela_do_código de propriedade

#property indicator_buffers 2

#indicador de propriedade_color1 Crimson

#indicador de propriedade_color2 RoyalBlue

//---- parâmetros de entrada

barras internas externasToProcess=100;

//---- buffers

duplo ExtMapBuffer1[];

duplo ExtMapBuffer2[];

//+------------------------------------------------------------------+

//| Função de inicialização do indicador personalizado |

//+------------------------------------------------------------------+

int init()

{

//---- indicadores

SetIndexStyle(0,DRAW_ARROW);

SetIndexArrow(0,233);

SetIndexBuffer(0,ExtMapBuffer1);

SetIndexEmptyValue(0,0,0.0);

SetIndexStyle(1,DRAW_ARROW);

SetIndexArrow(1,234);

SetIndexBuffer(1,ExtMapBuffer2);

SetIndexEmptyValue(1,0.0);

//----

retorno(0);

}

//+------------------------------------------------------------------+

//| Função de desinicialização de indicador personalizada |

//+------------------------------------------------------------------+

int deinit()

{

//----

//----

retorno(0);

}

//+------------------------------------------------------------------+

//| Função de iteração de indicador personalizada |

//+------------------------------------------------------------------+

int start()

{

int counted_bars=IndicatorCounted(),

limite;

if(counted_bars>0)

barrinhas_contadas..;

limite=barras_contadas_às_barras;

if(limit>barsToProcess)

limit=barsToProcess;

for(int i=0;i<limite;i++)

{

double rsi=iCustom(NULL,0, "rsi",barsToProcess,0,i);

double cci=iCustom(NULL,0, "cci",barsToProcess,0,i);

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

if(rsi>60,0 && cci>150,0&&cmo>30,0)

ExtMapBuffer1=Alto+5*Ponto;

senão

ExtMapBuffer1=0,0;

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

ExtMapBuffer2=Low-5*Point;

mais

ExtMapBuffer2=0,0;

}

retorno(0);

}

Ao invés de usar iCustom() para rsi e cci usar as funções embutidas.

Parâmetros necessários para o 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