Ajuda na codificação - página 466

 

Bom dia a todos.

Já vi muitas versões deste indicador e velas vermelhas que nunca apareço, poderia corrigir o erro ????.

Muito obrigado.

#Janela_do_indicador_de_propriedade

#property indicator_buffers 2

#indicador de propriedade_color1 LimeGreen

#indicador de propriedade_color2 Vermelho

//---- buffers indicadores

duplo ind_buffer1[];

duplo ind_buffer2[];

duplo ind_buffer3[];

//----

duplo CB = 0, valorh1 = 0, valuel = 0, valorh = 0, valor = 0, preço = 0, hi = 1, lo = 1;

resh duplo = 0, resl = 0, deltah = 0, deltah = 0, deltal = 0;

int CurrentBar=0;

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

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

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

int init()

{

//---- 1 buffer adicional utilizado para a contagem.

IndicatorBuffers(3);

//---- definições de desenho

SetIndexStyle(0, DRAW_HISTOGRAM, STYLE_SOLID, 2);

SetIndexStyle(1, DRAW_HISTOGRAM, STYLE_SOLID, 2);

IndicatorDigits(MarketInfo(Symbol(), MODE_DIGITS) + 1);

SetIndexDrawBegin(0, 34);

SetIndexDrawBegin(1, 34);

//---- 3 mapeamento de buffers indicadores

if(!SetIndexBuffer(0, ind_buffer1) &&

SetIndexBuffer(1, ind_buffer2) &&

SetIndexBuffer(2, ind_buffer3))

Imprimir("não pode definir buffers indicadores!");

//---- nome para DataWindow e subwindow do indicador

IndicatorShortName("DeltaForce");

SetIndexLabel(0, "DF1");

SetIndexLabel(1, "DF2");

//---- inicialização feita

retorno(0);

}

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

//| Delta Force |

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

int start()

{

for(CB = 0 ; CB <= Barras ; CB++)

{

Barra atual = Barras - CB;

if(Fechar[Barra de Corrente] > Fechar[Barra de Corrente+1])

{

resl = 0;

if(resh == 0)

deltah = 0;

deltah = deltah + (Fechar[Barra atual] - Fechar[Barra atual+1]);

// valorh = Alto[Barra de Corrente];

resh= 1;

}

if(resh == 0)

deltah = 0;

ind_buffer1[CurrentBar] = deltah;

if(Fechar[Barra de Corrente] < Fechar[Barra de Corrente+1] )

{

resh = 0;

if(resl == 0)

deltal = 0;

deltal = deltal + (Fechar[Barra atual+1] - Fechar[Barra atual]);

//valuel = Baixo[Barra de Corrente];

resl= 1;

}

if(resl == 0 )

deltal=0;

ind_buffer2[CurrentBar] = deltal;

}

//---- feito

retorno(0);

}

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

 
rookiespain:
Bom dia a todos.

Já vi muitas versões deste indicador e velas vermelhas que nunca apareço, poderia corrigir o erro ????.

Muito obrigado.

#Janela_do_indicador_de_propriedade

#property indicator_buffers 2

#indicador de propriedade_color1 LimeGreen

#indicador de propriedade_color2 Vermelho

//---- buffers indicadores

duplo ind_buffer1[];

duplo ind_buffer2[];

duplo ind_buffer3[];

//----

duplo CB = 0, valorh1 = 0, valuel = 0, valorh = 0, valor = 0, preço = 0, hi = 1, lo = 1;

resh duplo = 0, resl = 0, deltah = 0, deltah = 0, deltal = 0;

int CurrentBar=0;

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

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

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

int init()

{

//---- 1 buffer adicional utilizado para a contagem.

IndicatorBuffers(3);

//---- definições de desenho

SetIndexStyle(0, DRAW_HISTOGRAM, STYLE_SOLID, 2);

SetIndexStyle(1, DRAW_HISTOGRAM, STYLE_SOLID, 2);

IndicatorDigits(MarketInfo(Symbol(), MODE_DIGITS) + 1);

SetIndexDrawBegin(0, 34);

SetIndexDrawBegin(1, 34);

//---- 3 mapeamento de buffers indicadores

if(!SetIndexBuffer(0, ind_buffer1) &&

SetIndexBuffer(1, ind_buffer2) &&

SetIndexBuffer(2, ind_buffer3))

Imprimir("não pode definir buffers indicadores!");

//---- nome para DataWindow e subwindow do indicador

IndicatorShortName("DeltaForce");

SetIndexLabel(0, "DF1");

SetIndexLabel(1, "DF2");

//---- inicialização feita

retorno(0);

}

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

//| Delta Force |

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

int start()

{

for(CB = 0 ; CB <= Barras ; CB++)

{

Barra atual = Barras - CB;

if(Fechar[Barra de Corrente] > Fechar[Barra de Corrente+1])

{

resl = 0;

if(resh == 0)

deltah = 0;

deltah = deltah + (Fechar[Barra de corrente] - Fechar[Barra de corrente+1]);

// valorh = Alto[Barra de Corrente];

resh= 1;

}

if(resh == 0)

deltah = 0;

ind_buffer1[CurrentBar] = deltah;

if(Fechar[Barra de Corrente] < Fechar[Barra de Corrente+1] )

{

resh = 0;

if(resl == 0)

deltal = 0;

deltal = deltal + (Fechar[Barra atual+1] - Fechar[Barra atual]);

//valuel = Baixo[Barra de Corrente];

resl= 1;

}

if(resl == 0 )

deltal=0;

ind_buffer2[CurrentBar] = deltal;

}

//---- feito

retorno(0);

}

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

Experimente agora : _test.mq4

Arquivos anexados:
_test.mq4  3 kb
test.gif  68 kb
 
Big Be:
Stanwell,

Um par de fotos mostrando tudo o que ajudaria.

Grande Seja

Oi Big Be,

Bem visto, amanhã vou postar alguns gráficos.

cheers,

Stan

 

Aqui está o gráfico AUD que marquei manualmente. As caixas vermelhas são as barras sobrepostas. À esquerda, há um quadrado que mostra apenas três barras dentro dele, portanto, não se encaixa na definição. Entretanto, se esta perna for significativa, digamos maior que 6 X ATR, eu as contaria também como um balanço (apenas difícil de trocar com apenas três barras), mas achei que esta exigência complicaria a codificação para que possamos deixá-la de fora por enquanto.

thx.

Stan

Arquivos anexados:
 

Olá Mladen e Mrtools !

Preciso novamente de sua ajuda, você pode adicionar um alerta visual/acústico a este indicador, por favor ?

Obrigado de antemão,saúde!

Arquivos anexados:
 

MLADEN, bom dia.

Muito obrigado, tentaram seu _teste e a direita aparece.

Qualquer ajuda que eu tenha aqui, embora seu domínio seja muito maior que o meu, embora em ProRealTime / VISUALCHART sim eu possa ajudar mais.

Com os melhores cumprimentos.

 

Hi,

tenho um indicador e quero limitar o cálculo das barras.

O código original era:

int start()

{

int counted_bars=IndicatorCounted();

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

if(counted_bars>0) counted_bars--;

int limit = MathMin(Bars-counted_bars,Bars-1);[/CODE]

i changed it with this:

[CODE]int start()

{

int counted_bars=IndicatorCounted();

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

if(counted_bars>0) counted_bars--;

int limit = MathMin(NBars-counted_bars,NBars-1);

Está correto? O indicador parece funcionar bem, mas tenho dúvidas se realmente limitei o cálculo das barras.

 
thefxpros:
Hi,

tenho um indicador e quero limitar o cálculo das barras.

O código original era:

int start()

{

int counted_bars=IndicatorCounted();

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

if(counted_bars>0) counted_bars--;

int limit = MathMin(Bars-counted_bars,Bars-1);[/CODE]

i changed it with this:

[CODE]int start()

{

int counted_bars=IndicatorCounted();

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

if(counted_bars>0) counted_bars--;

int limit = MathMin(NBars-counted_bars,NBars-1);
É correto? O indicador parece funcionar bem, mas tenho dúvidas se realmente limitei o cálculo das barras.

thefxpros

Não. Faça-o assim :

int limit = MathMin(MathMin(Bars-counted_bars,Bars-1),NBars);

Mas nesse caso você sempre tem que ter certeza de que NBars é sempre > 0

 

Oi mladen

se você puder me ajudar, acrescente os eixos X e Y, então eu posso colocá-lo no corner,

e pode ajustar o tamanho da fonte, desculpe pelo meu inglês.

!X2014-PIPSv2

de muito.

Arquivos anexados:
 
blueface:
Oi mladen

se você puder me ajudar, acrescente os eixos X e Y, então eu posso colocá-lo no corner,

e pode ajustar o tamanho da fonte, desculpe pelo meu inglês.

!X2014-PIPSv2

de muito.

blueface

Você já as tem: variáveis posX e posY no código