Tutte le domande dei nuovi arrivati su MQL4 e MQL5, aiuto e discussione su algoritmi e codici - pagina 1311

 
MakarFX:

Domanda 1: Non capisco la domanda (

Il programma per ottenere l'inizio del periodo selezionato o il periodo stesso

 
Andrey Sokolov:

per ottenere l'inizio del periodo selezionato o il periodo stesso

No, "OrdersHistoryTotal restituisce il numero di ordini chiusi e cancellati nella storia del conto corrente caricata nel terminale del cliente."
 
Andrey Sokolov:

per ottenere l'inizio del periodo selezionato o il periodo stesso

Una volta, non solo il periodo dipendeva dalle impostazioni nella scheda "Storia", ma anche l'ordine di ordinamento. L'ordinamento sembra essere stato reso immutabile, ma il periodo sembra essere rimasto dipendente. Cioè, se mostriamo la storia dal 01.12.2020 - 04.12.2020, allora OrdersHistoryTotal() restituirà solo la quantità di ordini per questo periodo. E se il mio cervello non si è completamente asciugato, conta per l'ora di chiusura. Non considera il tempo aperto. Supponiamo, per esempio, che un ordine sia stato aperto il 02.12.2020 e chiuso (non è ancora una buona data, ma comunque) il 05.12.2020, non entrerà nel periodo dal 01.12.2020 al 04.12.2020.
 
Alexey Viktorov:
E se il mio cervello non è completamente asciutto, conta per l'ora di chiusura.

Sì, solo chiudere o cancellare

 
Alexey Viktorov. MakarFX ti ringrazia per aver chiarito quale data viene contata. Ma la domanda non riguardava esattamente questo. Diciamo che il periodo "ultimo mese" è selezionato, come possiamo ottenere la data di inizio di questo periodo (selezionato), anche se non ci sono stati scambi in quel giorno?
 
Andrey Sokolov:
Alexey Viktorov. MakarFX ti ringrazia per aver chiarito quale data viene contata. Ma la domanda non riguardava esattamente questo. Supponiamo che io abbia scelto il periodo "ultimo mese", come posso ottenere la data di inizio di questo periodo (selezionato), anche se non ho fatto trading in quel giorno?
Non c'è modo.
 
Andrey Sokolov:
Alexey Viktorov. MakarFX, grazie per aver chiarito quale data viene presa in considerazione. Ma la mia domanda non riguardava esattamente questo. Supponiamo di aver selezionato il periodo "ultimo mese", come possiamo ottenere programmaticamente la data d'inizio di questo periodo (selezionato), anche se non abbiamo fatto trading in quel giorno?

Non c'è una data di inizio periodo, c'è un mandato con la data più vicina. Triste, ad essere onesti, perché se non ci sono ordini nella storia, non ci sono date d'epoca. Infatti, questo è tutto.

 
Valeriy Yastremskiy:

Non c'è una data di inizio periodo, c'è un mandato con la data più vicina. Triste, ad essere onesti, perché se non ci sono ordini nella storia, non ci sono date d'epoca. Infatti, questo è tutto.

questa impostazione non è destinata al "tweaking quotidiano" - configurare il terminale una volta e non toccarlo

nel 99,9% dei sistemi di trading il periodo di 3 mesi di storia funzionerà perfettamente, probabilmente con l'eccezione di TS, in cui decine di migliaia di ordini al mese - il periodo di 1 mese dovrebbe essere impostato qui

SZZ: non ho notato alcuna perdita di prestazioni durante un lungo periodo di storia (è chiaro che tutto può essere rotto)) ) - ma nel caso di un periodo di 1 mese, ci possono essere delle sorprese


Quindi, se gli sviluppatori di MetaTrader ci hanno permesso di "ruotare" la cronologia degli ordini - male!

)))

 
Igor Makanu:

questa impostazione non è destinata al "tweaking quotidiano" - configurare il terminale una volta e non toccarlo

nel 99,9% dei sistemi di trading il periodo di 3 mesi di storia funzionerà perfettamente, beh, probabilmente con l'eccezione di TS, in cui diverse decine di migliaia di ordini al mese - qui, molto probabilmente un periodo di 1 mese dovrebbe essere impostato

SZZ: non ho notato alcuna perdita di prestazioni durante un lungo periodo di storia (è chiaro che tutto può essere rotto)) ) - ma nel caso di un periodo di 1 mese, ci possono essere delle sorprese


Quindi, se gli sviluppatori di MetaTrader ci hanno permesso di "ruotare" la cronologia degli ordini - male!

)))

Il mio approccio è più pessimista. Non possiamo fare analisi su dati predefiniti come la storia, perché devono esistere e dobbiamo trovarli, e l'analisi efficiente richiede la propria raccolta di dati )))). La storia è solo per la gestione operativa.

 

Puoi provare a estrarre la data dal modulo usando WinAPI. E ordina anche un nuovo periodo.

Per quattro, non so come sia con cinque.


Ho trovato questo, l'ho fatto qualche anno fa, così:

#import "user32.dll"
   int GetForegroundWindow();
   int PostMessageA(int hWnd, int msg, int wParam, int lParam);
#import

//загружает всю историю закрытых ордеров
bool DownloadOrderHistory()
   {
   int eHandle=GetForegroundWindow();
   if(eHandle<=0) return(false);
   return(PostMessageA(eHandle,0x0111,0x8122,0)==1);
   }
GetForegroundWindow meglio replace....
Motivazione: