MMA_Breakout_strategy_volume I (sin MM ni MF) - codificado por WhooDoo22

 
Pensé que sería útil para los nuevos codificadores (y codificadores experimentados) para publicar una versión actualizada de MMA_Breakout_strategy_Volume I, por lo que los codificadores novatos / experimentados por igual podría tener una oportunidad de entender las dos actualizaciones importantes necesarios para este EA (volumen I) para ejecutar más suave y más eficiente. Esta versión no incluye la gestión del dinero o la filtración del mercado y todavía se considera el volumen I. (Todavía estoy decidiendo cómo implementar la gestión del dinero y las características de filtración del mercado en el volumen I para finalmente evolucionar el volumen I al volumen II. Voy a compartir una parte de mis pensamientos sobre la realización de ambas tareas de MM (gestión del dinero) y MF (filtración del mercado). MM: Como bien sabe, el volumen I utiliza una única orden y cierra parcialmente su orden cuando las medias móviles se cruzan. El objetivo de MM es aumentar el tamaño del lote a medida que aumenta el saldo de la cuenta (ejemplo: el saldo de la cuenta aumenta 1.000 dólares, el bloque de código ajustará el tamaño del lote actual al doble. Este bloque de código también disminuirá el tamaño del lote a la mitad del tamaño del lote actual si el saldo de la cuenta pierde $1,000. Este es el objetivo actual para MM. En cuanto a MF: Estoy considerando a fondo todas las opciones antes de abrir esta puerta a mi territorio de codificación inexperto. Se me ocurren múltiples formas de realizar esta tarea. La pregunta que me queda es: ¿qué opción debo elegir? He comenzado a codificar versiones del volumen II con la función MF para familiarizarme con nuevas y diferentes técnicas. La repetición de la prueba y el error me guiarán hasta la finalización de este proyecto. Asegúrese de ejecutar desde 1999-2012.10 en el marco de tiempo M15 EURUSD para verificar la prueba más reciente publicado del volumen I (también se considera en parte el volumen II). ¡En una nota lateral, estoy sorprendido de que el volumen I haya sido descargado 10.000 veces en dos meses más o menos! WOW! :) Me alegro mucho de que mi trabajo haya resultado valioso para los codificadores/comerciantes. Gracias. - WhooDoo22.
 
¿Cómo se puede seleccionar una entrada con un número 0 en una cuenta real o de demostración? ¿Qué ocurre si alguna de las llamadas a OrderSelect() falla? ¿Por qué no se comprueban los valores de retorno y se informa de los errores?

¿Qué son los valores de retorno de las funciones? ¿Cómo los utilizo?
 
Hola Simon, entiendo que actualmente hay temas menores de menor prioridad que MM y MF por el momento. Sí tengo previsto recortar el volumen II después de añadir MM y MF. Lo recortaré añadiendo código para seleccionar órdenes por número mágico, código para ejecutar el volumen II en corredores de 4-5 dígitos, etc. Entiendo que hay muchos pequeños detalles que hay que supervisar, pero por ahora, el trabajo más difícil se llevará a cabo primero. Tu incitación es bien recibida y pienso cruzar este puente cuando llegue a él. Visitaré el enlace que ha proporcionado. Gracias.
 
WhooDoo22:
Hola Simon, entiendo que hay temas menores de menor prioridad que MM y MF por el momento. Sí tengo previsto recortar el volumen II después de añadir MM y MF. Lo recortaré añadiendo código para seleccionar órdenes por número mágico, código para ejecutar el volumen II en corredores de 4-5 dígitos, etc. Entiendo que hay muchos pequeños detalles que hay que supervisar, pero por ahora, el trabajo más difícil se llevará a cabo primero. Tu incitación es bien recibida y pienso cruzar este puente cuando llegue a él. Visitaré el enlace que ha proporcionado. Gracias.
Si pensara que lo que he escrito en ese enlace es un detalle o una opción o algo que se añadirá en una fecha posterior si el tiempo lo permite no me habría tomado el tiempo de escribirlo... es esencial OMI! ¿Cuántos posts hay preguntando sobre el error 130? o el error 138? comprueba los valores de retorno, si tienes un problema imprime el error y todas las variables relevantes... . . entonces cuando tengas un problema tendrás la información necesaria para determinar la causa.

No puedes retroceder en el tiempo para encontrar cuál fue el Ask cuando intentaste hacer un Pedido y falló . . .
 

¿Qué es variable y cómo puede ser un número de ticket cuando se hace esto?

i++;

Tengo 4 operaciones en vivo en este momento, sus números de ticket no son secuenciales....

 

Simon,

Si pensara que lo que había escrito...

RE: Entiendo que este arreglo es una necesidad. Lo arreglaré, creo que antes de lo que pensaba porque pareces muy inflexible en la aplicación de esta corrección. Estoy de acuerdo en que se aplique esta corrección y haré pruebas con la función de comprobación de errores para aislar el origen del error. Me pondré en contacto con Simon. Gracias.

¿Qué es la variable i...

RE: La variable i es una variable ficticia de ticket, pero ;) i no es realmente un ticket; i es considerada una variable simple por el EA. El EA cuenta la variable i en lugar de contar el número de ticket real (método alternativo de contar el ticket actual).

¿Cómo puede ser un número de ticket cuando se hace esto?

RE: La variable i no es en realidad un número de ticket. i es una variable de ticket ficticia que el EA cuenta para mantener el recuento del número de ticket actual. En resumen, la variable i no se considera un número de ticket.


Deseo responder a sus mensajes lo antes posible, pero no puedo proporcionar respuestas extensas hasta que tenga tiempo para explicar y discutir.

¡Gracias por su importante post!

 
WhooDoo22:

Simón,

Quería responder a tus mensajes lo antes posible, pero no puedo dar respuestas extensas hasta que tenga tiempo para explicar y discutir.

¡Gracias por tu importante post!

Puedes responder cuando tengas tiempo, está bien :-)

Sii es un número de billete ficticio... ¿qué sentido tiene hacer esto?

OrderClose( i,  0.01,Ask,30,CLR_NONE); 

¿No está garantizado el fracaso?

 
Creo que hay múltiples formas de seleccionar órdenes, todos los métodos de selección de órdenes deben utilizar la función OrderSelect(). Dicho esto, no veo por qué esto fallaría porque el EA realiza claramente la función OrderClose() para todas las órdenes sin error en el probador de estrategias. Es posible que se presenten errores, pero no he notado ninguno hasta ahora. Seré más específico diciendo lo siguiente: "La variable i" es un sustituto del número de entrada Y la variable i es utilizada por los bloques de la función OrderClose(). Ya ha pasado algún tiempo, pero creo que la razón por la que escribí el código tal y como lo hice fue porque empiezo el programa en el primer bloque de código OrderSend() SI el OrdersHistoryTotal() == 0. Necesitaba seleccionar un ticket que no fuera la variable i para que la función OrdersHistoryTotal() reconociera qué ticket estaba seleccionando para poder "dar luz verde" a enviar un pedido. Me resulta difícil expresarlo claramente con palabras. Gracias.
 
WhooDoo22:
Creo que hay múltiples formas de seleccionar órdenes, Todos los métodos de selección de órdenes deben utilizar la función OrderSelect(). Dicho esto, no veo por qué esto fallaría porque el EA realiza claramente la función OrderClose() para todas las órdenes sin error en el probador de estrategias.
¿Cómo se comporta en una cuenta Demo en la que se tienen números de entradas que no empiezan en 1 y suben de forma incremental?
 
No conozco las diferencias entre demo y live, salvo el concepto de fondos virtuales y reales para las cuentas. Desconozco esta diferencia. Actualmente creo que OrdersHistoryTotal() comienza en 0 antes de que cualquier orden sea presentada Y terminada. Creo que la función OrderClose() no se ejecutaría a menos que ;) hubiera una variable a seleccionar. Aquí es donde la variable i se presenta en el primer bloque de código en la ejecución por debajo de "i++". Una vez que la variable i es 1 aka i++, la función OrderClose() comprueba el 1. La función OrderClose() es como, "sí, ya veo i, estamos bien para cerrar esta orden ahora. Gracias.
 
WhooDoo22:
No conozco las diferencias entre demo y live, salvo el concepto de fondos virtuales y reales para las cuentas.
OK, me refiero a la diferencia entre el Probador de Estrategias y Demo/Live ... en el ST la primera orden es el ticket 1 ... acabo de colocar una operación Demo y mi número de ticket es 46322730 ... si coloco una segunda operación su número de ticket no será46322731 En esta situación ¿cómo funciona el incremento de la variable que está utilizando para el número de ticket?