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
Gracias Enrico,
Estoy tratando de entender si puedo usar una señal como un filtro adicional a otra señal...
Por ejemplo tengo una señal principal y da señal de entrada Long. Luego se comprueba la segunda señal. Y si también da larga la señal total sería larga. Pero si la segunda señal da largo pero la primera es neutral, la señal total debe ser neutral también, ya que la segunda señal es sólo un filtro adicional a la primera señal y no es una señal de entrada por sí misma.
Además, ¿hay alguna manera de controlar la administración del dinero basándose en una señal específica? Por ejemplo con esa señal el lote sería 1, con otra señal el lote sería 2 y así sucesivamente. En relación con mi primera pregunta, el lote por defecto sería para la primera señal, pero en caso de que haya una confirmación de la segunda señal, el lote se duplicaría, por ejemplo.
Gracias.
Estoy tratando de entender si puedo utilizar una señal como un filtro adicional a otra señal ...
Por ejemplo tengo una señal principal y da señal de entrada Long. Entonces se comprueba la segunda señal. Y si también da larga la señal total sería larga. Pero si la segunda señal da largo pero la primera es neutra, la señal total debe ser neutra también, ya que la segunda señal es sólo un filtro adicional a la primera señal y no es una señal de entrada por sí misma.
Es posible. Lo más sencillo es combinar las dos señales en una única instancia del descendiente CSignal. También puedes crear una instancia de CSignals dentro de la descendiente CSignal, y hacer que los subfiltros modifiquen la señal padre en consecuencia.
Además, ¿hay alguna manera de controlar la administración del dinero basándose en una señal específica? Por ejemplo con esa señal el lote sería 1, con otra señal el lote sería 2 y así sucesivamente. En relación con mi primera pregunta, el lote por defecto sería para la primera señal, pero en caso de que haya una confirmación de la segunda señal, el lote se duplicaría, por ejemplo.
Sí, esto es posible. El contenedor de la instancia de CSignals es una instancia de CExpertAdvisor, mientras que cada instancia de CSignal tiene la misma instancia de CSignals como padre. Sólo tiene que seguir obteniendo el padre/contenedor hasta llegar a la instancia de CExpertAdvisor, obtener el puntero a su administrador de dinero y, a continuación, asignar el método de administración de dinero deseado por índice o nombre.
Es posible. La forma más sencilla es combinar las dos señales en una única instancia de la descendiente CSignal. También puede crear una instancia de CSignals dentro de la descendiente CSignal, y hacer que los subfiltros modifiquen la señal padre en consecuencia.
Sí, esto es posible. El contenedor de la instancia de CSignals es una instancia de CExpertAdvisor, mientras que cada instancia de CSignal tiene la misma instancia de CSignals como padre. Sólo tienes que ir obteniendo el padre/contenedor hasta llegar a la instancia de CExpertoAsesor, obtener el puntero a su administrador de dinero, y luego asignar el método de administración de dinero deseado por índice o nombre.
Gracias Enrico, lo intentaré.
Acabo de empezar a utilizar el marco de la cruz platfrom EA.
He aplicado TEMA y MA indicadores en un SignalTEMA_MA combinado. El cálculo y la LongCondition y ShortCondition como a continuación. He adjuntado el código de EA también.
El EA parece funcionar sin embargo me sale un retraso no deseado entre el cruce de la TEMA / MA indicador y la orden como se puede ver a continuación.
Este ejemplo fue hecho con MT5 EURUSD 15 min período de Dic 4 a 6 2017.
Mi pregunta es cómo puedo conseguir que la orden se introduzca lo más cerca posible del cruce.
Una vez supere esto seguiré implementando la estrategia del EA para que con suerte sea rentable con condiciones de entrada/salida y filtros adicionales así como la gestión del dinero.
/Karl
Hola Karl,
Puede utilizar >= y <= en lugar de < y > en sus condiciones de operación:
En el tercer círculo resaltado en su captura de pantalla, el EA tomó la operación corta demasiado tarde. El código anterior hará que la operación de venta entre 1 barra antes.
Si desea que la operación se realice en el cruce mismo (2 barras atrás, la vela donde está el círculo resaltado), entonces puede utilizar la misma configuración pero con m_signal_bar = 0 (barra actual). Esto aseguraría que la operación se introdujera lo más cerca posible del cruce, pero los datos en esta barra suelen repintarse. Los indicadores pueden haber cruzado mientras la barra se está formando, puede mantener eso hasta el cierre de esa barra, o puede que no.
Hola Karl,
Puede utilizar >= y <= en lugar de < y > en sus condiciones comerciales:
En el tercer círculo resaltado en su captura de pantalla, el EA tomó la operación corta demasiado tarde. El código anterior hará que la operación de venta entre 1 barra antes.
Si desea que la operación se realice en el cruce mismo (2 barras atrás, la vela donde está el círculo resaltado), entonces puede utilizar la misma configuración pero con m_signal_bar = 0 (barra actual). Esto aseguraría que la operación se introduzca lo más cerca posible del cruce, pero los datos en esta barra se repintan a menudo. Los indicadores pueden haber cruzado mientras que la barra se está formando, puede mantener que hasta el cierre de esa barra, o puede que no.
Hola Enrico,
Muchas gracias por la rápida respuesta. Voy a probar tus recomendaciones.
/Karl
Hola Enrico,
Muchas gracias por la rápida respuesta. Probaré tus recomendaciones.
/Karl
Hola de nuevo Enrico,
He hecho algunas pruebas este fin de semana. He cambiado las condiciones de comercio a >= y <= como usted ha dicho, pero el comercio no se mueve 1 barra antes por desgracia (ver snip abajo)
También he probado a poner signal_bar=0. Ahora opera en el propio cruce, pero obtengo muchas operaciones no deseadas aunque one_trade_per_candle=true y position_reverse=true en la llamada expert.Init (ver recorte más abajo).
El archivo fuente de Experto actual se adjunta.
¿Quizás la siguiente condición en CExpertAdvisorBase::OnTick(void) es incorrecta?
¿Debería ser así?
Entonces obtengo lo siguiente :¿Quizás la siguiente condición en CExpertAdvisorBase::OnTick(void) es incorrecta?
¿Debería ser así?
Entonces obtengo lo siguiente :Hola Karl,
Esto es a menudo un problema con indicadores como TEMA. Los valores que dan dichos indicadores son tan planos que a veces es bastante difícil confirmar un cruce. Por ejemplo, en tu primera captura de pantalla (fondo blanco), la primera y segunda operaciones, si te fijas bien, hace dos barras antes de estas operaciones, la señal sigue en sentido contrario. Esto hace que la barra de hace 1 vela sea la primera vela en dar una señal de reversión (lo que dio lugar a la operación en la barra siguiente). En cuanto a la tercera operación, no puedo confirmarlo a menos que tengamos los valores de los indicadores impresos en los registros. Visualmente, los indicadores parecen continuos, pero en realidad, los datos son discretos.
En cuanto a CExpertAdvisorBase::OnTick(void), asegúrese de que si establece la señal bar = 0, el asesor experto tiene m_every_tick = true. Comprobación de nueva vela es diferente de mantener un solo comercio por vela.
Hola Enrico,
He encontrado una manera de manejar la función Calcular ahora incluyendo una función de histéresis que parece funcionar cuando la MA y el indicador TEMA se cruzan.
Sin embargo me he encontrado con un problema con el Administrador de pedidos. Sucede cuando he ejecutado el probador de estrategia para algunos bucles durante la optimización. Para los primeros bucles funciona bien, pero después de algunos bucles se coloca una orden para cada vela.
Aquí funciona bien:
Pero aquí el Order Manager comienza a colocar múltiples órdenes:
Cuando depuré la siguiente parte de código del COrderManager, la sentencia orders_total = OrdersTotal(); se convierte en 1 cuando funciona pero se convierte en 0 cuando falla, lo que lleva a que la condición if m_max_order>orders_total siempre se evalúa a true.
Espero que me puedas ayudar a resolver esto.
Saludos cordiales/
Karl