[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 33

 
xruss >> :
Você sabe a resposta à minha pergunta adicional?

A condição abaixo é boa, mas eu não uso a função de atualização, portanto não posso lhe dizer.

P.S. Eu também sou um iniciante.

 
xruss писал(а) >>
mas alguém sabe se esta ordem de condições de listagem através de vários (&&) em uma linha de operadores do if() é aceitável?

Aceitável, embora eu colocaria mais parênteses - as operações têm prioridades diferentes em idiomas diferentes - para não pensar em trivialidades - algo como:

if ((Max_price_1>EMA20_Open) && (Min_price_1>EMA20_Open) && (Heiniken_Red>Heiniken_Blue))
   {
    Opn_B=true;
   }
 
zfs >> :

Você procura por altos entre os x vizinhos mais próximos do indicador e os compara.

Como é a função de procurar os últimos 2 máximos no RSI?

Alguém pode me mostrar o código?

 
xruss писал(а) >>

...(será que atualizar com RefreshRates() tem que ser feito?)

Qual é a finalidade do RefreshRates? A questão é que, após um novo tick chegar, variáveis embutidas (como Ask, Bid, etc.) são lidas e passadas para a função start(). Se o início demorar muito, um novo tique pode vir, mas as variáveis não são atualizadas. É aí que você chama a RefreshRates.

Quando o início leva muito tempo? Normalmente quando uma operação comercial está em andamento - há uma troca de rede, é necessária a permissão do servidor para a operação e uma resposta é esperada. Assim, geralmente se utiliza o RefreshRates quando mais de 1 pedido é aberto/fechado em um único tick. É utilizado entre operações.

 
amur писал(а) >>

Como é a função de busca das duas últimas altas no RSI?

Alguém pode me mostrar o código?

Por mais estranho que possa parecer, a tarefa não é fácil. Tecnicamente, você tem que voltar atrás e procurar pontos tais que:

y(x-1)<y(x) e y(x)>y(x+1).

Mas isto vai encontrar extremos locais, e isso é um pouco exagerado - você não vai ficar satisfeito com o resultado.

 
Itso >> :

Por mais estranho que possa parecer, a tarefa não é fácil. Tecnicamente, você tem que voltar atrás e procurar pontos tais que:

y(x-1)<y(x) e y(x)>y(x+1).

Mas isso vai encontrar extremos locais, e isso é um pouco estranho - você não vai ficar satisfeito com o resultado.

Estou pensando aproximadamente o mesmo, mas confuso com alguns pensamentos: como será distinguido o 1º máximo do 2º,

porque esta condição se encaixa tanto no primeiro máximo quanto no segundo e terceiro....

 
amur писал(а) >>

Estou pensando na mesma linha, mas estou confuso com algumas reflexões: como o 1º máximo será diferenciado do 2º máximo,

porque tanto o primeiro máximo como o segundo e o terceiro máximo se encaixam sob esta condição....

Posso recomendar que você procure e leia sobre o ZigZag (há muita literatura). Eu recomendaria o Rochev zigzag - 'Zigzag R'.

 
Itso >> :

Posso recomendar a busca e leitura sobre o ZigZag (há muita literatura). Eu recomendaria o Rochev zigzag - 'Zigzag R'.

>> Obrigado. Vou dar uma olhada.

Deu uma olhada em....(((( Eu não entendo nada claramente... A matriz é preenchida, então a função shifft não está clara exatamente o que ela faz.

 
amur писал(а) >>

Obrigado, vou dar uma olhada.

Olhado em....(((( Eu não entendo nada... A matriz é preenchida, então a função shifft não entende exatamente o que está fazendo.

É isso mesmo - o assunto é bastante complexo - mas este ziguezague funciona sem erros. Você pode usá-lo para RSI.

 
amur >> :

como é a função de encontrar os dois últimos máximos no LER ?

alguém pode mostrá-lo em forma de código?

É o que parece:

bool exit_for=false;
int max_1=0;int max_2=0;
for(int k=0; k<Bars; k++)
{
	if(	iRSI(Symbol(),0, rsi_period,PRICE_CLOSE, k)<iRSI(Symbol(),0, rsi_period,PRICE_CLOSE, k+1)
		&& iRSI(Symbol(),0, rsi_period,PRICE_CLOSE, k+1)>iRSI(Symbol(),0, rsi_period,PRICE_CLOSE, k+2) 	)
	{
		//Если это первый максимум:
		if( max_1==0)
			max_1= k+1;//Записываем номер бара экстремума
		else
		//Если первый найден, записываем второй
		{	
                        max_2= k+1;
                        exit_for=true;
                } 
	}
        //Выход из цикла, когда найдены оба максимума
        if( exit_for==true) k=Bars+1;  
}
Razão: