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

 
Mickey Moose:


Así es, por eso quiero sacarlo.

obtener el código fuente de este archivo es mucho más difícil que resolver este tipo de problema)

puedes hacer una cosa muy chula en general: un EA (o lo que tengas sin fuentes) enviará el correo a un gráfico cercano :-)

sólo en mi tiempo libre hizo http://luxtrade.tk/atcl:start (hilo del foro: https://www.mql5.com/ru/forum/224745)

y en los paquetes está el servidor SMTP(https://core.tcl.tk/tcllib/doc/tcllib-1-18/embedded/www/tcllib/files/modules/smtpd/smtpd.html)

En otras palabras, puede utilizar Eval("package require smtpd") en el indicador, y luego establecer la devolución de llamada para entregar y recibir el correo necesario a la vez, sin salir de MetaTrader, en el mismo proceso

ATcl
  • luxtrade.tk
Рад представить вам библиотеку ATcl v1 beta - интерпретатор Tcl для MT4. Расширяте возможности ваших программ MQL, используйте СУБД, дополняйте сетевыми средствами, интегрируйте их с любыми программами используя Tcl.
 
Maxim Kuznetsov:

puedes hacer una cosa divertida en general: un EA (o lo que tengas sin código fuente) enviará el correo a un gráfico vecino :-)

Acabo de hacer http://luxtrade.tk/atcl:start (hilo del foro: https://www.mql5.com/ru/forum/224745) en mi tiempo libre

y hay un servidor SMTP en los paquetes(https://core.tcl.tk/tcllib/doc/tcllib-1-18/embedded/www/tcllib/files/modules/smtpd/smtpd.html)

En otras palabras, puede utilizar Eval("package require smtpd") en un indicador, luego especificar el callback para entregar y recibir el correo necesario de una vez, sin salir de MetaTrader, en el mismo proceso

Intentaré solucionarlo y si es necesario, compartiré los resultados

 
Artyom Trishkin:

Este debería puntear todo el historial en la distancia en barras que establezcas en la configuración.

Gracias, pero estoy intentando averiguar el número de la barra donde está la flecha y sólo entonces compararlo con un 10 (por ejemplo) no puedo hacerlo sin un bucle anidado.

Necesito saber en el momento actual en qué barra está la flecha del indicador llamado.

Creo que no soy muy bueno para expresarme ). Con un ejemplo, creo, quedará más claro lo que quiero hacer

Por ejemplo, mediante una condición if(Open[i+1]>Cloce[i+1]) quiero poner Text en High[i+1] con el número de barra donde se encuentra la flecha
 
Mickey Moose:

Intentaré averiguarlo, y si lo hago podré compartir los resultados

Si tienes alguna duda, puedes preguntar en persona o contactar conmigo en mi perfil. Visito el sitio a menudo, pero no miro todo el foro - es difícil seguirlo y podría perderme una pregunta accidentalmente
 

¿Pueden decirme cómo implementar en MQL5 el cierre de todas las operaciones en todos los pares de divisas cuando alcancen una determinada ganancia para todas las operaciones, sin importar si son abiertas por este Asesor Experto o de cualquier otra manera?

Lo hice así, ¿es correcto?

   if(AccountInfoDouble(ACCOUNT_PROFIT)>profit_close_all)
         for(int i=0; i<OrdersTotal(); i++)
            trade.PositionClose(OrderGetTicket(i),40);
 

Artyom Trishkin, decidido. Los bucles anidados son efectivamente innecesarios. Gracias )

 
Roman Sharanov:

¿Pueden decirme cómo implementar en MQL5 el cierre de todas las operaciones en todos los pares de divisas cuando alcancen una determinada ganancia para todas las operaciones, sin importar si son abiertas por este Asesor Experto o de cualquier otra manera?

Lo hice así, ¿es correcto?

No, no lo es. En mql5, OrdersTotal() es el número de órdenes pendientes, y las activas se llaman posiciones. En consecuencia, el bucle debe ser construido por el número de posiciones, PositionsTotal()
 
Roman Sharanov:

Hice esto, ¿es correcto?

if(AccountInfoDouble(ACCOUNT_PROFIT)>profit_close_all)
         for(int i=PositionsTotal()-1; i>=0; i--)
            trade.PositionClose(PositionGetTicket(i),40);

Algo así.

Estás usando un bucle desde cero, mientras que necesitas ir de más a cero, porque estás cerrando órdenes justo en el bucle. Y la segunda, ya te han dicho que uses PositionsTotal().

 
Lo tengo, ¡gracias por la ayuda!
 
Roman Sharanov:
Entendido, ¡gracias por la ayuda!

Sólo no olvides cambiar OrderGetTicket() por PositionGetTicket() en la línea destacada.

Foro sobre comercio, sistemas de comercio automatizados y pruebas de estrategias

Cualquier pregunta para principiantes sobre MQL4, ayuda y discusión sobre algoritmos y códigos

Konstantin Nikitin, 2018.02.03 08:38

if(AccountInfoDouble(ACCOUNT_PROFIT)>profit_close_all)
         for(int i=PositionsTotal()-1; i>=0; i--)
            trade.PositionClose(OrderGetTicket(i),40);

Algo así.

Se utiliza el bucle de cero y viceversa, de más a cero, porque se cierran las órdenes justo en el bucle. Y la segunda, ya te han dicho que uses PositionsTotal().


Razón de la queja: