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
Olá SDC,
Eu peguei. Muito obrigado.
Se houver 100 bar, as tarifas totais começam de 0 a 99.
No início, pre_cal =0 --> limite=100 bar - 0 =100.
for(int=1 to limit=100; I+++)
no final, I=100(valor do índice) e não existe tal barra 100.
Portanto, para fazer o máximo I=99, eu coloquei o limite -1;
Pergunto-me se existe alguma maneira melhor.
Além disso, o que me confunde é que em muitos outros indicadores, utilizo a mesma abordagem e não existe tal problema fora da faixa.
Além disso, obrigado pela aba Expert.
SCFX
Além disso, o que me confunde é que em muitos outros indicadores, eu utilizo a mesma abordagem e não existe tal problema fora de alcance.
antes do B600 fora de alcance não era um erro crítico
Portanto, para fazer o máximo I=99, eu coloquei o limite -1;
Pergunto-me se existe um caminho melhor.
Seu código agora vai desenhar o histórico do gráfico a partir da barra 1 sem erros, mas ele não vai desenhar para nenhuma barra nova. Há muitas maneiras de codificá-lo, dependendo do que você deseja que ele faça. Veja os indicadores incluídos no metaeditor para ver como os codificadores MQ o fazem. Quando você puder ler o código deles e entender a razão de cada linha, não terá problemas para criar indicadores.
Consegui agora o SDC.
Pessoalmente falando, é difícil imaginar quando eu leio o documento. Ainda não tenho certeza por que prev_calculado=taxas_totais -1.
Por isso, faço aqui um exemplo numérico. Espero que isso possa ajudar alguém novo como eu.
Normalmente, vemos:
Limit=taxas_total_prev_calculadas;//(no1)
OU
for(i=1;i<limit;i++) ou for(i=1;i<=limit;i++)
O importante é certificar-se de que LIMIT >=1. Na minha situação, LIMIT=0 e, portanto, o indicador não é REFESADO quando um novo tick chega.
Ora, vamos ver. (Acho que a causa é a pré_calculada, pelo menos no meu caso)
Assumindo que eu anexe o indicador quando houver 100 barras no gráfico. Aqui estão os valores das variáveis:
Primeira tabela de valores
Variável
Total_rates 100
Índice de barras 0-99
prev_calculated 0
Limite 100
Loop i valor 1-99
Tudo é bom. O valor aparecerá pela primeira vez desde a barra 1 até o início do gráfico.Quantas barras já calculadas? É um ponto crítico para o meu erro e eu não estou 100% claro.
Quando nova barra começa, no gráfico agora 101 barra. O indicador não é atualizado na barra já fechada, que agora é a barra 1.
Segunda tabela de valores
Variável
Total_taxas 101
Índice da barra 0-100
pré-calculado 99 OU 100 (veja abaixo)
Limite2 OU 1
Loop i valor 1 a 1 OU 1 a 0
Com base na 1ª tabela, o indicador calcula 99 bar (já que ele faz um loop de 1 a 99).
Portanto, a solução é bem clara: Faça para(i=1; ___ esta aqui deve ser maior que 1 para (<) ou maior ou igual a 1 para (<=)___; i++). Em meu último código, ele é igual a 0.Entretanto, do documento diz: "MAS se não for a primeira chamada de início(), o valor igual a Bars-1 será retornado".) Portanto, ele retornará 101-1=100.
Esta única barra diferente causa problemas. Se o sistema retornar 100 como pré_calculado.
Você vê que, se pré_calculado=99, o laço irá funcionar.
Entretanto, pareça pré-calculado = 100 e, portanto, o laço não funcionará como limite =0 ou -1 depende.
Alguém pode me ajudar a ver a lógica por trás do pré_calculado= Bars-1 neste caso?
Espero que ajude.
SCFX
pré_calculado ==taxas_total
Consegui agora o SDC.
Pessoalmente falando, é difícil imaginar quando eu leio o documento. Ainda não tenho certeza por que prev_calculado=taxas_totais -1.
SCFX
Crie um novo indicador, coloque este código na função iniciar, anexe-o a um gráfico de 1 minuto e observe os alertas à medida que os ticks chegam.
Você verá que o total de tarifas_total é a quantidade atual de barras.
prev_calculado é a quantidade de barras que havia no tick anterior.
pré_calculado ==taxas_total
Crie um novo indicador, coloque este código na função iniciar, anexe-o a um gráfico de 1 minuto e observe os alertas à medida que os ticks chegam.
Você verá que o total de tarifas_total é a quantidade atual de barras.
prev_calculado é a quantidade de barras que havia no tick anterior.
Uau, isso é esquisito.
No link postado anteriormente, eles disseram que se :MAS se não for a primeira chamada de partida(), o valor igual a Bars-1 será devolvido.
Como ele retorna Barras (Rate_totals).
Sim, eu sei que eles dizem isso, mas não é totalmente exato.
O que realmente acontece é o seguinte.
rates_total == quantidade total de barras quando o tick atual chegou. prev_calculated == quantidade total de barras quando o tick anterior chegou.
Portanto, você tem 3 estados principais de pré-calculados vs tarifas_total. Indicador carregado, tiquetaque médio da barra, primeiro tique da barra nova.
pré-calculado == 0 na primeira execução porque não houve tique anterior desde que o indicador foi carregado.
Também se o gráfico for alterado ou se o histórico for adicionado, o pré-calculado volta a zero.
O valor de retorno do OnCalculate não é usado, mas é melhor usar o retorno padrão(rates_total) no caso de alguma vez corrigirem isso.
Eu sei o que dizem os novos documentos. Se você fizer isso da maneira deles, você tem que testar as taxas pré_calculadas para não_zero e ajustar as taxas_total - pré_calculadas para baixo. Isso é voltar à confusão do indicador de descida_contada.
Não adianta fazer retorno( taxas_total - 1 ) o valor do pré_cálculo é como se fosse retorno(taxas_total) independentemente do que você disse para retornar.