Discussione sull’articolo "Un Gestore degli Ordini Virtuale per tenere traccia degli ordini all'interno dell'ambiente MetaTrader 5 incentrato sulla posizione" - pagina 2

 
phampton:

È corretto, wackena. Quello che hai fatto è stato andare direttamente al server con un ordine convenzionale, quindi non c'è nessun ordine virtuale aperto. Dovresti usare il VirtualOrderManagerTester per emettere un ordine virtuale manuale.

Avrei dovuto chiarire nell'articolo che se viene introdotto un EA VOM su un particolare simbolo, anche tutti gli altri EA che operano su quel simbolo devono essere abilitati al VOM, a causa del codice SL di protezione dalle catastrofi presente nel VOM.

Paolo

Grazie Paul.

Il VirtualOrderManager.mqh può essere utilizzato nello Strategy Tester MT-5? Se sì, come deve essere impostato l'EA con il VOM?

 
wackena:

Grazie Paul.

Il VirtualOrderManager.mqh può essere utilizzato nello Strategy Tester MT-5? Se sì, come deve essere impostato l'EA con il VOM?

Sì, i miei test molto limitati nella ST indicano che funziona senza alcuna modifica, anche se lentamente perché ogni tick deve essere elaborato.
 

Ho lavorato con VOM su un EA di tipo Martingale. Con più operazioni di vendita aperte, dello stesso tipo e della stessa coppia di valute, la funzione CloseAllOrders sembra chiudere solo l'ultima operazione, lasciando aperte le operazioni precedenti.

VOM.CloseAllOrders(_Symbol,VIRTUAL_ORDER_TYPE_SELL);

Con più ordini virtuali (vo) aperti, dello stesso tipo e della stessa coppia di valute, il codice di questa funzione deve avviare la chiusura di un ordine vo o deve chiudere tutti gli ordini vo aperti.

VOM.OrdersTotal() tiene traccia del numero di ordini virtuali aperti abbastanza bene.

 
wackena:

Ho lavorato con VOM su un EA di tipo Martingale. Con più operazioni di vendita aperte, dello stesso tipo e della stessa coppia di valute, la funzione CloseAllOrders sembra chiudere solo l'ultima operazione, lasciando le operazioni precedenti ancora aperte.

Con più ordini virtuali (vo) aperti, dello stesso tipo e della stessa coppia di valute, il codice di questa funzione deve avviare la chiusura di un ordine vo o deve chiudere tutti gli ordini vo aperti.

VOM.OrdersTotal() tiene traccia del numero di ordini vo aperti abbastanza bene.

Ciao wackena,

Ho appena aggiunto un pulsante Chiudi tutto a VirtualOrderManagerTester, vedi allegato. Funziona bene, anche se ammetto che è un modo goffo per chiudere tutti gli ordini virtuali - un modo migliore sarebbe quello di sommarli ed emettere un singolo ordine sul server, e cercherò di farlo nella prossima versione.

Non esitate a inviarmi una copia del log LOG_VERBOSE EA in modo da poter capire meglio cosa sta succedendo.

Paolo

 
phampton:

Ciao wackena,

Ho appena aggiunto un pulsante Chiudi tutto a VirtualOrderManagerTester, vedi allegato. Funziona bene, anche se ammetto che è un modo goffo per chiudere tutti gli ordini virtuali - un modo migliore sarebbe quello di sommarli ed emettere un singolo ordine del server, e cercherò di farlo nella prossima versione.

Non esitate a inviarmi una copia di un log LOG_VERBOSE EA in modo che possa capire meglio cosa sta succedendo.

Paolo

In allegato il file di log.
File:
 
wackena:
In allegato il file di log.

Grazie - da quello che posso vedere nel log, le uniche chiamate a OrderClose avvengono quando è stato raggiunto un takeprofit virtuale, cioè qualunque codice abbiate per chiudere esplicitamente gli ordini (come un CloseAllOrders) non viene raggiunto o viene raggiunto quando non ci sono più ordini da chiudere.

 

Aggiornamento delle appendici dell'articolo:

La documentazione, la guida all'uso e i commenti al codice sorgente della libreria Virtual Order Manager sono ora disponibili in russo.

 

C'è un problema importante con questa libreria. I trade aperti con VOM e chiusi manualmente vengono visti aperti da VOM.

Inoltre, quando nel VOM cerco di chiudere queste operazioni, il VOM apre le operazioni nella direzione opposta.

Per esempio:

- Apro 5 ordini di acquisto con VirtualOrderManagerTester ed è tutto ok.

- Chiudo manualmente tutti e 5 gli ordini: nella MT5 non vedo ordini e sul grafico (VOM) 5 ordini aperti.

- Chiudo i 5 ordini da VirtualOrderManagerTester: Vedo 5 ordini di vendita nella MT5 e nessuno nel VOM (VirtualOrderManagerTester).

A mio parere questo è un problema importante perché se gli ordini del mio EA vengono chiusi dal broker o da un altro EA, quando il mio EA cercherà di chiuderli usando VOM, aprirà ordini nella direzione opposta.

C'è qualche soluzione per questo problema?

File:
vom_test.jpg  188 kb
 
mbt22:

Esiste un problema importante con questa libreria. Le operazioni aperte con VOM e chiuse manualmente vengono viste aperte da VOM.

Inoltre, quando in VOM cerco di chiudere questi trade, VOM apre i trade nella direzione opposta.

Ad esempio:

- Apro 5 ordini di acquisto con VirtualOrderManagerTester ed è tutto ok.

- Chiudo manualmente tutti e 5 gli ordini: nella MT5 non vedo ordini e sul grafico (VOM) 5 ordini aperti.

- Chiudo i 5 ordini da VirtualOrderManagerTester: Vedo 5 ordini di vendita in MT5 e nessuno in VOM (VirtualOrderManagerTester).

A mio parere questo è un problema importante perché se gli ordini del mio EA vengono chiusi dal broker o da un altro EA, quando il mio EA cercherà di chiuderli usando VOM, aprirà ordini nella direzione opposta.

C'è qualche soluzione per questo problema?

Ciao mbt22,

quello che evidenzi è sicuramente una limitazione di questa libreria - tutti gli EA in esecuzione su un conto devono utilizzare il VOM, e questo include le operazioni manuali.

Tieni presente però che questa limitazione di socievolezza degli EA VOM si riscontra probabilmente anche in molti EA MQL5. In altre parole, questi EA possono fallire anche in caso di operazioni manuali o di altri EA di qualsiasi tipo che operano sullo stesso simbolo.

Ecco un esempio di fallimento della socievolezza di un EA non VOM: supponiamo che gli scambi (manuali e/o generati dall'EA) esterni a quell'EA siano corti di 1,0 lotti e che l'EA emetta un ordine di acquisto di 0,1 lotti con uno stop di 50 pip.Non ricordo esattamente come funzionerebbe la funzione OrderSend dell'EA (se completa o restituisce un errore di stop), ma è certo che lo stop non può essere applicato 50 pip al di sotto della posizione risultante di 0,9 lotti short.

L'EA di prova è in grado di gestire le operazioni manuali utilizzando il VOM, ma se la situazione arriva alla chiusura degli ordini del broker, il VOM ha perso il controllo e sarebbe necessaria un'attenta valutazione del conto.

Uno dei motivi principali per cui il VOM non è socievole con le attività non VOM è la sua gestione dello stop di protezione, che è un elemento essenziale di gestione del rischio in qualsiasi processo di chiusura delle operazioni basato sul cliente.

Paolo

 
phampton:

Ciao mbt22,

quello che evidenzi è sicuramente una limitazione di questa libreria - tutti gli EA in esecuzione su un conto devono utilizzare la VOM, e questo include le operazioni manuali.

Tieni comunque presente che questa limitazione di socievolezza degli EA VOM è probabilmente riscontrabile in molti EA MQL5. In altre parole, questi EA possono fallire anche in caso di trade manuali o di altri EA di qualsiasi tipo che operano sullo stesso simbolo.

Ecco un esempio di fallimento della socievolezza di un EA non VOM: supponiamo che gli scambi (manuali e/o generati dall'EA) esterni a quell'EA siano corti di 1,0 lotti e che l'EA emetta un ordine di acquisto di 0,1 lotti con uno stop di 50 pip.Non ricordo esattamente come funzionerebbe la funzione OrderSend dell'EA (se completa o restituisce un errore di stop), ma è certo che lo stop non può essere applicato 50 pip al di sotto della posizione risultante di 0,9 lotti corti.

L'EA di prova è in grado di gestire le operazioni manuali utilizzando il VOM, ma se la situazione arriva alla chiusura degli ordini del broker, il VOM ha perso il controllo e sarebbe necessaria un'attenta valutazione del conto.

Uno dei motivi principali per cui il VOM non è socievole con le attività non VOM è la sua gestione dello stop di protezione, che è un elemento essenziale di gestione del rischio in qualsiasi processo di chiusura del trade basato sul cliente.

Paolo


Ok.

Grazie per la sua rapida risposta.