Está perdiendo oportunidades comerciales:
- Aplicaciones de trading gratuitas
- 8 000+ señales para copiar
- Noticias económicas para analizar los mercados financieros
Registro
Entrada
Usted acepta la política del sitio web y las condiciones de uso
Si no tiene cuenta de usuario, regístrese
Hola COSUDE,
Lo tengo. Muchas gracias.
si hay 100 bar, las tasas totales comienzan de 0 a 99.
Al principio, pre_cal =0 --> limit=100 bar - 0 =100.
for(int=1 hasta limit=100; I++)
al final, I=100(valor del índice) y no hay tal barra 100.
Por lo tanto para hacer el máximo I=99, pongo límite -1;
Me pregunto si hay alguna forma mejor.
Además, lo que me confunde es que en muchos otros indicadores, utilizo el mismo enfoque y no hay tal problema de fuera de rango.
Además, gracias por la pestaña Expert.
SCFX
Además, lo que me confunde es que en muchos otros indicadores, uso el mismo enfoque y no hay tal problema de fuera de rango.
antes B600 fuera de rango no era un error crítico
Por lo tanto para hacer el máximo I=99, pongo el límite -1;
Me pregunto si hay alguna forma mejor.
Tu código dibujará ahora el historial del gráfico desde la barra 1 hacia arriba sin error, pero no dibujará ninguna barra nueva. Hay muchas maneras de codificar dependiendo de lo que quieras hacer. Mire los indicadores incluidos en el metaeditor para ver cómo lo hacen los codificadores de MQ. Cuando puedas leer su código y entender la razón de cada línea no tendrás problemas para crear indicadores.
Ya lo tengo, COSUDE.
Personalmente, es difícil de imaginar cuando leo el documento. Todavía no estoy seguro de por qué prev_calculated= Total_rates -1.
Así que hago un ejemplo numérico aquí. Espero que pueda ayudar a alguien nuevo como yo.
Normalmente vemos:
Limit= rates_total- prev_calculated; //(no-1)
O
for(i=1;i<limit;i++) o for(i=1;i<=limit;i++)
Lo importante es asegurarse de que LIMIT >=1. En mi situación, LIMIT=0 y por lo tanto, el indicador no es REFESHED cuando la nueva garrapata que viene en.
Por qué, vamos a ver. (Creo que la causa es el prev_calculado al menos en mi caso)
Suponiendo que yo adjunte el indicador cuando hay 100 barras en el gráfico. Aquí están los valores de las variables:
Primera tabla de valores
Variable
Total_rates 100
Indice de barra 0-99
prev_calculated 0
Limit 100
Loop i value 1-99
Todo está bien. El valor aparecerá por primera vez desde la barra 1 hasta el principio del gráfico.¿Cuántas barras se han calculado ya? Es punto crítico a mi error y no estoy 100% claro.
Cuando se inicia una nueva barra, en el gráfico ahora hay 101 barras. El indicador no se actualiza en la barra ya cerrada, que es ahora la barra 1.
Segunda tabla de valor
Variable
Total_rates 101
Índice de barra 0-100
prev_calculated 99 O 100 (ver abajo)
Límite2 OR 1
Bucle i valor 1 a 1 OR 1 a 0
Basado en la tabla 1, el indicador calcula 99 bar (ya que el bucle de 1 a 99).
Así que la solución es bastante clara: Hacer for(i=1; ___ este aquí debe ser mayor que 1 for (<) o mayor o igual a 1 for (<=)___; i++). En mi último código, es igual a 0.Sin embargo, desde el documento dice: "PERO si no es la primera llamada de start(), el valor igual a Bars-1 será devuelto). Así que devolverá 101-1=100.
Esta barra diferente causa problemas. Si el sistema devuelve 100 como prev_calculado.
Verá que, si prev_calculated=99, el bucle funcionará.
Sin embargo, parece que prev_calculated = 100 y por lo tanto el bucle no funcionará como límite =0 o -1 depende.
¿Puede alguien ayudarme a ver la lógica detrás de prev_calculated= Bars-1 en este caso?
Espero que te sirva de ayuda.
SCFX
prev_calculado == rates_total
Ya lo tengo SDC.
Personalmente es difícil de imaginar cuando leo el documento. Todavía no estoy seguro de por qué prev_calculated= Total_rates -1.
SCFX
Crea un nuevo indicador pon este código en la función de inicio, adjúntalo a un gráfico de 1 minuto y observa las alertas cuando lleguen los ticks.
Verá que rates_total es la cantidad actual de barras.
prev_calculado es la cantidad de barras que había en el tick anterior.
prev_calculado == tasas_total
Cree un nuevo indicador poniendo este código en la función de inicio, adjúntelo a un gráfico de 1 minuto y observe las alertas a medida que llegan los ticks.
Verá que rates_total es la cantidad actual de barras.
prev_calculated es la cantidad de barras que había en el tick anterior.
Vaya, qué raro.
En el enlace publicado antes, decían que si :PERO si no es la primera llamada a start(), se devolverá el valor igual a Bars-1.
Como es que devuelve Bars (Rate_totals).
Sí, ya sé que lo dicen, pero no es del todo exacto.
lo que realmente sucede es esto.
rates_total == cantidad total de barras cuando llegó el tick actual. prev_calculated == cantidad total de barras cuando llegó el tick anterior.
Por lo tanto, tiene 3 estados principales de prev_calculated vs rates_total. Indicador cargado, ticks de la barra media, primer tick de la nueva barra.
prev_calculated == 0 en la primera ejecución porque no hubo ningún tick anterior desde que se cargó el indicador.
Además, si se cambia el gráfico o se añade el historial, prev_calculated vuelve a cero.
El valor de retorno de OnCalculate no se utiliza, pero es mejor utilizar el retorno por defecto (rates_total) en caso de que alguna vez lo arreglen.
Sé lo que dicen los nuevos documentos. Si lo haces a su manera tienes que comprobar que prev_calculado es distinto de cero y ajustar rates_total - prev_calculado a uno menos. Eso es volver a decrementar la confusión de indicator_counted.
No tiene sentido hacer return( rates_total - 1) el valor de prev_calculated es ese como si fuera return(rates_total) independientemente de lo que le hayas dicho que devuelva.