O erro pode estar no número de dígitos após a vírgula decimal:
Este não é o erro, os dados não são calculados sobre o histórico, mas a partir do momento em que o símbolo é criado tudo é calculado correctamente, suspeito que a função de cálculo do histórico não está a funcionar correctamente, ou seja, é um bug.
Tenho um tal problema, comecei agora no MT5, estou a transferir os meus indicadores do MT4 e encontrei alguns problemas. Preciso de utilizar o iMA numa linha e obter o valor de um índice específico. Vi mensagens no fórum e uso a função iMAGet (bem como iATRGet semelhante, etc.). Como vejo, as funções já não funcionam, então esta pergunta: como obter graciosamente um único valor iMA? Tentei utilizar as funções acima referidas para o fazer:
Sei que é mau sem verificar, mas tenho de portar o velho código MT4, não consegui pensar em outra forma de o tornar mais simples (tenho dezenas de feiticeiros, e todos eles trabalham em diferentes períodos de tempo). Não posso inicializar os feiticeiros no oninit, porque o código tem três passos de aninhamento e não posso chamar o feiticeiro necessário sem problemas. Assim, em suma, o meu objectivo é transformar
Tenho um problema, acabo de iniciar o MT5 e tenho problemas com ele quando transfiro os meus indicadores do MT4. Preciso de utilizar o iMA numa linha e obter o valor de um índice específico. Vi mensagens no fórum e uso a função iMAGet (assim como iATRGet semelhante, etc.). Como vejo, as funções já não funcionam, então esta pergunta: como obter graciosamente um único valor iMA? Tentei utilizar as funções acima referidas para o fazer:
Sei que é mau sem verificar, mas tenho de portar o velho código MT4, não consegui pensar em outra forma de o tornar mais simples (tenho dezenas de feiticeiros, e todos eles trabalham em diferentes períodos de tempo). Não posso inicializar os feiticeiros no oninit, porque o código tem três passos de aninhamento e não posso chamar o feiticeiro necessário sem problemas. Assim, em suma, o meu objectivo é transformar
Isto :
Em algo que funciona no MT5 sem quaisquer gestos drásticos.
Basicamente: criar um manípulo indicador no OnInit()
handle_iMA_High=iMA(Symbol(),Period(),Inp_MA_ma_period,Inp_MA_ma_shift,
Inp_MA_ma_method,PRICE_HIGH);
//--- if the handle is not createdif(handle_iMA_High==INVALID_HANDLE)
{
//--- tell about the failure and output the error codePrintFormat("Failed to create handle of the iMA indicator (\"Price High\") for the symbol %s/%s, error code %d",
Symbol(),
EnumToString(Period()),
GetLastError());
//--- the indicator is stopped earlyreturn(INIT_FAILED);
}
Depois copia o(s) elemento(s) necessário(s) para a prancheta e trabalha com ela
if(CopyBuffer(ind_handle,0,-shift,amount,values)<0)
{
//--- if the copying fails, tell the error codePrintFormat("Failed to copy data from the iMA indicator, error code %d",GetLastError());
Como já escrevi, a inicialização no OnInit não é adequada para mim. Tenho de trabalhar com todos os prazos simultaneamente, tenho de inicializar todas as máscaras em cada TF, e depois em código, onde uso algum valor, fazer algo como isto:
Como já escrevi, a inicialização no OnInit não é adequada para mim. Tenho de trabalhar com todos os prazos simultaneamente, tenho de inicializar todas as máscaras em cada TF, e depois em código, onde uso algum valor, fazer algo como isto:
E assim com cada chamada de cada pulseira. O código vai transformar-se apenas numa diarreia emaranhada.
E cada nova barra vai precisar de alguma forma de a actualizar?
Existe uma função como CopyBuffer, mas copiar não uma matriz, mas um único valor pelo índice certo?
Faça um conjunto de pegas noOnInit() e trabalhe com elas.
CopyBuffer(...) em função da usabilidade, alimentá-lo com manípulo indicador e índice requerido da matriz, e a função devolverá o preço
Faça um conjunto de pegas noOnInit() e trabalhe com elas.
CopyBuffer(....) em função de usabilidade, aí alimenta-se o manípulo indicador e o índice requerido da matriz, e a função devolverá o preço
O outro problema do CopyBuffer é que ele requer um buffer indicador para si próprio. Tenho uma centena de indicadores no total e são utilizados nos cálculos para obter um único indicador. Preciso de criar uma centena de amortecedores para armazenar estes valores?
Outro problema com o CopyBuffer é que este requer necessariamente um tampão indicador para si próprio. Tenho menos de uma centena de indicadores no total e são utilizados nos cálculos para obter um único indicador. Preciso de criar uma centena de amortecedores para armazenar estes valores?
Procure exemplos de códigos no CodeBase do scriptor - tudo está lá.
Na verdade, é possível calcular o MA para qualquer barra.
Preciso de um exemplo para resolver o seguinte problema: há um indicador ¹1 no gráfico com uma dúzia de amortecedores gráficos (não ondecaps e outras coisas) e o indicador de cave ¹2 deve tirar alguns amortecedores do indicador ¹1 e mostrá-los como hixogramas (não importa como) já na cave. Obrigado antecipadamente, pelo MT5.
O erro pode estar no número de dígitos após a vírgula decimal:
Tenho um tal problema, comecei agora no MT5, estou a transferir os meus indicadores do MT4 e encontrei alguns problemas. Preciso de utilizar o iMA numa linha e obter o valor de um índice específico. Vi mensagens no fórum e uso a função iMAGet (bem como iATRGet semelhante, etc.). Como vejo, as funções já não funcionam, então esta pergunta: como obter graciosamente um único valor iMA? Tentei utilizar as funções acima referidas para o fazer:
Isto :
Em algo que funciona no MT5 sem quaisquer gestos drásticos.
Boa tarde, cavalheiros.
Tenho um problema, acabo de iniciar o MT5 e tenho problemas com ele quando transfiro os meus indicadores do MT4. Preciso de utilizar o iMA numa linha e obter o valor de um índice específico. Vi mensagens no fórum e uso a função iMAGet (assim como iATRGet semelhante, etc.). Como vejo, as funções já não funcionam, então esta pergunta: como obter graciosamente um único valor iMA? Tentei utilizar as funções acima referidas para o fazer:
Isto :
Em algo que funciona no MT5 sem quaisquer gestos drásticos.
Veja os exemplos em kodobase, tais como este:https://www.mql5.com/ru/code/27161
Basicamente: criar um manípulo indicador no OnInit()
Depois copia o(s) elemento(s) necessário(s) para a prancheta e trabalha com ela
https://www.mql5.com/ru/docs/series/copybuffer
Procure exemplos na kodobase, e.g. este:https://www.mql5.com/ru/code/27161
Basicamente: Criar manípulo indicador no OnInit()
Depois copia o(s) elemento(s) necessário(s) para o amortecedor e trabalha com ele
https://www.mql5.com/ru/docs/series/copybuffer
Como já escrevi, a inicialização no OnInit não é adequada para mim. Tenho de trabalhar com todos os prazos simultaneamente, tenho de inicializar todas as máscaras em cada TF, e depois em código, onde uso algum valor, fazer algo como isto:
E assim com cada chamada de cada pulseira. O código transformar-se-á apenas numa diarreia confusa.
E cada novo bar terá de o actualizar de alguma forma?
Existe uma função como CopyBuffer, mas copiar não uma matriz, mas um valor por índice requerido?
Como já escrevi, a inicialização no OnInit não é adequada para mim. Tenho de trabalhar com todos os prazos simultaneamente, tenho de inicializar todas as máscaras em cada TF, e depois em código, onde uso algum valor, fazer algo como isto:
E assim com cada chamada de cada pulseira. O código vai transformar-se apenas numa diarreia emaranhada.
E cada nova barra vai precisar de alguma forma de a actualizar?
Existe uma função como CopyBuffer, mas copiar não uma matriz, mas um único valor pelo índice certo?
Faça um conjunto de pegas noOnInit() e trabalhe com elas.
CopyBuffer(...) em função da usabilidade, alimentá-lo com manípulo indicador e índice requerido da matriz, e a função devolverá o preço
Faça um conjunto de pegas noOnInit() e trabalhe com elas.
CopyBuffer(...) para uma função de fácil utilização, passe o manípulo indicador e o índice requerido do conjunto, e a função devolverá o preço
muito inconveniente, no entanto)
(é embaraçoso, no entanto))
Mais como desconfortável ))))
Faça um conjunto de pegas noOnInit() e trabalhe com elas.
CopyBuffer(....) em função de usabilidade, aí alimenta-se o manípulo indicador e o índice requerido da matriz, e a função devolverá o preço
O outro problema do CopyBuffer é que ele requer um buffer indicador para si próprio. Tenho uma centena de indicadores no total e são utilizados nos cálculos para obter um único indicador. Preciso de criar uma centena de amortecedores para armazenar estes valores?
Outro problema com o CopyBuffer é que este requer necessariamente um tampão indicador para si próprio. Tenho menos de uma centena de indicadores no total e são utilizados nos cálculos para obter um único indicador. Preciso de criar uma centena de amortecedores para armazenar estes valores?