Qualsiasi domanda da principiante, per non ingombrare il forum. Professionisti, non passate oltre. Da nessuna parte senza di te - 6. - pagina 1060

 
abeiks:

Qui puoi trovare parte delle risposte: https://www.mql5.com/ru/forum/131859


1. Grazie, ma non ho trovato la risposta. C'è una funzione SetOrder(), ma è essenzialmente la stessa di OrderSend(). Non è possibile aprire più ordini contemporaneamente con questa funzione.
 
smart_man:
1. Grazie, ma non ho trovato la risposta. C'è una funzione SetOrder(), ma è la stessa di OrderSend() in sostanza. Non è possibile aprire più ordini contemporaneamente con questa funzione.

Non puoi aprire diversi ordini allo stesso tempo con qualsiasi funzione, perché il server esegue gli ordini uno per uno e non in parallelo, e gli ordini sono di tutti i clienti, non solo tuoi.

Nel migliore dei casi, gli ordini saranno aperti con pochi millisecondi di differenza uno dopo l'altro, ma solo se c'è una certa domanda sul mercato.

 
evillive:

Non puoi aprire diversi ordini allo stesso tempo con qualsiasi funzione, perché il server esegue gli ordini uno per uno e non in parallelo, e gli ordini sono di tutti i clienti, non solo tuoi.

Nel migliore dei casi gli ordini si apriranno con pochi millisecondi di differenza uno dopo l'altro, ma solo se c'è una domanda sul mercato.

Vedo che avete capito il problema! L'unica cosa che mi viene in mente è se apriamo questi ordini per pending. È quindi possibile aprirli allo stesso tempo?
 
smart_man:
Ecco, vedo che hai capito il problema! L'unica cosa che mi viene in mente è se apri questi ordini in modo pendente. Allora è possibile aprirli allo stesso tempo?
No, il server li esegue ancora uno per uno, in attesa o sul mercato.
 
evillive:
No, il server li eseguirà ancora uno per uno, in attesa o a mercato.

1. allora il problema della "simultaneità" viene eliminato. Allora sotto questo aspetto non c'è differenza tra l'apertura di un mercato o un mercato in sospeso.

2. È corretto controllare manualmente su ogni tick se l'ordine ha chiuso, per cogliere il momento di questa chiusura (per TP o SL) o ci sono funzioni già pronte?

 
smart_man:

1. Poi la domanda sulla "simultaneità" viene rimossa. Allora in questo aspetto non c'è differenza tra l'apertura del mercato o in sospeso.

2. È corretto controllare manualmente ad ogni tick se l'ordine è chiuso, per determinare il momento di questa chiusura (per TP o SL) o ci sono funzioni pronte?

2 Guarda attentamente: https://www.mql5.com/ru/forum/131859

isCloseLastPosByStop();
isCloseLastPosByTake();
 
Cosa significa questa linea: PostMessageA(hwnd, WM_COMMAND, 0x822c, 0)? Non riesco a trovarne lo scopo.
 

Potete consigliarmi quale società di intermediazione scegliere? Interessato ai problemi di deposito/prelievo e all'affidabilità delle quotazioni. Per esempio, i risultati dei test del server Alpari sono molto diversi da quelli di metaquote a favore di quest'ultimo. I parametri delle candele su diversi server hanno valori diversi, ecc.

È interessante che Alpari e il forex club non avevano una licenza la settimana scorsa, sono stati perquisiti da Teletrade. Come continuare a vivere?

 

Ciao a tutti. Voglio fare una funzione personalizzata completamente autonoma. Nessun problema con l'emulazione OnInit(). La funzione utente stessa viene eseguita per definizione. Ma ho problemi con lo pseudoOnDeinit(const int reason).

Chiarire il compito. La funzione utente deve cancellare i suoi oggetti grafici all'ultimo passaggio e, per esempio, salvare alcuni dati nelle variabili globali del terminale.

In un programma in loop, il segno della fine del programma può essere IsStopped()==true. In un programma non in loop, è sempre=0. Non è un metodo universale.

Ho provato a chiamare la funzione UninitializeReason() da OnTick(). Il risultato è sempre=0. Eppure sarebbe logico fargli dare il valore del motivo della deinizializzazione imminente all'ultimo passaggio.

Così, la funzione UninitializeReason() è troncata e può essere usata solo dentro OnDeinit(const int reason).

Tutte le funzioni utente possono essere scritte in aggiunta nella funzione di deinizializzazione OnDeinit(const int reason) e uno dei parametri obbligatori passati alla funzione utente dovrebbe essere reason-il motivodella deinizializzazione.

La presenza di un valore non nullo passato da OnDeinit(const int reason) alla funzione utente sarà il segno dell'arresto del programma principale.

Forse ci sono altri modi e variabili di sistema di cui avete bisogno per questo scopo. Scrivimi. Condividete le vostre esperienze. Se non ti dispiace. ;-)

 
kosmos0975:

Ho provato a chiamare la funzione UninitializeReason() da OnTick(). Il risultato è sempre 0, anche se sarebbe logico fargli dare il motivo della prossima deinizializzazione all'ultimo passaggio.

Come potrebbe essere altrimenti? Se chiudete il terminale tra un tick e l'altro, OnTick() non viene eseguito, e quindi nessun evento che chiama UninitializeReason() viene gestito.