[¡Archivo!] Cualquier pregunta de novato, para no saturar el foro. Profesionales, no pasen de largo. No puedo ir a ningún sitio sin ti - 4. - página 479
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
No sé cuál es tu lógica, conmigo esta configuración dibuja las últimas 30 barras del indicador
Una vez más, SetIndexDrawBegin() calcula las barras desde el extremo izquierdo del gráfico
comprobar antes de empezar a discutir
BIEN. Trataré de esbozar la esencia del problema, tal vez alguien sugiera o ayude a implementarlo de una manera más sencilla.
Estamos trabajando en un gráfico de minutos. Tomemos la barra de un minuto (high+low/2 - valor medio de la barra) en el gráfico del 29/10/12 a las 00:00 - será un punto de referencia.
Luego comprobamos la desviación de este precio hacia arriba en 10 pips (cada desviación correcta es +1).
Cuando alcanzamos la desviación de 10 puntos desde el punto de partida - el contador +1; y empezamos a comprobar otras desviaciones, pero desde el punto, donde alcanzamos la desviación de 10 puntos, y esperamos la siguiente subida de 10 puntos en el precio.
Por ejemplo, obtenemos:
Si (punto de inicio) + 10 pips<= precio (utilizamos todos los precios posteriores de las barras desde el punto de inicio.) Obtenemos un contador = contador +1; y comenzamos el punto de inicio ya desde este punto -(punto de inicio + 10 pips).
Si (punto de inicio + 10 pips) +10 pips <= precio (se utilizan todos los precios posteriores de las barras desde el punto de referencia) obtenemos contador=Contador+1; y partimos de este punto-(punto de inicio + 10 pips) +10 pips.
Si(punto de inicio+ 10 pips+ 10 pips) + 10 pips <= precio (utilizamos todos los precios posteriores de las barras desde el punto de referencia.) obtenemos contador=Contador+1; y partimos de este punto -(punto de inicio + 10 pips+ 10pips) + 10 pips.
y así sucesivamente...
Hasta llegar a un contador de 10(contador == 10).
Y cada nuevabarra formadade 1 minuto (alto+bajo/2 - valor medio de la barra) comprobamos esta condición y esperamos hasta que el contador llegue a10 (contador == 10). Supongamos que han pasado dos días, cada nueva barra que se forma la comprobamos y cambiamos si las condiciones son correctas .....
Y cuando alcanzamos el contador =10 - emitimos el mensaje de que "Contador == 10". Fijamos el punto de partida 2 días antes del fijado originalmente por el usuario, es decir, del29/10/12 a las 00:00 al 31/10/12 a las 00:00 y repetimos el ciclo.
Repite el ciclo y avanza así por el programa.
Es decir, debemos tomar las barras recién formadas y dibujar(alto+bajo/2 - valor medio de la barra). Y comprueba las condiciones y, si son correctas, cámbialas como se ha descrito anteriormente.
¡He intentado implementarlo a través de un array, es muy confuso y da valores erróneos! Por favor, ayúdenme a implementar este algoritmo.
Aquí no se necesitan arrays para nada. ¿Es esto siquiera un Asesor Experto, un script o un indicador? La cuestión es que el código del Asesor Experto será diferente al del indicador para la realización de esta tarea.
Y aquí hay una desventaja importante. Mira, hemos marcado el punto de partida y está justo en el pico de la tendencia alcista. Supongamos que no tenemos en cuenta la lectura de esta vela en la obtención posterior de 10 puntos - llamémosla vela inicial. Entonces, la siguiente vela va hacia abajo y no cogemos ninguno de los dos niveles = punto de partida + 10 pips: el precio baja. Así que podemos decir, que estamos atascados durante mucho tiempo - el precio bajó y puede subir y bajar de todos modos - no alcanzará el nivel del punto de partida de todos modos - los osos lo han presionado fuertemente. Pero digamos que tuvimos suerte y después de 5.000 velas el precio volvió al nivel del punto de partida, e incluso subió 10 pips. Hemos perdido mucho tiempo, pero ahora podemos poner el precio igual al punto de partida + 10 puntos en la variable y esperar hasta que el precio alcance el nivel = nivel de la variable + 10 puntos... En resumen, no necesitamos todo eso - a juzgar por su descripción estamos cogiendo el nivel = punto de partida + 10*10 = punto de partida + 100 pips. Una vez alcanzado este nivel, desplazamos la fecha de inicio 2 días hacia el futuro y calculamos un nuevo punto de partida. Esto es complicado - hay una manera más fácil.
Establecemos la fecha de inicio en variables personalizadas (precedidas por extern en el código). Declarar una variable de tipo datetime. Supongamos que es la variable dt_StartDate (fecha de inicio) y luego en el bloque de inicialización le asignamos el valor almacenado en la variable personalizada. Luego buscamos la vela que coincida con esta fecha y calculamos el punto de partida utilizando su fórmula. Sin embargo, no es el punto de partida, sino el nivel de precios de partida. Declare una variable de tipo doble, por ejemplo d_StartLevel (nivel inicial) e introduzca el valor del nivel calculado en la variable. O puede ser aún más fácil - no declarar una variable, sino dibujar una línea horizontal a través del precio inicial calculado. Llamémoslo StartLevel. Ahora vamos a dibujar la segunda línea en el gráfico a una distancia = 100 puntos hacia arriba desde el nivel inicial - llamémosla OtlovLevel. Además, no necesitamos ninguna matriz - en cada tick simplemente observaremos si el precio es mayor que OtlovLevel o no. En cuanto lo sea, aumentamos el valor de la variable dt_StartDate en 2 días, calculamos de nuevo el nivel de inicio y desplazamos la línea de inicio hasta allí. A continuación, volvemos a tomar 100 puntos de la línea de salida y arrastramos la línea OtlovLevel hasta allí. Eso es todo, la tarea está resuelta. Cada vez podemos solicitar el precio al que se fija cualquier línea y compararlo con el precio actual o con el precio Alto de la vela actual.
No sé cuál es tu lógica, conmigo esta configuración dibuja las últimas 30 barras del indicador
Una vez más, SetIndexDrawBegin() calcula las barras desde el extremo izquierdo del gráfico
compruébalo antes de discutir.
Así que no estoy discutiendo. Aquí tienes un vistazo. Tomemos un indicador CCI estándar. He sustituidoCCIPeriod por(Bars- CCIPeriod) en la función SetIndexDrawBegin . Sólo he cambiado el amarillo resaltado en el código...
Aquí está el código:
Lógicamente, siCCIPeriod es 14. EntoncesSetIndexDrawBegin(0, Bars - CCIPeriod) debería dibujar sólo las 14 últimas barras. Comienza a partir del valor (Bar - 14). Pero esto es lo que veo en la pantalla
Así que no estoy discutiendo. Aquí tienes un vistazo. Tome el indicador estándar CCI. He sustituidoCCIPeriod en la función SetIndexDrawBegin por(Bars- CCIPeriod). Sólo he cambiado el amarillo resaltado en el código...
Aquí está el código:
Lógicamente, siCCIPeriod es 14. EntoncesSetIndexDrawBegin(0, Bars - CCIPeriod) debería dibujar sólo las 14 últimas barras. Comienza a partir del valor (Bar - 14). Pero esto es lo que veo en la pantalla
Esto es lo que veo en la pantalla
en la parte superior el indicador nativo, abajo cambió a SetIndexDrawBegin(0, Bars-CCIPeriod);
midorum, mis disculpas. Mi error. El MetaEditor abrió otra terminal... Ya funciona. Gracias.
Buen día gente, por favor denme una respuesta, cómo determinar que la vela de 15 minutos se abrió, usé una cadena alucinante, pero resultó que no siempre la vela se abre por tiempo... creo que hay una forma más sencilla de saber que la vela se abrió... pero no la entiendo...
if ((TimeMinute( TimeCurrent())==0 && TimeSeconds(TimeCurrent())==0)|| (TimeMinute(TimeCurrent())==15 && TimeSeconds(TimeCurrent())==0) | (TimeMinute(TimeCurrent())==30 && TimeSeconds(TimeCurrent())==0) | (TimeMinute(TimeCurrent())==45 && TimeSeconds(TimeCurrent())==0)
Buen día gente, por favor denme una respuesta, cómo determinar que la vela de 15 minutos se abrió, usé una cadena alucinante, pero resultó que no siempre la vela se abre por tiempo... creo que hay una forma más sencilla de saber que la vela se abrió... pero no la entiendo...
if ((TimeMinute(TimeCurrent())==0 && TimeSeconds(TimeCurrent())==0)|| (TimeMinute(TimeCurrent())==15 && TimeSeconds(TimeCurrent())==0) | (TimeMinute(TimeCurrent())==30 && TimeSeconds(TimeCurrent())==0) | (TimeMinute(TimeCurrent())==45 && TimeSeconds(TimeCurrent())==0)
https://www.mql5.com/ru/forum/131853/page4#504607
Buen día gente, por favor denme una respuesta, cómo determinar que la vela de 15 minutos se abrió, usé una cadena alucinante, pero resultó que no siempre la vela se abre por tiempo... creo que hay una forma más sencilla de saber que la vela se abrió... pero no la entiendo...
if ((TimeMinute(TimeCurrent())==0 && TimeSeconds(TimeCurrent())==0)|| (TimeMinute(TimeCurrent())==15 && TimeSeconds(TimeCurrent())==0) | (TimeMinute(TimeCurrent())==30 && TimeSeconds(TimeCurrent())==0) | (TimeMinute(TimeCurrent())==45 && TimeSeconds(TimeCurrent())==0)
La función devuelve true cuando aparece una nueva barra en M15
La función devuelve true cuando aparece una nueva barra en M15