Domande su MQL4 - pagina 9

 
È corretto supporre che:
1. La chiusura reciproca degli ordini avviene automaticamente senza l'intervento del market maker?
2. La modifica degli ordini aperti (se le distanze accettate sono rispettate) avviene automaticamente senza l'intervento del market maker?
3. La cancellazione e la modifica degli ordini pendenti (se le distanze accettate sono rispettate) avviene automaticamente senza l'intervento di un market maker?
 
È corretto assumere che:<br / translate="no"> 1. Le chiusure degli ordini reciproci sono automatiche senza l'intervento del market maker?
2. La modifica degli ordini (se le distanze accettate sono rispettate) avviene automaticamente senza alcun intervento del market maker?
3. La cancellazione e la modifica degli ordini pendenti (se le distanze accettate sono rispettate) avviene automaticamente senza alcun intervento del market maker?

Questo non è corretto. devi chiedere al tuo broker come vengono elaborati gli ordini. l'elaborazione automatica è consentita. ma anche sul nostro server demo a volte l'elaborazione automatica è disabilitata e vengono eseguite conferme manuali.
 
Slawa,
grazie mille per la risposta chiara.

Dobbiamo presumere che lo stesso valga per il pull-up automatico del TrailingStop?
Ci sono delle differenze per il market maker in termini di fonte di formazione dell'influenza di controllo (EA o MT)?
 
Sì. Poiché il broker non sa chi sta spostando gli stop - il trader manualmente, gli esperti (o gli script) o il terminale client con il meccanismo di trailing stop.
 
1) perché l'indicatore ottiene Bars==0 in init() dopo la ricompilazione?

2) è relativamente lento per accedere agli elementi dell'array. può essere accelerato solo da costrutti ingombranti o qualcos'altro?
   static int know; static double caa,cbb,ccc,cdd,cee,cff, cgg; if(b-know!=0){ if(b-know==1){ caa=cbb; cbb=ccc; ccc=cdd; cdd=cee; cee=cff; cff=cgg; cgg=Close[b+6];/*vzad po istorii*/ }else if (b-know==-1){ cgg=cff; cff=cee; cee=cdd; cdd=ccc; ccc=cbb; cbb=caa; caa=Close[b]; /*vperjod*/ }else{ caa=Close[b]; cbb=Close[b+1]; ccc=Close[b+2]; cdd=Close[b+3]; cee=Close[b+4]; cff=Close[b+5];cgg=Close[b+6];}  know=b; }
 
Slawa,
grazie ancora. È più che chiaro.

Myxu,
prova a usare ArrayCopy();
 
Slawa, mi aiuti spesso con dettagli importanti, quindi mi rivolgerò a te personalmente.
Se in una finestra l'Expert Advisor e lo script stanno lavorando allo stesso tempo, nel caso in cui approssimativamente allo stesso tempo danno ordini al server per la modifica:
- EA modifica Buy al tempo t_o, Sovet=OrderModify(...)
- lo script modifica BuyLimit al tempo t_o +1ms, Script=OrderModify(...)
Altri eventi:
- il server restituisce TRUE all'esecuzione corretta dell'ordine di modifica (non so quale),
(quale delle variabili acquisisce valore TRUE - Sovet o Script ?)
e dopo 1ms...
-il server restituisce FALSE in caso di esecuzione riuscita della modifica (non so quale) dell'ordine

Domanda.
1. È corretto assumere che le richieste al server siano configurate in modo tale che siano nominate e che le risposte del server non siano mischiate, ma che ognuna di esse sia restituita al proprio OrderModify()?
2. Se no, c'è un modo di routine per distinguere le risposte dei server? (a parte la pratica di creare un altro ordine dopo aver ricevuto una risposta al precedente) ?

(Ho altre domande simili; se non è cruciale, si prega di rispondere nel forum MQL4, la domanda è duplicata lì, e se è possibile, la discussione può essere tenuta lì, perché è più conveniente presentare i codici lì).
 
citazione dal nuovo dizionario
===
C'è solo un thread, che viene avviato in un contesto di trading del programma, per eseguire operazioni di trading da esperti e script. Pertanto, se questo contesto è occupato da un'operazione di trading di un EA, un altro EA o script non può chiamare funzioni di trading in quel momento a causa dell'errore 146 (ERR_TRADE_CONTEXT_BUSY). La funzione IsTradeAllowed() deve essere usata per rilevare la possibilità di eseguire operazioni di trading. Per la chiara separazione dell'accesso al contesto commerciale potete usare il semaforo basato sulla variabile globale il cui valore deve essere cambiato usando la funzione GlobalVariableSetOnCondition().
===
Non puoi fare trading con diversi EA (o un EA e uno script) allo stesso tempo. Nel ramo di errore #6 c'è un esempio di come gestire la situazione usando il semaforo
 
Slawa,
grazie per la tua risposta. Informazione molto importante. Alcune cose sono state chiarite.

Ma ci sono ancora domande.
Il fatto che
C'è solo un thread per l'esecuzione di trade da EA e script
...
per eseguire gli ordini in un EA o script secondo i seguenti schemi?:
a=OrderModify(..number1); c=OrderModify(..number2)
;


OrderModify(..number1); OrderModify(..number2);


È corretto supporre che:
- nel primo esempio, OrderModify(..number2) non inizierà l'esecuzione finché l'operatore di assegnazione a= non sarà eseguito dopo aver ricevuto la risposta del server a OrderModify(..number1)?
- nel secondo esempio, OrderModify(..number2) inizierà l'esecuzione immediatamente senza aspettare che il server risponda a OrderModify(..number1)?

 
in entrambi i casi, l'avvio delle funzioni sarà sequenziale. a differenza delle terzine, tutte le funzioni (cioè principalmente le funzioni di trading) sono ora sincronizzate
Motivazione: