aventuras de un novato - página 5

 

Hola Tim,

Ayer estuve despierto hasta las 2 de la mañana transformando el PSC en C (pseudocódigo en código). Empecé justo después de llegar a casa del trabajo.

Terminando el primer borrador me di cuenta de que i) nos faltaban algunas cosas, ii) tenemos que hacer que todo sea específico para el par.

Sólo para comprobar si estoy en la línea correcta, ¿podrías compartir algo de sabiduría sobre esto?

1. No podemos usar 3 ema's sin especificar el símbolo cuando declaramos cada iMA o el EA no funcionará correctamente. por lo tanto tenemos que declarar 15 ema's (5 símbolos con 3 Ma's por símbolo)?

2. Nos faltó la función CountOrders. Nuevamente, debido a los 5 pares. Necesitamos 10 funciones. ej: EUR_USD_BuyCount, EUR_USD_SellCount; etc. ?

3. Me di cuenta de que hay una manera eficiente de escribir el código, y una manera "novata". Voy a hacer la manera de novato y luego apreciaría si usted podría mostrarme cómo hacerlo eficiente.

4. Números mágicos. Yo aspiro a lo que usted está haciendo y por lo tanto me gustaría ejecutar múltiples EA's a la vez. He mirado en Magic Numbers, pero para la vida de mí no puede realmente entenderlo, ni siquiera de otro código. Podría dirigirme a algún lugar donde pueda aprender más sobre cómo asegurarse de que el ordenador diferencie entre los diferentes EA.

Gracias

Nick

 

Hola Nick

Lo siento, pero aquí me estás perdiendo. Parece que estamos poniendo el carro delante de los bueyes de nuevo y, en consecuencia, estamos retrocediendo. En mi publicación anterior sugerí que establecieras una estructura básica para tu programa utilizando el asistente de MetaTrader EA y el pseudo código que ya habíamos escrito. ¿Puedes volver a completar ese paso y publicar los resultados (el archivo mq4) en este foro para que yo lo vea? Entonces podemos pasar al siguiente paso. Usted ciertamente no necesita 15 ema's, 10 funciones o números mágicos para ese asunto tampoco y en el improbable caso de que tengamos problemas con los requisitos específicos del corredor podemos tratar con ellos si y cuando llegamos a ellos.


Probablemente puedo guiarte a través del proceso de escribir tu primer EA, pero sólo si estás dispuesto a hacerlo un paso a la vez y publicar los resultados en este foro cada vez para que yo los revise. De lo contrario, creo que este pequeño proyecto se descarrilará, perdiendo mi tiempo y el tuyo.

Dijiste - Voy a hacer el camino de novato y luego apreciaría si usted podría mostrarme cómo hacer que sea eficiente.

Nick, es un ejercicio frustrante y que consume mucho tiempo el tratar de arreglar el código malo de alguien. Por lo general, no vale la pena el esfuerzo.


Saludos

Tim

 

Hola Tim,

Siento haberte frustrado, te entendí mal. Dijiste que debía codificar ahora aunque no se ejecutara y entonces pensé que debía seguir adelante y codificarlo. Así que pasé un poco de tiempo codificando, tratando de aliviar el trabajo de usted - pero resultó ser al revés.

Pero no te preocupes, voy a publicar el PseudoCódigo en el marco de EA si eso es lo que quieres decir. Entonces podrías guiarme a través de cada bloque si no has perdido la paciencia para entonces :)

 

Hola Tim,


Adjunté el Pseudo Código en un Formato EA con paréntesis editándolo. Hazme saber si todavía no entendí lo que querías decir y lo cambiaré según sea necesario. Sólo las banderas y los filtros que declaré para ahorrarte tiempo. No toqué nada más. No creé nombres para las funciones porque todavía no entiendo lo que serán, como claramente entendiste de mi último mensaje. ¿Cuál es el siguiente paso a partir de aquí jefe?

Archivos adjuntos:
 
niko:

Hola Tim,


Adjunté el Pseudo Código en un Formato EA con paréntesis editándolo. Hazme saber si todavía no entendí lo que querías decir y lo cambiaré según sea necesario. Sólo las banderas y los filtros que declaré para ahorrarte tiempo. No toqué nada más. No creé nombres para las funciones porque todavía no entiendo lo que serán, como claramente entendiste de mi último mensaje. ¿Cuál es el siguiente paso a partir de aquí jefe?

Hola a todos. Me he impacientado - aunque estoy de acuerdo con la necesidad de un pseudocódigo, creo que os habéis pasado un poco (lo siento Tim).

Acabo de hacer esto. Sólo le he dedicado media hora, no he comprobado los errores, la sintaxis, etc., etc.

Pero si le das una vuelta, debería estar bastante cerca de lo que necesitas. Lo he dejado a propósito como un hueso pelado para que veas la estructura pero para que aún tengas trabajo que hacer. Como ejemplo, he dejado a propósito toda la comprobación de errores en la función fnTrade y un error en el manejo de TakeProfit.


CB


ACTUALIZACIÓN: Debido a la publicación posterior de Tim, he eliminado el EA que creé para ti y me retiraré y dejaré que Tim lo haga en su lugar.


TIM: Con referencia a tu post sobre la lógica de múltiples monedas, había estructurado ese EA para que fuera agnóstico a los símbolos, ya que eso era lo que Nick me dijo que quería mientras yo estaba trabajando con él antes de que llegaras para hacerte cargo.

 

Hola Nick. Cloudbreaker

Cloudbreaker, tomo nota de tu frustración por la lentitud del progreso. Pensé que el objetivo de este ejercicio era enseñar a Nick a programar con MT4. A juzgar por gran parte del código y las discusiones relacionadas con la codificación que he visto en este foro, me mantengo en mi afirmación de que un enfoque sistémico es la forma más fiable y a menudo la más rápida de producir un código de buena calidad.


Entiendo su punto de vista, sin embargo, que este es un proyecto bastante trivial y que cualquier programador competente podría hacer algo como esto muy rápidamente con un mínimo de formalidad. Voy a tratar de mover las cosas a lo largo de lo más rápido que pueda para minimizar la frustración a eveybody pero por favor, tenga en cuenta que el aprendizaje a menudo toma tiempo y es fácil para los que pueden hacer a frustrarse con los que están tratando de aprender.

Nick,

El código que has publicado no era exactamente lo que estaba buscando. He arreglado un poco las cosas y he hecho algunas notas para ti en el código con algunas cosas que debes hacer.

La siguiente tarea es proporcionar una manera de manejar los diferentes pares de divisas sin escribir procedimientos separados para cada par.


Una forma de hacerlo sería declarar los pares de divisas como un ARRAY de STRINGS en el área de declaración global.

Luego, en el bloque principal del programa - (función de inicio) Utilizar un bucle FOR para indexar a través de la matriz

Nick intenta programar este código y luego lo publica en el foro


También tenemos que empezar a pensar en el manejo de errores. pruebas y depuración. Una forma común de hacer esto en MetaTrader es utilizando los archivos de registro. He añadido algunas líneas en el EA para tratar de empezar.

Por favor, echa un vistazo y trata de entender lo que he hecho. Puede ejecutar el código y echar un vistazo al archivo de registro en una cuenta activa o en el probador de estrategias.


Saludos

Tim

Archivos adjuntos:
 

Hola chicos,

Gracias a los dos por vuestro apoyo en este viaje. Estoy de acuerdo en que un enfoque sistemático es esencial para un novato, pero igual de importante es profundizar en el código. Esos dos componentes se ayudan mutuamente a crecer y fomentan el proceso de aprendizaje. Esto es lo que he comprendido y por eso he dedicado tiempo a ambos. Cuanto mejor entienda uno el proceso de codificación, mejor será su pseudocódigo y el programa posterior.

Seguiré con este empeño, trabajando con ambos documentos en paralelo - creo que eso acelerará el proceso de aprendizaje como ninguna otra cosa, ya que tendré un punto de referencia específico.

El enfoque principal será transformar el pseudocódigo en el código, pero usaré el documento de CB para obtener ideas sobre cómo y qué partes añadir, así como usarlo en paralelo para aprender, por supuesto también con la guía de Tim a lo largo del camino.

Nick

 
niko:

Hola chicos,

Gracias a los dos por vuestro apoyo en este viaje. Estoy de acuerdo en que un enfoque sistemático es esencial para un novato, pero igual de importante es profundizar en el código. Esos dos componentes se ayudan mutuamente a crecer y fomentan el proceso de aprendizaje. Esto es lo que he comprendido y por eso he dedicado tiempo a ambos. Cuanto mejor entienda uno el proceso de codificación, mejor será su pseudocódigo y el programa posterior.

Seguiré con este empeño, trabajando con ambos documentos en paralelo - creo que eso acelerará el proceso de aprendizaje como ninguna otra cosa, ya que tendré un punto de referencia específico.

El enfoque principal será transformar el pseudocódigo en el código, pero usaré el documento de CB para obtener ideas sobre cómo y qué partes añadir, así como usarlo en paralelo para aprender, por supuesto también con la guía de Tim a lo largo del camino.

Nick

Hola Nick, ahora me retiro. Véase la modificación de mi mensaje anterior.


CB

 
cloudbreaker:

Hola Nick, ahora me retiro. Véase la modificación de mi mensaje anterior.


CB

Hola CB, pensé que lo harías, así que me apresuré a descargarlo. Como dije antes, todo lo que tenga que ver con la idea que tengo me sirve para aprender, tu código no me desanimará en mi aprendizaje ya que no lo copiaré en la plantilla de Tim, sino que trataré de entenderlo para ver cómo se pueden hacer las cosas de manera diferente :)


¡Cualquier cosa ayuda como dicen!

 
niko:

Hola CB, pensé que lo harías, así que me apresuré a descargarlo. Como dije antes, todo lo que tenga que ver con la idea que tengo me ayuda a aprender, tu código no va a desanimar mi aprendizaje ya que no lo voy a copiar en la plantilla de Tim, sino que voy a tratar de entenderlo para ver cómo se pueden hacer las cosas de manera diferente :)


¡Todo ayuda como dicen!

No te preocupes. Con sólo unas pocas modificaciones, debería hacer el trabajo para usted.

Usted debe comenzar por la modificación de la TakeProfit "error" que he construido para usted. Echa un vistazo a cómo se hace el StopLoss para una pista.

Una vez que lo tengas funcionando, espero que empieces a añadir el manejo de errores, y algunas cosas amigables para el operador como las declaraciones Print() para que puedas ver fácilmente en los registros lo que está haciendo.

El pseudocódigo es importante antes de comprometerse con el código (incluso para los programadores experimentados), pero no lo cocines demasiado.

Parece que atraes la ayuda debido a tu buena manera de ser. Supongo que trabajas en RRHH o te interesa la psicología humana.


CB

Razón de la queja: