Asesores Expertos: Programación en MQL5 para tráders: códigos fuente del libro: Parte 7 - página 4

 
wf2000cn #:

Hola @Stanislav Korotky, soy nuevo en el MQL5. Encontré que usted publica un archivo wss.zip para el uso de websocket. ¿Cómo usarlo, ¿hay una demo o algo que pueda aprender. ¡Gracias sinceramente!

Puedes encontrar varios ejemplos en el libro de algotrading, en la sección que describe (paso a paso) la implementación de un proyecto de servicio web para copiar operaciones y señales.

MQL5 Book: Advanced language tools / Projects / Project plan of a web service for copying trades and signals
MQL5 Book: Advanced language tools / Projects / Project plan of a web service for copying trades and signals
  • www.mql5.com
As an end-to-end demonstration project, which we will develop throughout this chapter, we will take a simple, but at the same time quite...
 
Stanislav Korotky #:

Puede encontrar varios ejemplos en el libro de algotrading, en la sección que describe (paso a paso) la implementación de un proyecto de servicio web para copiar operaciones y señales.

Ok,i lo aprenderé primero. Muchas gracias.
 

Hola @StanislavKorotky

Estoy tratando de implementar un cierre de posición parcial con una orden pendiente en la dirección opuesta.

eg:

  • si tengo una posición abierta de compra en XAUUSD con 2 lotes de tamaño
  • abro una orden pendiente de venta en XAUUSD con 1 tamaño de lote
  • dentro del evento OnTradeTransaction -> TRADE_TRANSACTION_DEAL_ADD (transaction.type) , tengo

MqlTradeRequestSync reqs(símbolo.transacción);

reqs.closeby(target_position_ticket_id, transaction.order);

Creo que la línea anterior debe ser capaz de hacer el trabajo, pero mi reto es cómo conseguir el `target_position_ticket_id`dentro de la OnTradeTransaction -> TRADE_TRANSACTION_DEAL_ADD ( transaction.type) controlador de eventos o de alguna manera asociar la orden pendiente con el target_position_ticket_id se espera que se cierre cada vez que la orden pendiente se llena.

He intentado añadir el `target_position_ticket_id`al comentario de la orden pendiente cuando estoy creando la orden pendiente pero el problema es que dentro del evento OnTradeTransaction -> TRADE_TRANSACTION_DEAL_ADD (transaction.type) no puedo acceder al comentario ya que
los atributosMqlTradeTransaction no tienen 'comment'

Por favor agradeceré su ayuda.

 
pauldic MqlTradeTransaction no tienen 'comment'.

El método closeby(ticket1, ticket2) del libro supone que utilizas una cuenta de cobertura y ya tienes 2 posiciones abiertas (compra y venta) con los tickets ticket1 y ticket2. Supongo que es imposible (en general) realizar la acción TRADE_ACTION_CLOSE_BY contra una orden pendiente. Pero si su cuenta está en modo de compensación, creo que usted puede simplemente colocar una orden pendiente en la dirección opuesta y cuando se activa, se modificará la posición existente en consecuencia - que es cerrarla, o hace cierre parcial, o incluso invertir (si el nuevo volumen es mayor que el anterior).

 
Pequeños parches en websockets (a la carta y en masa).
Archivos adjuntos:
wsprotocol.mqh  17 kb
wss.zip  16 kb
 
Stanislav Korotky #:
Pequeños parches en websockets (a la carta y en masa).
@StanislavKorotky Gracias por la actualización continua, por favor hay algo que he estado luchando para averiguar. En el "Market Watch" de MT5 puedo hacer click derecho en cualquier "Symbol" y ver todas sus propiedades asociadas tal y como lo haría programáticamente haciendo click en "Specification".

Una de estas propiedades son las "Comisiones" del Symbol que obviamente difieren de los brokers como se puede ver en la imagen adjunta. Sin embargo, no he podido acceder a esta propiedad de forma programática. Por favor, ¿pueden ayudarme con una pista de cómo obtener la comisión del símbolo?


Por otro lado, este mensaje aparece a menudo en el log cada vez que trabajo con PositionFilter, especialmente cuando el EA se carga por primera vez o se recompila: "Unresolved int value as enum: 8 for MonitorInterface<ENUM_POSITION_PROPERTY_INTEGER,ENUM_POSITION_PROPERTY_DOUBLE,ENUM_POSITION_PROPERTY_STRING>". Sigue funcionando bien y no para nada
Archivos adjuntos:
 
pauldic #:
@StanislavKorotky Gracias por la actualización continua, por favor hay algo que he estado luchando para averiguar. En el "Market Watch" de MT5 puedo hacer click derecho en cualquier "Symbol" y ver todas sus propiedades asociadas tal como lo haría programáticamente haciendo click en "Specification".

Una de estas propiedades son las "Comisiones" del Symbol que obviamente difiere de los brokers como se puede ver en la imagen adjunta. Sin embargo, no he podido acceder a esta propiedad de forma programática. Por favor, ¿podrían ayudarme con alguna pista sobre cómo obtener la comisión del símbolo?

Lamentablemente, no todas las propiedades de las entidades del terminal son accesibles vía MQL5.

pauldic #:
Por otro lado este mensaje aparece a menudo en el log cuando estoy trabajando con PositionFilter especialmente cuando el EA se carga por primera vez o se recompila "Unresolved int value as enum: 8 for MonitorInterface<ENUM_POSITION_PROPERTY_INTEGER,ENUM_POSITION_PROPERTY_DOUBLE,ENUM_POSITION_PROPERTY_STRING>". Sigue funcionando bien y no detiene nada

Esto es sólo una advertencia causada por el hecho de que la correspondiente enumeración incorporada de MQL5 tiene un hueco en las constantes que normalmente se asignan consecutivamente. Este hueco se produce porque MQL5 cambia constantemente, y algunas constantes pueden quedar obsoletas y ser eliminadas. Puedes editar el código fuente para evitar estas advertencias.

 

Adjunto una versión actualizada de la librería JSON - toyjson3.mqh - un reemplazo para toyjson2.mqh y toyjson.mqh del libro.

Esta versión está optimizada para procesar archivos json enormes. En aras de la simplicidad, las versiones anteriores utilizan la función StringSplit para la tokenización del texto durante el análisis sintáctico, y esta llamada puede solicitar internamente gigabytes de memoria libre debido a la fragmentación y anticipación del flujo de datos posterior. Se libera después del parseo, pero el gestor de memoria MQL5 puede mantenerla reservada durante un tiempo, ya que libera la basura de forma pospuesta.

Ahora se necesita veces menos memoria durante el análisis.

Archivos adjuntos:
toyjson3.mqh  39 kb
 
Aquí hay otra corrección de errores menores en ToyJson3.mqh - los números de coma flotante con exponente (notación científica, como "1e-8") ahora se detectan correctamente durante el análisis.
Archivos adjuntos:
toyjson3.mqh  39 kb
 
Stanislav Korotky #:
Adjunto algunas correcciones de errores y mejoras en las clases websockets.

Esto es exactamente lo que necesitaba.

Muchas gracias.

Te siento como este tipo para mí.

https://clip.cafe/top-gun-maverick-2022/good-afternoon-ladies-gentlemen-s2/

Watch 'Good afternoon, ladies and gentleman, this is your savior speaking. Please fasten your...' | Top Gun: Maverick Clip
Watch 'Good afternoon, ladies and gentleman, this is your savior speaking. Please fasten your...' | Top Gun: Maverick Clip
  • clip.cafe
Watch the clip 'Good afternoon, ladies and gentleman, this is your savior speaking. Please fasten your...' from the movie Top Gun: Maverick on Clip.Cafe. Lt. Jake 'Hangman' Seresin: [after destroying the plane that almost killed Maverick and Rooster] Good afternoon, ladies and gentleman, this is your savior speaking. Please fasten your seat belts, return the tray tables to their locked an upright positions and prepare for landing. Bradley 'Rooster' ...