Versión beta del libro en línea sobre la programación de MQL4 - por Sergey Kovalev (SK.) - página 9

 
Climber:
Encontré este gran artículo sobre la compleja contabilidad de pedidos de SK 'Order Bookings in a Large Program'.
Sinceramente, me pregunto si todo esto es una estafa.
No es un truco, pero hay que tener la mente abierta. Lee los posts de Korey que empiezan en esta página para más claridad. Y echa un vistazo a mi primer "grial".
 
Ya he leído sobre el grial:)
Pero a diferencia del personaje descrito en el artículo sobre el grial, yo no pienso como él: "¡Sólo yo!". Creo que hay algo que no funciona, o es sólo suerte en este momento. Aunque, mirando los resultados del campeonato, se puede ver un resultado mucho mejor en tres meses, lo que básicamente significa que nada es imposible. Sin embargo, no puedo evitar preguntarme quién dará un desarrollo tan "rápido" en el mundo real.
 
Climber:
Y, sin embargo, uno se pregunta quién permitirá un desarrollo tan "rápido" en el mundo real.

Es una pregunta sencilla. Y la respuesta es obvia: el que trabaja honestamente (aquí no se habla de los corredores).

La pregunta más difícil es si el Asesor Experto está produciendo resultados estables y elevados. ¿O se trata de una historia adecuada o de una casualidad?

 
SK. писал (а):
La cuestión más difícil es si el asesor es realmente coherente,
¿resultados elevados? ¿O es sólo un ajuste con la historia o una casualidad?
Bueno, todavía no tengo uno, pero si lo tuviera, creo que me ayudaría a entender mucho. También me inclino por el azar. Ese soy yo manualmente en la demo por ahora.

Sólo que antes he tenido resultados mucho más modestos. Y en general, mientras estudiaba su libro (durante casi un mes) y todo el lenguaje en general, he aprendido mucho sobre el comercio que no sabía y no sospechaba durante 2 años de estudio de Forex. Incluso ahora estoy pensando cómo podría ganar algo sin saber tanto)) Creo que incluso ahora podría ganar mucho sin saber nada. Es que cuando intenté operar por primera vez en la demo, me dio la sensación de que podría ganar no más de 300 dólares al mes. Lo cual tampoco está mal, sobre todo teniendo en cuenta mi alergia a los jefes de todo tipo:).

Escribí mi primer asesor a la semana de leer el libro. Pero yo no lo escribí, lo copié, sustituyendo sólo el bloque con los criterios de comercio, y el resto fue tomado del ejemplo de EA que utiliza MA. Pero cuando lo escribí, sólo quería saber qué pasaría si lo hiciera así. Me refiero a utilizar simplemente las capacidades del probador sin tener que comprobarlo manualmente durante mucho tiempo. No tenía ninguna idea como en el artículo sobre el grial. Soy más realista en este sentido:) Estoy satisfecho con el resultado, ya que he perdido completamente mi depósito (una variante menos). La idea era sencillísima, así que era un pecado no comprobarlo. Pero la última estrategia es más difícil (para mí) para describir utilizando las herramientas MQL4, por lo tanto tengo que usar mis propias manos. Pero sus resultados en modo manual requieren un mayor desarrollo del Asesor Experto. Así que estoy intentando, lenta pero lentamente, escribirlo.
 
Climber:
Sólo que antes tenía resultados mucho más modestos. Y en general, mientras estudiaba su libro (casi un mes) y todo el lenguaje en general, aprendí mucho sobre el trading que no sabía y no sospechaba durante mis 2 años de conocimiento del forex. Incluso ahora estoy pensando cómo podría ganar algo sin saber mucho).
Pero la última estrategia es más complicada (para mí) en términos de descripción por medio de MQL4, por lo que tengo que trabajar manualmente. Pero sus resultados en modo manual sólo necesitan un mayor desarrollo del Asesor Experto. Así que lo estoy intentando, lentamente, pero escribiendo.
En mi opinión, la inversión en trabajo para la creación de una estrategia rentable y sólida es aproximadamente dos órdenes (100 veces) mayor que la inversión en trabajo para aprender el idioma. En esencia, la programación no es más que una herramienta técnica, en gran medida predecible, y por tanto sujeta a la voluntad del creador de la estrategia. Pero para ser justos, también hay que decir que al entrar en los detalles de la programación, un operador comienza a ver todo el fenómeno de la estrategia de negociación en el mercado con una visión más clara. Por lo tanto, los desarrolladores que decidieron apostar por el comercio automático acertaron de pleno.
 

a SK

Variables, .

Tienes lo siguiente escrito:

"Todas las matrices son estáticas de forma inherente, es decir, tienen una forma estática, aunque no se especifique explícitamente durante la inicialización"

Sin embargo,

Supongamos que un indicador, la subrutina de llamada tiene un array:

1)

double summ[]; //se llama a la función estándar .................................... ..........

i=ArrayMinimum(summ,iter,0); // Error en la segunda llamada: <Posición inicial 0 para la función ArrayMinimum>

2) variante del error

static double summ[];

//..............................................

i=ArrayMinimum(summ,iter,0); // El mismo error en la segunda llamada: <Posición inicial 0 para la función ArrayMinimum>

3) variante sin errores

doble suma[1000];

..............................................

i=ArrayMinimum(summ,iter,0); // Ejecución normal

4) variante sin errores

static double summ[1000];

..............................................

i=ArrayMinimum(summ,iter,0); // Ejecución normal



De los ejemplos 1 y 2 se deduce que las matrices se asignan dinámicamente.

El ejemplo 2 sugiere que un array sin dimensión no se inicializa como un array estático (lo cual es obvio), pero esto no aparece en los errores del compilador ((

El ejemplo 3 4 implica que sólo las matrices predefinidas tienen asignación estática .

Curiosamente, el sistema de ejecución capta el Error y determina del Ejemplo 1 y 2, lo que indica un sistema de terminal en tiempo real bien pensado . Es decir, el array se comporta como un objeto. Enhorabuena a los desarrolladores.

Sin embargo, no todo va tan bien con las variables simples

double instik(int &t) // esta función cambia la variable en el programa de llamada

{

t++;

}

Esta llamada cuenta en cada tic si

//...........................................

static int tik;


instik(tik);

Imprimir (" tick=",tik);

//...............................

Y esto no cuenta porque la asignación de memoria es dinámica, y la dirección vinculada en la segunda llamada no coincide.

................

int tik;


instik(tik);

Imprimir (" tick=",tik);

¡¡¡¡// La subrutina instik da un incremento al byte desconocido, pero el terminal no se bloquea!!!! De nuevo, felicitaciones a los desarrolladores.

 
SK. писал (а):

Pero para ser justos
también hay que decir que al entrar en los detalles de la programación
un comerciante comienza a ver todo el fenómeno de la estrategia de mercado
con una visión más clara. Y a medida que van ganando experiencia, van tamizando
Y a medida que se acumula experiencia, se eliminan las líneas de pensamiento erróneas y se identifican las líneas de pensamiento prometedoras.
Estoy 100% de acuerdo. Incluso me sorprendió al principio, creo que estoy tratando de aprender a programar y he aprendido más sobre el comercio de lo que sabía antes. Así que voy a ganar experiencia por ahora:)
 
Korey:

a SK

Variables, variables estáticas.

...


Creo que estás pasando por alto el hecho de que las funciones especiales se vuelven a ejecutar en cada tic. Las variables estáticas conservan sus valores y no se inicializan, mientras que las no estáticas se inicializan según el código. En su código, la variable entera tik está inicializada a cero por defecto.

//----------------------------------------------------------------------------------
int start()
   {
   int tik;                // Инициализация нолём на каждом тике
   instik(tik);            // Вызов функции, передача параметра по ссылке
   Alert (" tick=",tik);   // Всё время выводит 1, как и ожидается
   return;
   }
//----------------------------------------------------------------------------------
double instik(int &t)      // Функция изменяет переменную в вызывающей программе
   {                       // При каждом обращении заходит 0
   t++;                    // Увеличение значения на 1, как и заказано, т.е.
   }                       // ..при каждом исполнении уходит 1
//----------------------------------------------------------------------------------

En instik() todo sucede como está previsto. En start(), en el momento de Alert(), el valor de la variable tik es 1, que es lo que da Alert().

Pero esta no es toda la verdad. Como la variable tik no está declarada como estática, su valor no se guarda. Es decir, en la siguiente llamada de ejecución de la función especial start() la variable tik se inicializará de nuevo con cero. Y todo vuelve a empezar. Por lo tanto, alerte con seguridad las salidas una tras otra.

 
¡Felicidades a Sergey Kovalev!

El lanzamiento del tutorial del lenguaje MQL4 está previsto para el 1 de febrero y ya está integrado en la página web MQL4.community. La traducción al inglés está muy avanzada.
 
¡Sergei!
¿Cómo implementar en el Asesor Experto la posibilidad de cerrar una orden - por contraorden? No lo encontré en el tutorial...