Sistemi Esperti: MQL5 Programming for Traders – Source Codes from the Book. Parte 7 - pagina 4

 
wf2000cn #:

Ciao @Stanislav Korotky, sono nuovo di MQL5. Ho scoperto che hai pubblicato un file wss.zip per l'uso di websocket. Come si usa, c'è una demo o qualcosa che posso imparare. Grazie di cuore!

Puoi trovare diversi esempi nel libro sull'algotrading, nella sezione che descrive (passo dopo passo) l'implementazione di un progetto di servizio web per la copia di operazioni e segnali.

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 #:

Potete trovare diversi esempi nel libro sull'algotrading, nella sezione che descrive (passo dopo passo) l'implementazione di un progetto di servizio web per la copia di operazioni e segnali.

Ok, lo imparerò prima. Grazie di cuore!
 

Ciao @StanislavKorotky

Sto cercando di implementare una chiusura parziale della posizione con un ordine pendente nella direzione opposta.

es:

  • se ho una posizione Buy aperta su XAUUSD con 2 lotti di dimensione
  • apro un ordine pendente Sell su XAUUSD con una dimensione di un lotto
  • nell'evento OnTradeTransaction -> TRADE_TRANSACTION_DEAL_ADD (transaction.type) , ho

MqlTradeRequestSync reqs(transaction.symbol);

reqs.closeby(target_position_ticket_id, transaction.order);

Credo che la linea di cui sopra dovrebbe essere in grado di svolgere il lavoro, ma la mia sfida è come ottenere il `target_position_ticket_id`all'interno del gestore dell'evento OnTradeTransaction -> TRADE_TRANSACTION_DEAL_ADD ( transaction.type) o in qualche modo associare l'ordine pendente con il target_position_ticket_id che si prevede di chiudere ogni volta che l'ordine pendente viene eseguito.

Ho provato ad aggiungere il `target_position_ticket_id`al commento dell'ordine pendente quando creo l'ordine pendente, ma il problema è che all'interno di OnTradeTransaction -> TRADE_TRANSACTION_DEAL_ADD (transaction.type) non posso accedere al commento poiché
gli attributi diMqlTradeTransaction non hanno 'comment'

Vi ringrazio per l'aiuto.

 
pauldic MqlTradeTransaction non hanno 'comment'.

Il metodo closeby(ticket1, ticket2) del libro presuppone che si utilizzi un conto di copertura e che si abbiano già 2 posizioni aperte (acquisto e vendita) con i ticket ticket1 e ticket2. Suppongo che sia impossibile (in generale) eseguire un'azione TRADE_ACTION_CLOSE_BY contro un ordine pendente. Ma se il conto è in modalità netting, penso che si possa semplicemente piazzare un ordine pendente in direzione opposta e quando scatta, modificherà la posizione esistente di conseguenza - cioè la chiuderà, o la chiuderà parzialmente, o addirittura la invertirà (se il nuovo volume è maggiore del vecchio).

 
Piccole patch in websockets (a la carte e in massa).
File:
wsprotocol.mqh  17 kb
wss.zip  16 kb
 
Stanislav Korotky #:
Piccole patch in websockets (a la carte e in massa).
@StanislavKorotky Grazie per il continuo aggiornamento, ma c'è qualcosa che sto cercando di capire. Su MT5 "Market Watch" posso cliccare con il tasto destro del mouse su qualsiasi "Symbol" e visualizzare tutte le sue proprietà associate proprio come farei programmaticamente cliccando su "Specification".

Una di queste proprietà è la "Commissions" del Symbol che ovviamente differisce da broker a broker come si può vedere nell'immagine allegata. Tuttavia, non sono riuscito ad accedere a questa proprietà in modo programmatico. Per favore, potete aiutarmi con un indizio su come ottenere le commissioni del simbolo?


Inoltre, questo messaggio appare spesso nel log ogni volta che lavoro con PositionFilter, soprattutto quando l'EA viene caricato per la prima volta o ricompilato: "Unresolved int value as enum: 8 per MonitorInterface<ENUM_POSITION_PROPERTY_INTEGER,ENUM_POSITION_PROPERTY_DOUBLE,ENUM_POSITION_PROPERTY_STRING>". Funziona ancora bene e non interrompe nulla
 
pauldic #:
@StanislavKorotky Grazie per il continuo aggiornamento, ma c'è qualcosa che sto cercando di capire. Su MT5 "Market Watch" posso cliccare con il tasto destro del mouse su qualsiasi "Symbol" e visualizzare tutte le sue proprietà associate proprio come farei programmaticamente cliccando su "Specification".

Una di queste proprietà è la "Commissions" del Symbol che ovviamente differisce da broker a broker come si può vedere nell'immagine allegata. Tuttavia, non sono riuscito ad accedere a questa proprietà in modo programmatico. Per favore, potete aiutarmi con un indizio su come ottenere le commissioni del simbolo?

Purtroppo non tutte le proprietà delle entità del terminale sono accessibili tramite MQL5.

pauldic #:
A parte questo messaggio che appare spesso nel log ogni volta che lavoro con PositionFilter, specialmente quando l'EA viene caricato per la prima volta o ricompilato "Unresolved int value as enum: 8 per MonitorInterface<ENUM_POSITION_PROPERTY_INTEGER,ENUM_POSITION_PROPERTY_DOUBLE,ENUM_POSITION_PROPERTY_STRING>". Funziona ancora bene e non interrompe nulla

Questo è solo un avvertimento causato dal fatto che la corrispondente enumerazione incorporata di MQL5 ha uno spazio vuoto nelle costanti che normalmente sono assegnate consecutivamente. Questa lacuna si verifica perché MQL5 è in continua evoluzione e alcune costanti possono diventare obsolete e quindi essere eliminate. È possibile modificare il codice sorgente per evitare tali avvisi.

 

Allego una versione aggiornata della libreria JSON - toyjson3.mqh - che sostituisce toyjson2.mqh e toyjson.mqh del libro.

Questa versione è ottimizzata per l'elaborazione di file JSON di grandi dimensioni. Per semplicità, le versioni precedenti utilizzano la funzione StringSplit per la tokenizzazione del testo durante il parsing, e questa chiamata può richiedere internamente gigabyte di memoria libera a causa della frammentazione e dell'anticipazione di un ulteriore flusso di dati. Viene rilasciata dopo il parsing, ma il gestore della memoria di MQL5 può tenerla riservata per un po', perché libera la spazzatura in modo posticipato.

Ora richiede una quantità di memoria inferiore durante l'analisi.

File:
toyjson3.mqh  39 kb
 
Ecco un'altra correzione minore in ToyJson3.mqh: i numeri in virgola mobile con esponente (notazione scientifica, come "1e-8") vengono ora riconosciuti correttamente durante l'analisi.
File:
toyjson3.mqh  39 kb
 
Stanislav Korotky #:
Allego alcuni bugfix e miglioramenti nelle classi websockets.

Questo è esattamente ciò di cui avevo bisogno.

Grazie mille.

Mi sembri questo tipo di persona.

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' ...