Quaisquer perguntas de recém-chegados sobre MQL4 e MQL5, ajuda e discussão sobre algoritmos e códigos - página 134

 

Há um problema com o Consultor Especialista no testador. Estou testando com dados de 1 minuto. Eu mesmo calculo o estocástico para o TF superior usando os dados mínimos.

A história das atas tem sido baixada desde 2001. Na aba "Gráficos", definir o número máximo de barras no histórico, e exibido.

Toda a história no gráfico é percorrida.

O problema é que, como ficou demonstrado com a impressão de depuração, não importa a partir de que data eu inicie o testador, o número máximo de barras

na variável Bars na primeira barra do teste (no início) é sempre 1001 ou 1002. O valor das barras aumenta em 1 a cada barra seguinte.

Portanto, é impossível calcular a TF mais alta no início.

Há uma solução. Devemos acrescentar uma proibição de comercialização antes que as barras atinjam o valor desejado.

Podemos resolver este problema de outra forma? Este valor inicial de barras no testador aumenta de alguma forma?

 
Igor733:

Há um problema com o Consultor Especialista no testador. Estou testando com dados de 1 minuto. Eu mesmo calculo o estocástico para o TF superior usando os dados mínimos.

A história das atas tem sido baixada desde 2001. Na aba "Gráficos", definir o número máximo de barras no histórico, e exibido.

Toda a história no gráfico é percorrida.

O problema é que, como ficou demonstrado com a impressão de depuração, não importa a partir de que data eu inicie o testador, o número máximo de barras

na variável Bars na primeira barra do teste (no início) é sempre 1001 ou 1002. O valor das barras aumenta em 1 a cada barra seguinte.

Portanto, é impossível contar os TFs mais altos no início.

Há uma solução. Devemos acrescentar uma proibição de comercialização antes que as barras atinjam o valor desejado.

Podemos resolver este problema de outra forma? Este valor inicial de barras no testador aumenta de alguma forma?

Não, não tem. Use sua própria solução.
 
Qual poderia ser o problema. Ao escrever um EA, tenho que testá-lo muitas vezes para acompanhar as mudanças. Após um número aleatório de testes, o testador de estratégia não aceita mudanças feitas no código. Às vezes chega ao ponto do absurdo. Você pode simplesmente apagar um pedaço de código e a coruja trabalhará no testador, seguindo o algoritmo escrito anteriormente. O mesmo acontece com os cálculos de análise em CSV. Após um certo número de testes, alguma porcaria aleatória é analisada em CSV.

P.S. Eu apertei o botão de compilação.
 

Preciso realmente entender o algoritmo para calcular a média móvel suavizada. Há várias razões pelas quais a função iMA não é adequada.

Como entendi as informações de https://www.metatrader5.com/ru/terminal/help/indicators/trend_indicators/ma#smma

O primeiro elemento é calculado como a soma dos preços de fechamento divididos pelo período.

Os seguintes são calculados de acordo com a fórmula SMMA (i) = (SMMA (i - 1) * (N - 1) + CLOSE (i)) / N.

Vamos tomar um período de 5 e os preços de fechamento de EUR/USD H1 para o período de 24.02.2017 19:00 a 24.02.2017 23:00 (GMT+2), ou seja, as últimas 5 velas

Os preços de fechamento são 1,05681; 1,05702; 1,05639; 1,05612; 1,05592.

Correspondentemente, 1º elemento - 1.056452; 2º elemento - 1.056852 3º elemento - 1.05676 4º elemento - 1.056632 5º elemento - 1.056489

Mas no gráfico SMMA 5, fechar é 1,05706, ou seja, a diferença já está no 3º dígito

O que eu estou contando errado?

E como devo calcular corretamente para obter 1.05706?

 
zsu1970:

Preciso realmente entender o algoritmo para calcular a média móvel suavizada. Há várias razões pelas quais a função iMA não é adequada.

Como entendi as informações de https://www.metatrader5.com/ru/terminal/help/indicators/trend_indicators/ma#smma

O primeiro elemento é calculado como a soma dos preços de fechamento divididos pelo período.

Os seguintes são calculados de acordo com a fórmula SMMA (i) = (SMMA (i - 1) * (N - 1) + CLOSE (i)) / N.

Vamos tomar um período de 5 e os preços de fechamento de EUR/USD H1 para o período de 24.02.2017 19:00 a 24.02.2017 23:00 (GMT+2), ou seja, as últimas 5 velas

Os preços de fechamento são 1,05681; 1,05702; 1,05639; 1,05612; 1,05592.

Correspondentemente, 1º elemento - 1.056452; 2º elemento - 1.056852 3º elemento - 1.05676 4º elemento - 1.056632 5º elemento - 1.056489

Mas no gráfico SMMA 5, fechar é 1,05706, ou seja, a diferença já está no 3º dígito

O que eu estou contando errado?

E como devo calcular corretamente para obter 1.05706?

Analisando o próprio indicador, ele fará mais sentido.
 
Aleksey Maryaskin:
Cavalheiros desenvolvedores! Bom dia para todos. Estou interessado na questão da criação de um modelo para um Expert Advisor (roteiro) ao criá-lo. Pode ser editado em algum lugar e como é feito?
Uma ligação direta aqui provavelmente não vai passar... Você pode pesquisar no google "Eu vou postar MQL4 curso neste tópico" (sem as aspas). Procure por "template" (acho que está na 2ª página).
 
Vitaly Muzichenko:
Olhe para o próprio indicador, ele fará mais sentido.
Olhado É o mesmo que o link que eu lhe dei.

duplo SMMA(período int)
{

//envasto com preços de fechamento
int k=período;
for(int i=1; i<=período; i++)
{
H1_Close[i]=Close[k];
// Imprimir("H1_Fechar [",i,"] ",H1_Fechar[i]," Fechar [",k,"] ",Fechar[k]);
k--;
}
//calcule o primeiro elemento como o preço médio de fechamento
soma dupla=0;
para (int i=1; i<=período;i+++)
Summ=Summ+H1_Fechar[i]; //SUM1 = SUM(FECHADO, N)
duplo TmpSMMA=Soma/período; //SMMA1 = SUM1/N
//calcule o i-ésimo elemento como SMMA (i) = (SMMA (i - 1) * (N - 1) + CLOSE (i)) / N
for(int i=2;i<=período;i++)
TmpSMMA=(TmpSMMA*(período-1)+H1_Fechar[i])/período;
}
O resultado ainda é muito diferente dos dados indicadores no terminal. POR QUE ?
 
zsu1970:

Preciso realmente entender o algoritmo para calcular a média móvel suavizada. Há várias razões pelas quais a função iMA não é adequada.

Como entendi as informações de https://www.metatrader5.com/ru/terminal/help/indicators/trend_indicators/ma#smma

O primeiro elemento é calculado como a soma dos preços de fechamento divididos pelo período.

Os seguintes são calculados de acordo com a fórmula SMMA (i) = (SMMA (i - 1) * (N - 1) + CLOSE (i)) / N.

Vamos tomar um período de 5 e os preços de fechamento de EUR/USD H1 para o período de 24.02.2017 19:00 a 24.02.2017 23:00 (GMT+2), ou seja, as últimas 5 velas

Os preços de fechamento são 1,05681; 1,05702; 1,05639; 1,05612; 1,05592.

Correspondentemente, 1º elemento - 1.056452; 2º elemento - 1.056852 3º elemento - 1.05676 4º elemento - 1.056632 5º elemento - 1.056489

Mas no gráfico SMMA 5, fechar é 1,05706, ou seja, a diferença já está no 3º dígito

O que eu estou contando errado?

E como devo calcular corretamente para obter 1.05706?

Portanto, há um algoritmo de cálculo no inclusionnik.

 
Alexey Viktorov:
Há um algoritmo de cálculo no inluder.

Portanto, parece que faço tudo como nos cálculos, mas o resultado não sai. Dia 4 Não consigo entender.
Eu escrevi o código da função na resposta de Vitaly Muzichenko , mas não consigo descobrir qual é o erro
 
zsu1970:
Portanto, parece que estou fazendo tudo como nos cálculos, mas o resultado não sai. Estou sentado aqui pelo 4º dia e não consigo entender.
Eu escrevi o código da função na resposta de Vitaly Muzichenko , mas não consigo descobrir qual é o erro
Você coloca os preços imediatamente, ou os obtém e depois os cola no cálculo?
Razão: