Dificultades de traducción :)

 

Quiero contarles cómo convertí mi proyecto de MQL4 a 5 en una noche. No estoy presumiendo, sólo quiero contar mi práctica y resultó ser muy sencilla).

Así que, ayer por la tarde cansado, se acostó durante media hora, y se despertó a la una y media de la madrugada. Creo que he roncado, qué hacer ahora, nunca conseguiré dormir.

He estado pensando en cambiar mi proyecto de scalper de MT4 a MT5 con cobertura, he estado usando hedging-demo del sitio del robot durante mucho tiempo pero no tenía tiempo para usarlo realmente. El objetivo principal es hacer pruebas con garrapatas de robots reales. También quiero ejecutar el optimizador en la nube, la velocidad allí es realmente buena.

Ahora ejecuto el modelo en Matlab, pero es una versión simplificada y cada vez es más difícil sincronizar los cambios del código y del modelo. Digamos que el modelo va constantemente por detrás del código MQL4 real.

********** Proceso de migración *****

Así, mi proyecto consiste en un archivo .mq4 y un montón de clases en .mqh. He pasado todo al 5, he cambiado el nombre de .mq4 a .mq5, he dejado las clases como están. Comenzó a compilar, 100500 errores por supuesto. De acuerdo, no nos asustan los problemas y miramos los errores. La mayor parte de ellos están relacionados con MarketInfo, se dan en casi todas partes. Ok, soy un gatito perezoso, no se me permite limpiarlo a mano )) Ya tengo un proyecto MQL4/5 en Visual Studio.

Por cierto, he visto mi antiguo vídeo de 2011 cuidadosamente conservado en YouTube. He aprendido a configurar 2010 studio para que acepte los archivos MQL como archivos plus. Nada ha cambiado, ya puedes utilizarlo.

El video de 2011, podría jurar en MQL4, la situación es diferente ahora, el lenguaje es normal )) Me da pereza releerlo, pero puede que se cuele algún eco del pasado.

https://www.youtube.com/watch?v=oQs4qqwhqzg

Así que he subido todo a studio, lo bueno es que la búsqueda y el reemplazo se puede hacer de una vez en todo el proyecto y no por un archivo a la vez. He sustituido todos los MarketInfo por análogos de MQL5. Después de un par de correcciones menores, todos los errores, como se esperaba, se han mantenido en la clase COrderManager. Esta es mi clase que gestiona los pedidos, construye y modifica las rejillas y otras cosas.

Debo haber tardado unas 3 horas en rediseñarlo. Usé la clase CTrade Standard Library, pero tuve que dar a luz a un bebé de ella, porque faltaban algunas características.

------------------------

Conclusión. Todo este lamento sobre lo difícil que es para un pobre programador pasar al 5 es una mierda. Durante la transición cociné una gran patata con carne, fui a dar un paseo nocturno, me gusta caminar por la noche, vi un poco de cine con Bruce W., e hice algunas mejoras en los lugares a los que no podía llegar. Ahora es posible hacer un reinicio, hace poco me recordaron una vieja promesa, y el otro día volvió a surgir el tema.

Sí, la clase COrderManager ha perdido mucho peso utilizando la Biblioteca Estándar

Настройка Visual Studio 2010 для редактирования MQL файлов
Настройка Visual Studio 2010 для редактирования MQL файлов
  • 2011.07.01
  • www.youtube.com
Как известно, редактор Metatrader 4 далек от совершенства. Часто удобно редактировать большие проекты в VS2010. На этом видео я показываю процесс настройки.
 
Andrey F. Zelinsky:

¿Cómo se entiende "mejoró esos lugares" después de "fue a dar un paseo nocturno"?

¿Saliste a pasear por la noche o fuiste de paseo?

Hace mucho tiempo que no tengo que sentarme en una oficina, suelo salir a pasear por la noche ) He mejorado algunos lugares del proyecto que quería cambiar hace tiempo, pero me daba pereza hacerlo. Me he preparado para tal evento, la conversión y rehacer muchas cosas.

Andrey, "ir de paseo" y "beber" son dos cosas diferentes )).

 

Alexei, una pregunta para ti:

¿Cuánto tiempo y dificultad entraña la traducción de proyectos escritos en estilo procedimental? ¿Por qué el procedimiento? - Estoy acostumbrado, tengo una plantilla para todas las ocasiones, escribo 3-5 líneas para las condiciones en ella, y cualquier búho está listo en media hora con toda la depuración

Siguiente:

¿Es posible reescribir la función de apertura de la posición para aplicarla de la misma manera que en quad, sólo se acostumbró a sus nombres y el uso de los años, y no es necesario conectar ninguna biblioteca.

Y un bloque de condiciones para abrir y crear un gráfico:

Muchos más gráficos, escribió una vez en cinco, por lo que hay algo hecho a través de .opa tiempo y el precio de la selección del primer punto y el segundo. En la cuarta, ObjectSetInteger(0,nm,OBJPROP_TIME1, t1) y ObjectSetInteger(0,nm,OBJPROP_TIME2, t2), pero en la quinta, tal construcción no funciona(

¡Gracias de antemano por la respuesta!

 
Alexey Volchanskiy:

...

Conclusión. Todo este lamento sobre lo difícil que es para un pobre programador cambiar a un A es una mierda. ...

No confundas el regalo de Dios con un huevo. Si un EA trabaja con múltiples órdenes y se traduce en una compensación, esto es una tarea irreal.
 

Creo que es más fácil no portar el código. Es más fácil escribir desde cero. De este modo, será de mayor calidad.

 
Dmitry Fedoseev:
No confundas el regalo de Dios con el huevo. Si un EA está trabajando con múltiples órdenes y pasando a la red, es una tarea poco realista.

Por supuesto, escribí en el primer post"Hace tiempo que quiero trasladar mi proyecto descalper de MT4 a MT5 con cobertura, ya he empezado a cubrir demos de Robo, pero no he tenido tiempo. "Debes haber pasado por alto estos detalles.

Por eso no me cambié a MT5 mientras sólo había netting. Ahora, con el seto, me estoy arrastrando lentamente.

El post trataba sobre el aspecto puramente técnico de la transición.

 
Anton Zverev:

Creo que es más fácil no portar el código. Es más fácil escribir desde cero. Así será de mayor calidad.

¿Por qué? Los lenguajes son los mismos, las funciones para acceder a las series de tiempo son diferentes, algunas otras, esto se soluciona en VS sustituyendo en todo el proyecto, como escribí. Es rápido y sin complicaciones. Algunas dificultades con la parte de comercio, tuve que introducir el manejo de posiciones en la clase además del procesamiento de órdenes. Pero en principio tampoco es un gran problema.

Una vez más, por si acaso, me refiero a la cobertura.

 
Vitaly Muzichenko:

Alexei, una pregunta para ti:

¿Cuánto tiempo y dificultad entraña la traducción de proyectos escritos en estilo procedimental? ¿Por qué el procedimiento? - Estoy acostumbrado, tengo una plantilla para todas las ocasiones, escribo 3-5 líneas para las condiciones en ella, y cualquier búho está listo en media hora con toda la depuración

Siguiente:

¿Es posible reescribir la función de apertura de la posición para aplicarla de la misma manera que en quad, sólo se acostumbró a sus nombres y el uso de los años, y no es necesario conectar ninguna biblioteca.

Y un bloque de condiciones para abrir y crear un gráfico:

Muchos más gráficos, escribí una vez en cinco, por lo que algo se hizo a través de la .opa allí, el tiempo y el precio de la selección del primer punto y el segundo. En la cuarta, ObjectSetInteger(0,nm,OBJPROP_TIME1, t1) y ObjectSetInteger(0,nm,OBJPROP_TIME2, t2), pero en la quinta, tal construcción no funciona(

¡Gracias de antemano por la respuesta!

Vitaly, puedes dejar todo en estilo procedimental, nadie te obliga a usar OOP. La Librería Estándar está clara para mí, he creado mi propia clase a partir de ella, he aumentado algunas cosas. Y he hecho todo en OOP.

Responderé en orden inverso ))

1. Volví a hacer el guión con gráficos, hay algunas diferencias, pero muy leves. Básicamente, tengo que especificar la ventana y la subventana explícitamente, no era necesario en el 4.

2. En cuanto a la apertura de posiciones, si se utiliza la clase CTrade, ésta tiene análogos casi directos de las funciones MQL4

3. Creo que no tardará mucho.

Si te refieres a trabajar por cuenta propia, puedes acostumbrarte a ello muy rápidamente. Básicamente hay que acostumbrarse a que las órdenes, las operaciones y las posiciones son cosas diferentes, también en las coberturas.

 
Anton Zverev:

Creo que es más fácil no portar el código. Es más fácil escribir desde cero. Así será de mayor calidad.

A veces es útil dejar el trabajo, la esposa y la vida plena y empezar de cero. Lo he hecho muchas veces. Todo resulta mejor y de mayor calidad).
 
Alexey Volchanskiy:
A veces puede ser útil dejar tu trabajo, tu mujer, tu vida de satisfacción y empezar de cero. Lo he hecho muchas veces. Cada vez es mejor )))
))
 
Me van a saltar encima ahora - puedo sentirlo. Debes escribir en estilo OOP y serás feliz.
Y entonces un movimiento como este será un paseo nocturno fácil.