Perguntas de Iniciantes MQL5 MT5 MetaTrader 5 - página 471
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
1. Todos coincidem.
2. Não existe tal parâmetro.
Foi-me dito noutra linha que este problema é insolúvel em MT4. :(
2. Não sei onde obteve o MA numa janela separada para poder dizer-lhe algo sobre o parâmetro. Mas... Se tirar de Indicators --> Osciladores --> Moving Averages of Oscillator, tem "Apply to:"
Assim, se tentar colocar outro indicador numa janela separada, em alguns casos, ele pode ser aplicado não só aos preços padrão da enumeração ENUM_APPLIED_PRICE, mas também aos dados desse indicador que já se encontram na janela. Talvez se encontre apenas nesta situação.
3. Qual é o problema? Que os três MA não correspondem a três MA semelhantes (de acordo com a sua declaração) MA? Portanto, não é insolúvel, é um disparate. Se forem feitos correctamente, são obrigados a corresponder. Qual é a diferença - três MA separados com os seus próprios parâmetros ou os mesmos três MA com os mesmos parâmetros, mas amontoados num único indicador com três amortecedores... Consegue ver a diferença? Não tenho. E se o vir, então procure inconsistências no cálculo de MAKs.
A propósito... O crocodilo é três MAs num só indicador, cada um com os seus próprios parâmetros. Configure os parâmetros da mesma forma com os seus três MA separados e eles coincidirão. Mas tem toda esta bacanalia numa janela separada... Portanto ... como exemplo
Eu fiz um indicador 3MA(4,9,14) e decidi compará-lo para verificar a sua correcção com uma janela onde os três indicadores são MA(4), MA(9), MA(14). Fiquei de cabelo em pé. :)
"Onde existem três indicadores - MA(4), MA(9), MA(14)" a janela indicadora é auto-escalonada pelo primeiro indicador anexado a esta janela. No seu caso, é provavelmente o MA(4)
Pode por favor dar-me um desenho para obter o valor do indicador incorporado a partir do período de tempo superior, mas dentro deste período de tempo.
Ou seja, o gráfico actual é de 15 minutos, preciso de obter o valor do indicador, calculado por dia, mas há 45 minutos, como fazer isto?
Aqui está um algoritmo simples que retorna o valor do indicador, mas apenas para a barra actual.
double iDelta(int Variant,int n,int TF,int index)
{
double Fibo=0;
if(Variant==1) Fibo=0.236;
if(Variant==2) Fibo=0.382;
if(Variant==3) Fibo=0.5;
if(Variant==4) Fibo=0.618;
if(Variant==5) Fibo=0.764;
if(Variant==6) Fibo=1;
if(Variant==7) Fibo=1.236;
if(Variant==8) Fibo=1.382;
if(Variant==9) Fibo=1.5;
if(Variant==10) Fibo=1.618;
if(Variant==11) Fibo=2.0;
if(Variant==12) Fibo=2.236;
if(Variant==-1) Fibo=-0.236;
if(Variant==-2) Fibo=-0.382;
if(Variant==-3) Fibo=-0.5;
if(Variant==-4) Fibo=-0.618;
if(Variant==-5) Fibo=-0.764;
if(Variant==-6) Fibo=-1;
if(Variant==-7) Fibo=-1.236;
if(Variant==-8) Fibo=-1.382;
if(Variant==-9) Fibo=-1.5;
if(Variant==-10) Fibo=-1.618;
if(Variant==-11) Fibo=-2.0;
if(Variant==-12) Fibo=-2.236;
return ( NormalizeDouble(iOpen(Symbol(),TF,index)+iATR(Symbol(), TF, n, index+1)*Fibo,Digits) );
}
Tente desactivar a auto-escala das janelas indicadoras, talvez as coisas se acalmem.
"onde os três indicadores são MA(4), MA(9), MA(14)" a janela indicadora é auto-escalonada pelo primeiro indicador anexado a essa janela. No seu caso, é provavelmente MA(4)
2. Não sei onde obteve o MA numa janela separada para poder dizer-lhe algo sobre o parâmetro. Mas... Se tirar de Indicators --> Osciladores --> Moving Averages of Oscillator, tem "Apply to:"
Assim, se tentar colocar outro indicador numa janela separada, em alguns casos, ele pode ser aplicado não só aos preços padrão da enumeração ENUM_APPLIED_PRICE, mas também aos dados desse indicador que já se encontram na janela. Talvez se encontre apenas nesta situação.
3. Qual é o problema? Que os três MA não correspondem a três MA semelhantes (de acordo com a sua declaração) MA? Portanto, não é insolúvel, é um disparate. Se forem feitos correctamente, são obrigados a corresponder. Qual é a diferença - três MA separados com os seus próprios parâmetros ou os mesmos três MA com os mesmos parâmetros, mas amontoados num único indicador com três amortecedores... Consegue ver a diferença? Não tenho. E se o vir, então procure um desajuste nos cálculos do MAK.
A propósito... O crocodilo é três MAs num só indicador, cada um com os seus próprios parâmetros. Configure os parâmetros da mesma forma que os seus três AMs separados e eles corresponderão. Mas tem toda esta bacanalia numa janela separada... Portanto ... como exemplo
Artyom, "Aplicar a" - há apenas uma enumeração de preços. Os cálculos da MA estão correctos, as três linhas foram verificadas adicionando um único indicador com o período 4, depois 9, depois 14 à janela do indicador 3MA. Em cada caso, o indicador único coincide com a linha correspondente do indicador 3MA
Pode por favor dar-me um desenho para obter o valor do indicador incorporado a partir do período de tempo superior, mas dentro deste período de tempo.
Ou seja, o gráfico actual é de 15 minutos, preciso de obter o valor do indicador, calculado por dia, mas há 45 minutos, como fazer isto?
Aqui está um algoritmo simples que retorna o valor do indicador, mas apenas para a barra actual.
double iDelta(int Variant,int n,int TF,int index)
{
double Fibo=0;
if(Variant==1) Fibo=0.236;
if(Variant==2) Fibo=0.382;
if(Variant==3) Fibo=0.5;
if(Variant==4) Fibo=0.618;
if(Variant==5) Fibo=0.764;
if(Variant==6) Fibo=1;
if(Variant==7) Fibo=1.236;
if(Variant==8) Fibo=1.382;
if(Variant==9) Fibo=1.5;
if(Variant==10) Fibo=1.618;
if(Variant==11) Fibo=2.0;
if(Variant==12) Fibo=2.236;
if(Variant==-1) Fibo=-0.236;
if(Variant==-2) Fibo=-0.382;
if(Variant==-3) Fibo=-0.5;
if(Variant==-4) Fibo=-0.618;
if(Variant==-5) Fibo=-0.764;
if(Variant==-6) Fibo=-1;
if(Variant==-7) Fibo=-1.236;
if(Variant==-8) Fibo=-1.382;
if(Variant==-9) Fibo=-1.5;
if(Variant==-10) Fibo=-1.618;
if(Variant==-11) Fibo=-2.0;
if(Variant==-12) Fibo=-2.236;
return ( NormalizeDouble(iOpen(Symbol(),TF,index)+iATR(Symbol(), TF, n, index+1)*Fibo,Digits) );
}
Não posso responder à pergunta, mas a função pode ser simplificada e significativamente acelerada.
Ao inicializar o indicador, crie uma matriz estática
double arrFibo[13] = {0.0, 0.236, 0.382, ..., 2.236};
e tudo se emiDelta() pode ser substituído por:
if (Variant>0)
Fibo = arrFibo[ Variant];
else
Fibo = -arrFibo[-Variant];
Não posso responder à pergunta, mas a função pode ser simplificada e significativamente acelerada.
Durante a inicialização do indicador criar uma matriz estática
double arrFibo[13] = {0.0, 0.236, 0.382, ..., 2.236};
e todos os if's emiDelta() podem ser substituídos por:
if (Variant>0)
Fibo = arrFibo[ Variant];
else
Fibo = -arrFibo[-Variant];
Obrigado, vou tentar, talvez seja melhor.
Não posso responder à pergunta, mas a função pode ser simplificada e significativamente acelerada.
Na inicialização do indicador criar uma matriz estática
double arrFibo[13] = {0.0, 0.236, 0.382, ..., 2.236};
e todos os ifs emiDelta() podem ser substituídos por:
if (Variant>0)
Fibo = arrFibo[ Variant];
else
Fibo = -arrFibo[-Variant];
Eu fiz. como escreveu, mas não funcionou como deveria - ainda não sei o que está exactamente errado - preciso de imprimir....
Não compreendo o fio.
else Fibo = -arrFibo[-Variant];
Fi-lo como escreveu, mas não funciona como deveria - ainda não sei o que está errado - preciso de imprimir....
Não compreendo a linha.
else Fibo = -arrFibo[-Variant];
No mesmo caso, precisamos de valores negativos de Fibo, portanto -arrFibo.