![MQL5 - Linguaggio delle strategie di trading integrato nel client terminal MetaTrader 5](https://c.mql5.com/i/registerlandings/logo-2.png)
Ti stai perdendo delle opportunità di trading:
- App di trading gratuite
- Oltre 8.000 segnali per il copy trading
- Notizie economiche per esplorare i mercati finanziari
Registrazione
Accedi
Accetti la politica del sito e le condizioni d’uso
Se non hai un account, registrati
... affermando l'ovvio, se si volesse fare quanto sopra in un EA piuttosto che in uno script [...]
Versione rivista che può essere usata per creare un EA piuttosto che uno script semplicemente togliendo i commenti a #define COMPILE_AS_EA. Il codice ha quindi OnTimer (e OnTick) invece di OnStart.
L'unico altro cambiamento è che il codice ora mette i socket in modalità non bloccante. Esegue ancora il polling per la disponibilità di nuovi eventi socket usando select(), ma ora evita il pericolo di entrare in uno stato bloccante se select() è in qualche modo errato.
Versione rivista che [...]
Sono sicuro che tutti sono ansiosi di un aggiornamento su questo...
Nel contesto di un EA - che ora è il default nel codice - si scopre che è possibile utilizzare WSAAsyncSelect() per fare una gestione guidata dagli eventi dell'attività del socket. Questo può spesso spingere la latenza tra l'invio e la ricezione dei messaggi sotto il livello del millisecondo. La velocità esatta varia a seconda di ciò che MT4 sta facendo, ma è in media molto più veloce, e mai peggiore, del semplice utilizzo del timer.
Non è possibile far sì che WSAAsyncSelect() attivi OnTimer() o OnTick() nell'EA. Per esempio, si può dire a WSAAsyncSelect() di sparare messaggi WM_TIMER, ma MT4 li ignora perché l'ID del timer wparam da WSAAsyncSelect() non corrisponde all'ID del timer che si aspetta da EventSetMillisecondTimer().
Tuttavia, dire a WSAAsyncSelect() di inviare WM_KEYDOWN fa scattare con successo OnChartEvent() nell'EA. Vedere i commenti nel codice per tutti i dettagli su come funziona questa aggiunta.
Per un po' di divertimento...
Lol. Incredibile. Congratulazioni. Non pensavo fosse possibile codificare queste funzionalità su MQL.
Lol. Incredibile. Congratulazioni. Non pensavo fosse possibile codificare queste funzionalità su MQL.
Il mio istinto è sempre quello di fare le prese del server usando il multi-threading, ma non riesco a pensare a una ragione per cui questo codice non sarebbe fattibile e sicuro per l'uso nella vita reale.
C'è una cosa nella versione più recente, sopra, che non è ideale. Piuttosto che postare un altro grande blocco di codice, lo descriverò invece:
È una piccola modifica al codice, ma non voglio postare un altro grande blocco in questo forum quando solo tu sei interessato.
Invece di pubblicare un altro grosso blocco di codice [...]
Ripensandoci...
Ancora un'altra versione, con le seguenti modifiche:
Invece di postare contributi SRC così lunghi, considera invece di allegare semplicemente il file stesso. Ti suggerirei di modificare i tuoi post più lunghi, eliminando le sezioni SRC e allegando solo il file sorgente.
Invece di postare contributi SRC così lunghi, considera invece di allegare semplicemente il file stesso. Ti suggerirei di modificare i tuoi post più lunghi, eliminando le sezioni SRC e allegando invece solo il file sorgente.
Grazie mille per il tuo contributo.
Ma, tra le molte ragioni per cui non ho intenzione di farlo, c'è il fatto che il codice di cui sopra funziona sia su MT4 che su MT5. Se lo caricassi come allegato, dovrebbe essere ingannevolmente contrassegnato come .mq4 o .mq5 mentre in realtà funziona come entrambi.
Ma, tra le tante ragioni [...]
Un'altra delle ragioni principali è il seguente scenario, che avrebbe potuto applicarsi all'OP:
Per quanto ne so, né i motori di ricerca né la ricerca su questo sito possono guardare all'interno degli allegati. Quindi, pubblicare il codice come allegato lo renderebbe invisibile a una ricerca come "mql4 bind listen htons".
Voi dite regolarmente alle persone che avrebbero dovuto fare una ricerca o consultare la documentazione; io sto cercando di aiutare proprio in questo.
(Guarda caso, "mql4 bind listen htons" non trova questo argomento perché Google non scansiona la pagina dal 14 settembre. Ma dovrebbe iniziare ad apparire presto su Google).
Grazie mille per il tuo contributo.
Ma, tra le molte ragioni per cui non ho intenzione di farlo, c'è il fatto che il codice di cui sopra funziona sia su MT4 che su MT5. Se lo caricassi come allegato, dovrebbe ingannevolmente essere contrassegnato come .mq4 o .mq5 mentre in realtà funziona come entrambi.
Ripensandoci...
Ancora un'altra versione, con le seguenti modifiche:
GRAZIE ancora jjc,
In questo momento sono di fretta e non ho tempo per testarlo, ma lo farò la prossima settimana e ti racconterò. Penso che non avrò alcun problema a farlo funzionare, ma forse ti chiederò qualche dubbio. BTW: per favore non modificare nessun post; sono tutti perfetti così come sono (mi sento come in StackOverflow =)).