Você está perdendo oportunidades de negociação:
- Aplicativos de negociação gratuitos
- 8 000+ sinais para cópia
- Notícias econômicas para análise dos mercados financeiros
Registro
Login
Você concorda com a política do site e com os termos de uso
Se você não tem uma conta, por favor registre-se
Yup... não sei o quanto estou distraído. Graças ao seu conselho de tempo certo, os números de TB_TotalCount e VACount se tornam corretos e absolutamente razoáveis. Mas meus objetivos de encontrar VA High/Low ainda em apuros, meu PC se choca novamente com essa parte da codificação. Tentando novamente entender o porquê agora.
Muito obrigado, Mladen! Seu conselho me dá um sorriso parcial depois de toda a noite branca
Olá, Mladen,
Só para informar que finalmente resolvi o resto do meu problema. Tentando melhorá-lo mais.
Embora você me tenha dado tão pouca ajuda como pôde neste caso, mas descubro que às vezes esse é o melhor método de ensinar quem está aprendendo de pé.
Muito obrigado do fundo do meu coração, Mladen!
Felizes dias agradáveis para você,
fareastol
Olá, Mladen,
Eu consigo usar o impulso relativo e absoluto
Muito obrigado por sua ajuda, agora preciso suavizar a dinâmica para o rsx
Zilliq
Ps: Se isso pode ajudar alguém:
//Relative Momentum on close
ind1= fechar-fechar[1]
// Momento absoluto
ind2=abs(ind1)
ind3=wilderAverage[rs](ind1)
ind4=wilderAverage[rs](ind2)
ind3=(50*(ind3+ind4))/ind4
retornar ind3 como "RSI",0, 30, 70, 100Zilliq
Dê uma olhada neste post : https://www.mql5.com/en/forum/178733/page36
Você tem um exemplo de como isso (o alisamento) pode ser feito lá
Obrigado Mladen, vou ver que
Tenha um bom dia e milhares de agradecimentos por toda sua ajuda e trabalho
Zilliq
Bem, se eu entendi bem em seu indicador rsi mais suave 2, você apenas muda a média mais selvagem pela função ismooth
E você "émooth" o impulso relativo e absoluto
Eu faço o mesmo com a média do casco, mas o resultado não é o mesmo que você vê na minha foto
Você tem uma idéia do porquê, ou eu me engano?
Obrigado, Mladen.
E o código RSI14 e RSIsmoother 45
//Relativo Momentum no fechamento
ind1= fechar-fechar[1]
// Momento absoluto
ind2=abs(ind1)
// Momento relativo liso com média de casco
v =(2*média ponderada[round(rs/2)](ind1))-média ponderada[rs](ind1)
ind3 = média ponderada[Round(Sqrt(rs))](v)
// Momento absoluto suave com média de casco
v2 =(2*média ponderada[round(rs/2)](ind2))-média ponderada[rs](ind2)
ind4 = média ponderada[Round(Sqrt(rs))](v2)
ind5=(50*(ind3+ind4))/ind4
retornar ind5 como "RSI smooth
Eu substituo a média selvagem por um T3 Tillson em ambos (impulso relativo e absoluto), com o mesmo problema
É simplesmente o resultado da utilização de diferentes métodos de suavização. Diferentes suavizações darão diferentes resultados
Se você quiser resultados comparáveis aos do rsi afixados na rosca rsi você tem que usar esse tipo de alisamento usado nesse indicador
Obrigado Mladen por sua resposta
É estranho que um impulso relativo e absoluto suave dê um tal resultado com alguns exageros com a média do casco e o T3
Você pode explicar com uma fórmula matemática (se possível) como funciona a função ismooth do MT4 para obter um RSI comparável ao RSI, por favor, e eu o codificarei depois
Muito obrigado e tenha um bom dia
Zilliq
Seu código MT4 e minha interpretação:
//relative momentum
double mom = iMA(NULL,0,1,0,MODE_SMA,Price,i)-iMA(NULL,0,1,0,MODE_SMA,Price,i+1);
// impulso absoluto
moa duplo = MathAbs(mãe);
// Momento relativo liso com a "função ismooth
tmom duplo = iSmooth(mãe,Comprimento,VelocidadeLisa,i,0);
//baixa dinâmica absoluta com a "função ismooth
duplo tmoa = iSmooth(moa,Length,SmoothSpeed,i,1);
se (tmoa != 0)
//And the ratio 50*(RM+AM)(AM)
rsi = MathMax(MathMin((tmom/tmoa+1.0)*50.0,100.00),0.00);
caso contrário rsi = 50;
Zilliq
Você tem o código fonte dele nesse indicador. Basta convertê-lo em tempo pré-determinado.
Não é muito fácil para mim interpretar a função ismooth (o MT4 é tão complicado comparado com o PRT)
Eu tento traduzir o código MT4 em código matemático para codificá-lo depois no PRT
Por favor, você pode confirmar minha interpretação das diferentes linhas abaixo de cada linha antes de codificá-la no PRT
Muito obrigado, Mladen.
Zilliq
duplo iSmooth(preço duplo, comprimento int, velocidade dupla, int r, int instanceNo=0)
{
if (ArrayRange(workSmooth,0)!=Bars) ArrayResize(workSmooth,Bars); instanceNo *= 5; r = Bars-r-1;
if(r<=2) { workSmooth[r] = preço; workSmooth[r] = preço; workSmooth[r] = preço; return(price); }
//
//
//
//
//
_______________________________________________________________________
duplo beta = 0,45*(comprimento-1,0)/(0,45*(comprimento-1,0)+2,0);
beta = 0.45*(comprimento-1.0)/(0.45*(comprimento-1.0)+2.0)
_______________________________________________________________________
duplo alfa = MathPow(beta,speed);
alfa = beta^speed
_______________________________________________________________________
workSmooth[r] = preço+alfa*(workSmooth[r-1]-preço);
Filt0 = preço+alfa*(Filt0[1]-preço);
_______________________________________________________________________
workSmooth[r] = (preço - workSmooth[r])*(1-alpha)+alpha*workSmooth[r-1];
Filt1 = (preço - Filt0 )*(1-alfa)+alfa*Filt1[1]
_______________________________________________________________________
workSmooth[r] = workSmooth[r] + workSmooth[r];
Filt2 = Filt0 + Filt1
_______________________________________________________________________
workSmooth[r] = (workSmooth[r] - workSmooth[r-1])*MathPow(1.0-alpha,2) + MathPow(alpha,2)*workSmooth[r-1];
Filt3=Filt2-Filt4[1]*(1-alpha)*(1-alpha)+alpha*alpha*Filt3[1]
_______________________________________________________________________
workSmooth[r] = workSmooth[r] + workSmooth[r-1];
Filt4=Filt3+Filt4[1]
_______________________________________________________________________
retorno(workSmooth[r]);
return Filt4
Não é muito fácil para mim interpretar a função ismooth (o MT4 é tão complicado comparado com o PRT)
Eu tento traduzir o código MT4 em código matemático para codificá-lo depois no PRT
Por favor, você pode confirmar minha interpretação das diferentes linhas abaixo de cada linha antes de codificá-la no PRT
Muito obrigado, Mladen.
Zilliq
duplo iSmooth(preço duplo, comprimento int, velocidade dupla, int r, int instanceNo=0)
{
if (ArrayRange(workSmooth,0)!=Bars) ArrayResize(workSmooth,Bars); instanceNo *= 5; r = Bars-r-1;
if(r<=2) { workSmooth[r] = preço; workSmooth[r] = preço; workSmooth[r] = preço; return(price); }
//
//
//
//
//
_______________________________________________________________________
duplo beta = 0,45*(comprimento-1,0)/(0,45*(comprimento-1,0)+2,0);
beta = 0.45*(comprimento-1.0)/(0.45*(comprimento-1.0)+2.0)
_______________________________________________________________________
duplo alfa = MathPow(beta,speed);
alfa = beta^speed
_______________________________________________________________________
workSmooth[r] = preço+alfa*(workSmooth[r-1]-preço);
Filt0 = preço+alfa*(Filt0[1]-preço);
_______________________________________________________________________
workSmooth[r] = (preço - workSmooth[r])*(1-alpha)+alpha*workSmooth[r-1];
Filt1 = (preço - Filt0 )*(1-alfa)+alfa*Filt1[1]
_______________________________________________________________________
workSmooth[r] = workSmooth[r] + workSmooth[r];
Filt2 = Filt0 + Filt1
_______________________________________________________________________
workSmooth[r] = (workSmooth[r] - workSmooth[r-1])*MathPow(1.0-alpha,2) + MathPow(alpha,2)*workSmooth[r-1];
Filt3=Filt2-Filt4[1]*(1-alpha)*(1-alpha)+alpha*alpha*Filt3[1]
_______________________________________________________________________
workSmooth[r] = workSmooth[r] + workSmooth[r-1];
Filt4=Filt3+Filt4[1]
_______________________________________________________________________
retorno(workSmooth[r]);
retornar Filt4Até onde eu vejo que deveria ser assim, mas tendo em mente que eu nunca trabalhei com tempo pré