Cualquier pregunta de los recién llegados sobre MQL4 y MQL5, ayuda y discusión sobre algoritmos y códigos - página 1440

 
ANDREY:

Me alegro de haberte ayudado :=) :=) :=)

Ahora sobre mi código, que probablemente es tan malo que es desagradable hurgar en él. Pero díganme al menos cuál sería la ventaja de mi código, si hubiera escrito un único array (con valores de precios) de este código en un archivo y luego el programa lo leyera de este archivo y utilizara sus valores en cálculos posteriores, con un array de sólo 60 elementos. ¿Qué es exactamente lo que sería óptimo en mi código?
Gracias por su ayuda.

No se trata de la calidad del código. No miro el código de otras personas. Salvo el que necesito o en la agonía de un ataque de caridad, :=)) pero eso ocurre cada vez con menos frecuencia...

Si quieres, puedes describir con palabras lo que se necesita como resultado y lo que hiciste para ello. Entonces quedará claro en qué dirección va el problema.

 
Alexey Viktorov:

o en la agonía de un ataque de caridad, :=))) ....

He leído que las recaídas suelen producirse a principios de la primavera. Ojalá tu remisión terminara antes :=))).

Y ojalá tus ataques fueran tan frecuentes como los posibles..... :=)) :=)))

 
ANDREY:

Gracias por el consejo. Ya he empezado a leer la sección de OPERACIONES DE ARCHIVO del libro de texto de Kovalev. Efectivamente... algo empieza a estar claro. Tengo entendido que todos los EAs que prueban leen archivos de texto con los precios de las barras (aunque no son creados por mi programa) con extensión .cvv en el directorio del terminal Tester.
En otras palabras, la información (datos) de cualquier programa se escribe en el archivo y leer estos datos desde el archivo, también por cualquier programa. Me parece que los archivos almacenan una gran cantidad de datos que no es razonable almacenar en el programa. Algo así como un archivo mqh.
Si quieres explicarme lo que significa la frase de Alexey Victorov : "....¿Quieres escribir .csv y leer array....." del post con referencia a mi código del post
. Pensé que se refería al archivo de texto .cvv, con los precios de las barras del directorio del probador. Pero lo que quiere decir exactamente, todavía no lo entiendo. No soy yo quien escribe estos archivos .cvv, sino el programa del distribuidor Alpari... Cómo el programa lee de una matriz - en general entiendo un poco ... Accede a una celda de un array por su dirección, se mete dentro de la celda y accede al valor de la misma (es decir, la lee). ¿Cómo puede un programa leer dentro de una matriz en lugar de fuera de ella? Se trata de una contradicción irresoluble, ...., como me parece a mí, en mi opinión de lego. Creo, por alguna razón, que en un array sólo se pueden escribir algunos valores. Y sólo se puede leer de un array.

Escribir una matriz en binario no tiene Kovalev. El libro de texto es de 2009. Sólo había binfiles. Y el archivo array to bin apareció después. Los archivos de la papelera se escriben y leen más rápido. No tienen alimentación en línea. Pero no son legibles para los humanos).

 
Valeriy Yastremskiy:

Kovalev no tiene un registro de matriz bifilar. El libro de texto es de 2009. Allí sólo había binfiles. Y la matriz al archivo bin apareció después. Los archivos de la papelera se escriben y leen más rápido. No tienen alimentación en línea. Pero no son legibles para los humanos).

Muchas gracias por la información, que es nueva para mí. Y lo entiendo 50%.... Estudiaré este tema en detalle, si estoy seguro de que lo necesito en mi etapa actual de desarrollo.
Por el momento me he centrado en mi pequeño código , tratando de encontrar el precio mínimo entre 2 órdenes adyacentes abiertas en una vela de un minuto con 2 puntos de diferencia, utilizando un tiempo mínimo y otros recursos informáticos. Para ello he creado una matriz. Algunas personas intentan convencerme de que esta matriz debe escribirse en un archivo mediante una función y luego debe utilizarse otra función para obtener los datos del archivo (es decir, de la matriz) para los cálculos posteriores.

Pero ¿dónde estaría la ventaja si escribiera un único array (con valores de precios) de este código en un archivo, y luego el programa lo leyera de este archivo y utilizara sus valores en los cálculos posteriores? Y el array sólo contendría 60 elementos. ¿Qué sería lo óptimo en mi código, exactamente?

Naturalmente, en el transcurso de las pruebas, Habrá muchos pedidos de este tipo dentro de las velas de minutos, entre las que tendremos que calcular el mínimo, habrá muchos de ellos.. Mi código es sólo una ilustración de una idea que se me ocurrió.
Alexey Viktorov no puede responder a esta pregunta porque todavía no ha tenido un ataque de caridad .... y no ha tenido la agonía y las convulsiones en relación con ella :=).
Tal vez ya tenga todos los requisitos previos para ayudarme a avanzar.


Gracias por su ayuda.

 
ANDREY:

es difícil entender al creador del Grial. Es posible pasar todos los cálculos al Indicador y obtener una señal en el Asesor Experto.

 
ANDREY:

Muchas gracias por la información que es nueva para mí. Y entendí el 50% de ella.... Y si estoy seguro de que lo necesito en esta etapa de mi desarrollo, estudiaré este tema a fondo.
Por el momento me he centrado en mi código , tratando de encontrar el precio mínimo entre 2 órdenes adyacentes abiertas en una vela de un minuto con 2 puntos de diferencia, utilizando un tiempo mínimo y otros recursos informáticos. Para ello he creado un array. Algunas personas intentan convencerme de que esta matriz debe escribirse en un archivo mediante una función y luego debe utilizarse otra función para obtener los datos del archivo (es decir, de la matriz) para los cálculos posteriores.

Pero ¿dónde estaría la ventaja si escribiera un único array (con valores de precios) de este código en un archivo, y luego el programa lo leyera de este archivo y utilizara sus valores en los cálculos posteriores? Y el array sólo contendría 60 elementos. ¿Qué sería lo óptimo en mi código, exactamente?

Naturalmente, durante las pruebas, Habrá muchos pedidos de este tipo en el interior de las velas de los minutos entre las que tendremos que calcular el mínimo, habrá muchos de ellos.. Mi código es sólo una ilustración de una idea que se me ocurrió.
Alexei Viktorov no puede responder a esta pregunta, porque aún no ha sufrido un ataque benéfico .... y no ha tenido la agonía y las convulsiones en relación con ella :=).
Tal vez ya tenga todos los requisitos previos para ayudarme a avanzar.


Gracias por su ayuda.

No entiendo la lógica ni un poco. ¿Por qué necesitas escribir un par de datos en un array? Puedes escribirlos en variables. Un array es cuando hay muchas variables del mismo tipo. Y si son menos de 5, puedes almacenarlos en variables. ¿Por qué los datos almacenados en la matriz deben escribirse en un archivo que pueda leerse posteriormente en el mismo Asesor Experto? De todos modos, están disponibles. Se escriben en el archivo para el intercambio entre diferentes Asesores Expertos o para su posterior procesamiento, no en este EA. Además, el array es siempre global, si no me equivoco.

 
ANDREY:

Muchas gracias por la información que es nueva para mí. Y entendí el 50% de ella.... Y si estoy seguro de que lo necesito en esta etapa de mi desarrollo, estudiaré este tema a fondo.
Por el momento me he centrado en mi código , tratando de encontrar el precio mínimo entre 2 órdenes adyacentes abiertas en una vela de un minuto con 2 puntos de diferencia, utilizando un tiempo mínimo y otros recursos informáticos. Para ello he creado un array. Algunas personas intentan convencerme de que esta matriz debe escribirse en un archivo mediante una función y luego debe utilizarse otra función para obtener los datos del archivo (es decir, de la matriz) para los cálculos posteriores.

Pero ¿dónde estaría la ventaja si escribiera un único array (con valores de precios) de este código en un archivo, y luego el programa lo leyera de este archivo y utilizara sus valores en los cálculos posteriores? Y el array sólo contendría 60 elementos. ¿Qué sería lo óptimo en mi código, exactamente?

Naturalmente, durante las pruebas, Habrá muchos pedidos de este tipo dentro de las velas de los minutos entre las que tendremos que calcular el mínimo, habrá muchos de ellos.. Mi código es sólo una ilustración de una idea que se me ocurrió.
Alexei Viktorov no puede responder a esta pregunta, porque aún no ha sufrido un ataque benéfico .... y no ha tenido la agonía y las convulsiones en relación con ella :=).
Tal vez ya tenga todos los requisitos previos para ayudarme a avanzar.


Gracias por la ayuda.

El comienzo es tan lejano, que es difícil responder con detalles... Pero intentaré ser inteligente de todos modos...

Si no recuerdo mal, hay que determinar cuándo se formó el mínimo en la vela en la que se abrió la orden. Cuando esta vela es actual, no hay problema: ponemos el menor de los dos números en la variable y hacemos esto hasta que la vela se cierre. Pero si tenemos que determinarlo cuando esta vela ya es la 10ª, entonces ya es un problema para mql4. Es muy fácil hacerlo en mql5, sólo tienes que copiar "desde y hasta" los ticks de tiempo seleccionados, y el array contendrá todo lo que necesitas. Pero en el caso de mql4, se ha sugerido escribir los ticks en un archivo, de manera que más tarde se puedan obtener estos ticks y utilizar esta matriz para determinar si el Low de esa vela es menor que el valor mínimo de la matriz, significa que el Low fue antes de que se abriera la orden. Si son iguales, significa que la baja se formó después de la apertura de la orden.

Sin embargo... si el EA funciona, basta con determinarlo en una variable, tal y como se describe aquí; existe una función para ello que puede consultar en la documentación en la sección de Funciones Matemáticas; si el EA no funciona por alguna razón, no registrará los ticks y ni siquiera los obtendrá.

 
Alexey Viktorov:

El comienzo está tan lejos que es difícil responder con detalle... Pero intentaré ser inteligente...

Si no recuerdo mal, hay que determinar cuándo se formó la baja de la vela en la que se abrió la orden. Cuando esta vela es actual, no hay problema: ponemos el menor de los dos números en la variable y hacemos esto hasta que la vela se cierre. Pero si necesitamos determinarlo cuando esta vela ya es la 10ª, entonces ya es un problema para mql4. Es muy fácil hacerlo en mql5, sólo tienes que copiar "desde y hasta" los ticks de tiempo seleccionados, y el array contendrá todo lo que necesitas. Pero en el caso de mql4, se ha sugerido escribir los ticks en un archivo, de manera que más tarde se puedan obtener estos ticks y utilizar esta matriz para determinar si el Low de esa vela es menor que el valor mínimo de la matriz, significa que el Low fue antes de que se abriera la orden. Si son iguales, significa que la baja se formó después de la apertura de la orden.

Sin embargo... si el EA funciona, basta con almacenarlo en una variable, tal y como se describe aquí, existe una función para ello que puedes consultar en la documentación en la sección Funciones Matemáticas.

Muchas gracias por la nueva información para me.... especialmente sobre las capacidades de mql4 en comparación con mql5 en este caso. Sin embargo, por extraño que parezca, la tarea que describes, la he resuelto yo mismo y la forma de resolverla me sorprendió por su originalidad y optimismo.
Después de eso me enfrenté a otro problema
similar me dijeron que escribiera los ticks en un archivo,

En lugar de escribir los ticks en un archivo, he creado un código, que resuelve mi tarea sin escribir los ticks en un archivoUsando este código, intento encontrar el precio mínimo entre 2 órdenes adyacentes abiertas en una vela de un minuto con 2 puntos de diferencia usando elmenor tiempo y otros recursos del ordenador. Por supuesto, habrá muchas órdenes de este tipodentro de las velas de un minuto entre las que tendremos que calcular el mínimo. Esto es sólo una ilustración de mi idea.

Y ahora me interesa la respuesta a la pregunta ¿Cuál sería la ventaja de mi código si hubiera escrito los ticks en un archivo, como me aconsejaste?¿Qué sería exactamente lo óptimo en mi código?


Sobre esta cuestión arrojó luz Valeriy Yastremskiy Pero me gustaría escuchar la opinión de alguien que me aconsejó poner ticks en un archivo.
Gracias por la ayuda.

 
Valeriy Yastremskiy:

La lógica es un poco confusa. Por qué escribir pares de datos en un array. puedes escribirlos en variables. Un array es cuando hay muchas variables del mismo tipo. Y si son menos de 5, puedes almacenarlos en variables. ¿Por qué los datos almacenados en la matriz deben escribirse en un archivo que pueda leerse posteriormente en el mismo Asesor Experto? De todos modos, están disponibles. Se escriben en el archivo para el intercambio entre diferentes Asesores Expertos o para su posterior procesamiento, no en este EA. Además, el array es siempre global, si no me equivoco.

Gracias por el consejo. Estoy de acuerdo, a veces puede haber 5 o menos garrapatas. Pero en una vela de un minuto puede haber muchos más ticks que segundos y su número entre órdenes adyacentes también puede ser mucho más de 5.
Me gustó especialmente que mis pensamientos coincidieran con el rojo resaltado. Pero no estaba seguro de ellos, ya que los compañeros más experimentados reforzaban mi incertidumbre.

 
ANDREY:

Muchas gracias por la nueva información para me.... especialmente sobre las capacidades de mql4 en comparación con mql5 en este caso. Sin embargo, por extraño que parezca, yo mismo he resuelto el problema descrito anteriormente y me ha sorprendido su originalidad y optimismo .
Luego me enfrenté a otro problema similar formulado en este post.

cada tick. También sé cómo hacerlo con un ciclo en el momento de X+2. Y cómo hacerlo de una vez en el momento de X+2 como en el caso de iLow yiLowest.
Te agradecería mucho que me enseñaras a hacerlo.
Gracias


Me han aconsejado que registre las garrapatas en un archivo

Foro sobre trading, sistemas de trading automatizados y prueba de estrategias de trading.

Cualquier pregunta de los novatos sobre MQL4 y MQL5, ayuda y discusión de algoritmos y códigos

Alexey Viktorov, 2021.04.09 18:33

Puedes hacerlo. Deberá escribir en su archivo .bin utilizando la función

uint  FileWriteArray( 
   int          file_handle,         // handle файла 
   const void&  array[],             // массив 
   int          start=0,             // начальный индекс в массиве 
   int          count=WHOLE_ARRAY    // количество элементов 
   );

y leer

uint  FileReadArray( 
   int    file_handle,               // handle файла 
   void&  array[],                   // массив для записи 
   int    start=0,                   // стартовая позиция для записи в массив 
   int    count=WHOLE_ARRAY          // сколько читать 
   );

He creado un código que resuelve mi problema sin escribir los ticks en un archivo en lugar de escribirlos en un archivo

escribirla en un archivo? Como en mi código. Este no es un código de trabajo, sino para ilustrar mi idea de cómo encontrar el mínimo entre dos órdenes adyacentes abiertas en una vela minuto
Gracias por la ayuda.

double P[60],Z;
int Tick,x,x1,G,G1,G2,T;

void OnTick()
{
Tick++;

if (OrdersTotal()==1&&Tick<2189)
{
P[x]=Bid;
Print("------------------------P[x]=Bid------------------------=", DoubleToString(P[x],5), "  x ",  x);
x++;
}
if (OrdersTotal()==2&&Tick==2189)
{
x1=x;
x=0;
ArraySort(P,WHOLE_ARRAY,0,MODE_ASCEND);
T=(60-x1);
Print("------------------------МИНИМУМ=------------------------=",DoubleToString(P[T],5), "  Tick ",  Tick, "  x1 ",  x);
}

if (Tick==2176||Tick==2188)
{
OrderSend(Symbol(),OP_SELL,0.1,Bid, 3,Ask+300*Point,Ask-100*Point,"300",0);
G2=G;
G=Tick;
}
}

Significa que escribí los precios de cada tick directamente en un array, no en un archivo.


Coneste código, intento encontrar el precio mínimo entre dos órdenes adyacentes abiertas en una vela de un minuto con una diferencia de 2 puntosutilizando el menor tiempo y otros recursos informáticos. Por supuesto, habrá muchas órdenes de este tipodentro de las velas de un minuto entre las que tendremos que calcular el mínimo. Esto es sólo una ilustración de mi idea.

Y ahora me interesa la respuesta a la pregunta ¿Cuál sería la ventaja de mi código si hubiera escrito los ticks en un archivo, como me aconsejaste?¿Qué sería exactamente lo óptimo en mi código?


Sobre esta cuestión arrojó luz Valeriy Yastremskiy Pero me gustaría escuchar la opinión de alguien que me aconsejó poner ticks en un archivo.
Gracias por la ayuda.

Para no forzar el intento de ayuda, en particular a mí, es mejor poner el mensaje "en el bolsillo" y pegarlo en lugar de enlazarlo.

Ahora sobre este problema: La orden #1 se ha abierto... en este punto el Low es por supuesto más bajo que el precio de apertura de la orden. Bueno, seamos sinceros...

Se abre la orden número 2 y debemos controlar el precio en........., utilizando la función matemática fmin() volvemos a escribir en la variable el valor anterior al cierre de la vela. Una vez que se cierra la vela, dejamos de controlar el precio, ya no lo necesitamos. El valor obtenido será el precio mínimo en el intervalo de tiempo entre la apertura de la segunda orden y el cierre de la vela. O tal vez me he equivocado...