[AVISO FECHADO!] Qualquer pergunta de novato, para não desorganizar o fórum. Profissionais, não passem por aqui. Não posso ir a lugar algum sem você. - página 192

 

Por favor, me dê uma dica. Eu não entendo porque a MathMax não funciona.

A versão simplificada do código (não poderia ser mais simples) também não funciona. A variável GBPUSD_High não funciona :-( Enquanto GBPUSD_Low funciona bem.

P.S. Só estou interessado nos valores nas barras a partir do momento em que o indicador é carregado.

//+

# indicador de propriedade_separate_window
# indicadores de propriedade_buffers3
# indicador de propriedade_color1 Preto
# indicador de propriedade_color2 Cinza
# indicador de propriedade_color3 Cinza
// duplo GBPUSD[], GBPUSD_High[], GBPUSD_Low[];
//

int
init()
{
//


SetIndexBuffer(0,GBPUSD); SetIndexStyle (0,DRAW_LINE,STYLE_SOLID,2
);
SetIndexBuffer(1
,GBPUSD_High);
SetIndexS ty le(1,DRAW_LINE,STYLE_DOT,1); SetIndexBuffer(2
,GBPUSD_Low);
SetIndexStyle (2,DRAW_LINE,STYLE_DOT,1);
//
return
;
}
//
int
start()
{

int Counted_bars, i;
//
Counted_bars=IndicatorCounted();
i=Bars-Counted_bars-1;

while (i>=0)
{
GBPUSD[i]=Close[i];

if (GBPUSD_Low[i]==0) GBPUSD_Low[i]=GBPUSD[i];
GBPUSD_High[i]=MathMax(GBPUSD_High[i],GBPUSD[i]);
GBPUSD_Low[i]=MathMin(GBPUSD_Low[i],GBPUSD[i]);
i--;
}
//
return
;
}
//

Para carregar, é claro, para GBPUSD.

 
alderru >> :

Por favor, me dê uma dica. Eu não entendo porque a MathMax não funciona.

A versão simplificada do código (não poderia ser mais simples) também não funciona. A variável GBPUSD_High não funciona :-( Enquanto GBPUSD_Low funciona bem.

P.S. Só estou interessado nos valores nas barras a partir do momento da carga do indicador.

É claro, tenho que carregá-lo para GBPUSD.

A MathMax não tem nada a ver com isso. Variante:

while ( i>=0)
{
GBPUSD[ i]=Close[ i];
GBPUSD_High[ i]=High  [ i];
GBPUSD_Low[ i]=Low[ i];

//if (GBPUSD_Low[i]==0) GBPUSD_Low[i]=GBPUSD[i];

GBPUSD_High[ i]=MathMax( GBPUSD_High[ i], GBPUSD[ i]);
GBPUSD_Low[ i]=MathMin( GBPUSD_Low[ i], GBPUSD[ i]);
i--;
}
 
tmp.0 >> :

>>A MathMax não tem nada a ver com isso.

Exatamente! Tão claramente Alto é sempre maior ou igual a Close, MathMin é o mesmo ;)

 
OneDepo писал(а) >>

Exatamente! Tão claramente Alto é sempre maior ou igual a Close, MathMin é o mesmo ;)

Como exemplo, dei propositadamente o cálculo de valores já conhecidos. No original, estou procurando o máximo e o mínimo em uma barra de uma variável completamente diferente. Quando o indicador é traçado, a curva da variável é redesenhada enquanto a barra está sendo formada, é claro. Estou à procura dos pontos de fronteira.

Não entendo porque a função MathMax não funciona por si só. MathMin funciona bem; GBPUSD_Low curve is draw...

Em termos de gramática de programação, você tem alguma observação a fazer?

Por favor, instale o indicador, diga-me o que está errado, porque GBPUSD_High não é calculado.

 
alderru >> :

Como exemplo, eu dei propositadamente o cálculo de valores já conhecidos. No original, eu procuro o máximo e o mínimo em uma barra de uma variável completamente diferente. Quando o indicador é exibido, a curva da variável é redesenhada, é claro, durante a formação da barra. Estou à procura dos pontos de fronteira.

Não entendo porque a função MathMax em si não funciona.

Você tem alguma observação do ponto de vista gráfico de programação?

Instale o indicador e me diga o que está errado aqui, porque GBPUSD_High não é calculado.

Não se deixe enganar. Cole isto em sua parte favorita do código:

Print (GBPUSD_High[i],":",GBPUSD_Low[i],":",GBPUSD[i]); 
e você terá uma epifania na aba "especialistas".
 
tmp.0 писал(а) >>

Não se deixe enganar. você coloca isto no lugar onde você gosta do código:

e você terá uma epifania na aba "especialistas".

Então o que...

Não há epifania. Imprime apenas dois valores, da mesma forma que exibe o indicador. E quanto ao terceiro?

Você já tentou ao menos fazer o que aconselha?

 
Próxima pergunta, por favor :)
 
tmp.0 писал(а) >>
Próxima pergunta, por favor :)

Muito inteligente.

Obrigado pela "ajuda".

 
alderru >> :

Muito inteligente.

Obrigado pela "ajuda".

Você já recebeu a resposta acima. O motivo é utilizar um valor não atribuído na parte direita do operador de atribuição. O que é GBPUSD_High[i] igual na cadeia

GBPUSD_High[i]=MathMax(GBPUSD_High[i],GBPUSD[i]);

Foi-lhe mostrada uma opção para corrigir a situação também. Deixe a ironia para trás.


 
OneDepo писал(а) >>

A razão é o uso de um valor não atribuído no lado direito do operador da atribuição.

Portanto, declarar buffers indicadores não significa que os valores das células sejam zero. Certo?

Portanto, o MathMax não é calculado como um dos valores a ser comparado (ou seja, GBPUSD_High) não tem nenhum valor (nem mesmo zero).

Estou vendo. Obrigado OneDepo.

Peço desculpas por confundir a todos com minha simplificação (trocadilho pretendido). Como já mencionei, não estou interessado no valor das aspas altas, estou interessado no valor máximo na barra de minha própria função, cuja curva o indicador desenha e rebobina com sucesso enquanto está formando a barra. Esta é a gama de redesenho de indicadores durante a barra em que eu estava interessado.

Vou pensar sobre isso.

P.S. Mas por que a MathMin é considerada sem problemas, as condições são iguais e são declaradas as mesmas?

P.S. Eu sou muito franco. Eu não posso fazer isso. Ajude, por favor.