Metatrader 4 su due dispositivi

dipende da tutti e tre i fattori:
1) dalla corretta scrittura dell'EA: deve rispettare i parametri di distanza minima dal prezzo tuo da quello che il broker accetta, in caso di requote l'EA dovrebbe a sua volta controllare se accettare la nuova quotazione o rifiutarla, attendere tot millisec ed effettuare in loop altri tentativi per un tot di tempo superato il quale dovrebbe avere la capacità di decidere se abortire l'operazione o effettuare nuovi tentativi (possibilmente prima che il broker non si "urti"). La maggior parte degli EA che trovi in commercio questi aspetti "sottili" difficilmente le fanno. Se però sei un programmatore le puoi implementare, c'è amplia documentazione sul sito metaquotes sulla corretta gestione del processo degli ordini.
2) la velocità di invio da parte dell'EA chiaramente dipende dalla location del vps: più è vicino fisicamente al broker meglio è.
Adesso devo ringraziarti oltre che per la cortresia anche per la precisione. ;);)
In alcuni dettagli non sono mai entrato.
Cos'è precisamente il requote? Il prezzo cambia continuamente ma immagino che il requote sia qualcosa di più specifico.

In sede di scrittura dell'EA dissi in tutte le lingue al programmatore che preferivo 100 volte un ineseguito (da eseguire successivamente) piuttosto che un eseguito a prezzo peggiore. Quindi l'EA avrebbe dovuto fare proprio quello che dici tu, cioè respingere il prezzo offerto se peggiorativo, e riprovare finio a quando il broker non offriva il prezzo giusto (o migliore).
Lui mi fece una versione dell'EA "con filtro" che però ugualmente non raggiungeva il risultato, cioè si avevano sempre eseguiti peggiori. Spiegava la cosa con un fatto di tempi. cioè il prezzo voluto in origine c'era ma cambiava nei millisecondi intercorrenti tra l'accettazione e l'esecuzione dell'ordine.

Allora è possibile fare un EA che respinga gli ordini a prezzo indesiderato? Quindi anche se il broker tenta di fare il furbo un buon EA può ottenere il risultato voluto (salvo assumeresi naturalmente il rischio che il prezzo voluto non arrivi mai)?
 
bhè il modo di evitare un requote l'ho già scritto sopra (ma non essendo te un programmatore, non potevi notarlo):
è nella riga dove ho scritto OpenPrice (e non semplicemente Ask), cioè ho fissato un prezzo di acquisto a priori e non a mercato:
resB = OrderSend(Symbol(),OP_BUYLIMIT,LotSize,OpenPrice ,Slippage,StopLossBuy,TakeProfitBuy,"ord ine di controllo",MAGIC,0,clrNONE);
nel caso requote questo codice non invia alcun ordine, in questo caso la Metatrader restituisce un errore (ERR 138) di non esecuzione.

ribadito anche nella sezione domande/risposte (sono presenti un paio di soluzioni) all'interno del sito di documentazione Metaquotes:
How to know requote new price.
How to know requote new price. - Forex Trading Hours - MQL4 and MetaTrader 4 - MQL4 programming forum

qua c'è una stilata di codice che produce un file di log alquanto completo (al limite della paranoia) che ti registra gli eventi legati al processo degli ordini:
mt4 - MetaTrader 4: Automated Orders don't work, but also give no useful error message - Stack Overflow

notare l'elenco dei possibili errori potenzialmente producibili in fase di trasmissione/ricezione degli ordini (in corrispondenza di ciascuno dei quali un buon EA scritto a livello professionale, dovrebbe reagire di conseguenza):
According to the MT4 Manual the error codes have these definitions:

0 ERR_NO_ERROR No error returned
1 ERR_NO_RESULT No error returned, but the result is unknown
2 ERR_COMMON_ERROR Common error
3 ERR_INVALID_TRADE_PARAMETERS Invalid trade parameters
4 ERR_SERVER_BUSY Trade server is busy
5 ERR_OLD_VERSION Old version of the client terminal
6 ERR_NO_CONNECTION No connection with trade server
7 ERR_NOT_ENOUGH_RIGHTS Not enough rights
8 ERR_TOO_FREQUENT_REQUESTS Too frequent requests
9 ERR_MALFUNCTIONAL_TRADE Malfunctional trade operation
64 ERR_ACCOUNT_DISABLED Account disabled
65 ERR_INVALID_ACCOUNT Invalid account
128 ERR_TRADE_TIMEOUT Trade timeout
129 ERR_INVALID_PRICE Invalid price
130 ERR_INVALID_STOPS Invalid stops
131 ERR_INVALID_TRADE_VOLUME Invalid trade volume
132 ERR_MARKET_CLOSED Market is closed
133 ERR_TRADE_DISABLED Trade is disabled
134 ERR_NOT_ENOUGH_MONEY Not enough money
135 ERR_PRICE_CHANGED Price changed
136 ERR_OFF_QUOTES Off quotes
137 ERR_BROKER_BUSY Broker is busy
138 ERR_REQUOTE Requote
139 ERR_ORDER_LOCKED Order is locked
140 ERR_LONG_POSITIONS_ONLY_ALLOWED Buy orders only allowed
141 ERR_TOO_MANY_REQUESTS Too many requests
145 ERR_TRADE_MODIFY_DENIED Modification denied because order is too close to market
146 ERR_TRADE_CONTEXT_BUSY Trade context is busy
147 ERR_TRADE_EXPIRATION_DENIED Expirations are denied by broker
148 ERR_TRADE_TOO_MANY_ORDERS The amount of open and pending orders has reached the limit set by the broker
149 ERR_TRADE_HEDGE_PROHIBITED An attempt to open an order opposite to the existing one when hedging is disabled
150 ERR_TRADE_PROHIBITED_BY_FIFO An attempt to close an order contravening the FIFO rule

qua c'è anche un elenco piuttosto esaustivo sui rischi connessi al trading con gli EA (vale per tutti tipi di trading automatici talatro)
HOW TO REDUCE TRADER'S RISKS:
https://www.mql5.com/en/articles/4233

se hai pagato un EA scritto da un professionista, non dovrebbe essere difficile per lui fornirti una risposta esauriente, cosa che si può fare solo dando un'occhiata ai sorgenti ed ai file di log. Poi, una volta esclusi eventuali mancanze/accorgimenti di scrittura di quest'ultimo, si può andare a vedere il vps, etc.
 
Ultima modifica:
Indietro