
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 hay OnStart() en los EA's pero entiendo lo que quieres decir. Sin embargo, el OP incluso en respuesta a sus comentarios dijo y cito:
Sí, me refería a OnTick(). Sigues dándole demasiada importancia a "mientras se ejecuta el EA". No significa necesariamente, o incluso lo más plausible, "mientras el EA está ejecutando su OnTick()", en lugar de "mientras el EA está unido a un gráfico, es decir, durante toda su vida".
Necesitamos más información de paranoyakX.
Sí, me refería a OnTick(). Sigues dándole demasiada importancia a "mientras se ejecuta el EA". No significa necesariamente, o incluso lo más plausible, "mientras el EA está ejecutando su OnTick()", en lugar de "mientras el EA está unido a un gráfico, es decir, durante toda su vida".
Necesitamos más información de paranoyakX.
Hola chicos,
permítanme aclarar esto. Mi código está buscando un patrón muy básico en las barras anteriores y decidirá si se abrirá una orden, pero la apertura de una nueva orden se comprobará sólo cuando aparezca una nueva barra. lo que quiero decir es que estoy esperando el cierre de la última barra, a continuación, comprobar el patrón, si está bien voy a abrir la orden.
De alguna manera, si tengo que volver a ejecutar el EA, quiero encontrar esta información básica de nuevo (barra de inicio y fin del patrón, precios más altos, más bajos, etc) y llenar mis variables globales de nuevo, es por eso que necesito esto. Usaré la información de inicio y fin para decidir cuando cerrar mi orden. así que es suficiente si una nueva barra no aparece en OnInit, mientras el EA se ejecuta, no es un problema.
Sí, me refería a OnTick(). Sigues dando demasiada importancia a "mientras se ejecuta el EA". No significa necesariamente, o incluso lo más plausible, "mientras el EA está ejecutando su OnTick()", en lugar de "mientras el EA está unido a un gráfico, es decir, durante toda su vida".
Necesitamos más información de paranoyakX.
Hola chicos,
déjenme aclarar esto. Mi código está buscando un patrón muy básico en las barras anteriores y decidirá si se abrirá una orden, pero la apertura de una nueva orden se comprobará sólo cuando aparezca una nueva barra. lo que quiero decir es que estoy esperando el cierre de la última barra, a continuación, comprobar el patrón si está bien voy a abrir la orden. por lo que la apertura de una orden está sucediendo en la apertura de la nueva barra. como @jjc dijo, estoy manteniendo la información básica del patrón en las variables globales, como cuando mi patrón comenzó y terminó, lo que el valor más alto y más bajo es, etc.
De alguna manera, si tengo que volver a ejecutar el EA, quiero encontrar esta información básica de nuevo (barra de inicio y fin del patrón, precios más altos, más bajos, etc) y llenar mis variables globales de nuevo, es por eso que necesito esto. Utilizaré la información de inicio y fin para decidir cuándo cerrar mi orden. así que es suficiente si una nueva barra no aparece en OnInit, mientras el EA se ejecuta, no es un problema.
Usted NO debería estar haciendo todo eso en el OnInit (). Usted debe estar haciendo toda esa lógica (incluyendo la recuperación) en el OnTick(). Esto es importante. Hacerlo en OnInit( ) te causará más problemas que no has previsto y dejará tu EA en un estado de "inicialización" mientras haces toda esa lógica. Así que, ¡hazlo bien! Haga sólo su inicialización (como variables, comprobaciones de parámetros externos, etc.) en OnInit( ) y todo lo demás en OnTick().
¡No no no! No he podido explicarme, lo siento, estoy ejecutando todo en el OnTick. pero simplemente he comprobado si este tick pertenece a una nueva barra y hago mi plantilla. Lo que ejecuto en OnInit es, volver a encontrar las órdenes y el patrón que calculé antes, recalcularlo. He dicho que esto se ejecuta en OnInit, encontrar mi patrón que actualmente abierto orden es pertenecer a.
Espero poder explicarlo.
¡No no no! No he podido explicarme, lo siento, estoy ejecutando todo en el OnTick. pero simplemente he comprobado si este tick pertenece a una nueva barra y hago mi plantilla. Lo que ejecuto en OnInit es, volver a encontrar las órdenes y el patrón que calculé antes, recalcularlo. He dicho que esto se ejecuta en OnInit, encontrar mi patrón que actualmente abierto orden es pertenecer a.
Espero poder explicarme.
Sí, lo he entendido en tu post. Lo que estoy diciendo es que NO hagas eso en el OnInit(). Deberías encontrar tus órdenes y patrones y todo ese cálculo en el OnTick().
Solo define una variable estática local en OnTick() y haz todo tu chequeo y definición de patrones, y luego pon la variable a false.
Sí, lo he entendido en tu post. Lo que estoy diciendo es que NO hagas eso en el OnInit(). Deberías encontrar tus órdenes y patrones y todo ese cálculo en el OnTick().
Solo define una variable estática local en OnTick() y haz todo tu chequeo y definición de patrones, y luego pon la variable a false.
Lo siento entonces, te entendí mal antes. ¿Por qué no hago eso en OnInit? ¿No es más conveniente? Cuando hago eso, por cada tick después del primero, estaré ejecutando una sentencia if que no será verdadera cada vez. Pensé que la carga innecesaria en el código.
¿No es la razón de ser de OnInit, para inicializar algo como mis variables globales?
Espero poder explicarlo.
Creo que necesitamos ver algo de código para estar seguros de lo que estás hablando. Por ejemplo, no está claro si estás buscando el patrón histórico que generó una operación abierta existente porque (a) eso te dice cómo gestionar la operación abierta, dónde/cuándo cerrarla, etc., o (b) sólo para dibujar algunos marcadores en el gráfico explicándote por qué se abrió la operación existente.
En general, estoy de acuerdo con FMIC en que se debe tratar de hacer todo lo posible en OnTick(), y mantener el menor estado posible en las variables globales.
Lo siento entonces, te entendí mal antes. ¿Por qué no hago ese OnInit? ¿No es más conveniente? Cuando hago eso, por cada tick después del primero, estaré ejecutando una sentencia if que no será verdadera cada vez. Pensé que la carga innecesaria en el código.
¿No es la razón de ser de OnInit, para inicializar algo como mis variables globales?
gracias por el consejo, aquí está una versión muy simple de mi código, esto no es mi código real, pero espero que esto sea más claro.
como he dicho esto no es el código real, encontrar el patrón etc es sólo un ejemplo. la razón por la que abrí este hilo es la función DetectExistingPattern()