Ti stai perdendo delle opportunità di trading:
- App di trading gratuite
- Oltre 8.000 segnali per il copy trading
- Notizie economiche per esplorare i mercati finanziari
Registrazione
Accedi
Accetti la politica del sito e le condizioni d’uso
Se non hai un account, registrati
Gli ordini, le operazioni e le posizioni non sono comunque legati ai timeframe. O avete frainteso qualcosa o la vostra formulazione non è corretta.
Mi dispiace, ma credo che la mia scelta di parole sia confusa: per"intervallo di tempo" intendo "intervallo di date". Diciamo che voglio selezionare le transazioni/ordini effettuati in un determinato intervallo di date, come ad esempio le transazioni dal 2025-10-01 00:00:00 al 2025-10-22 23:59:59.
Se si desidera analizzare un sottoinsieme della cronologia delle transazioni, è più efficiente richiedere solo questa parte della cronologia prima del filtraggio, senza influenzare il codice di filtraggio stesso:
Se, per qualche motivo, si desidera selezionare un sottoinsieme (più ristretto) all'interno dell'intervallo globale applicato con HistorySelect, è ancora possibile farlo nel codice di filtraggio in questo modo:
{ // alcuni di questi vanno qui // HistorySelect(0, LONG_MAX); // HistorySelectByPosition(PositionID); ... DealTuple deals[]; if(SubrangeFrom != SubrangeTo && SubrangeFrom < SubrangeTo) { filter.let(DEAL_TIME, SubrangeFrom - 1, IS::GREATER).let(DEAL_TIME, SubrangeTo + 1, IS::LESS); } filter.let(DEAL_POSITION_ID, PositionID).select(deals, true); ... }La riga evidenziata in giallo imposta due condizioni per l'intervallo di date [SubrangeFrom, SubrangeTo] utilizzando i qualificatori aggiuntivi IS::GREATER e IS::LESS (per impostazione predefinita, non sono specificati in altre chiamate a let() e IS::EQUAL è normalmente utilizzato per i campi a valore singolo).
Conosco solo un motivo per applicare il sottofiltro per intervallo di date: è per il tempo di preparazione degli ordini (ORDER_TIME_SETUP), perché HistorySelect viene applicato a un'altra proprietà datetime degli ordini, ovvero il tempo di esecuzione dell'ordine (ORDER_TIME_DONE). Inoltre, potrebbe essere interessante filtrare un sottogruppo di ordini attivi (non presenti nella cronologia), se ce ne sono molti.
Come punto di partenza si può consultare lo script di esempio MQL5/Scripts/MQL5Book/p6/TradeHistoryPrint.mq5.Se si desidera analizzare un sottoinsieme della cronologia di trading, è più efficiente richiedere solo questa parte della cronologia prima del filtraggio, senza influenzare il codice di filtraggio stesso:
Se, per qualche motivo, si desidera selezionare un sottoinsieme (più ristretto) all'interno dell'intervallo globale applicato con HistorySelect, è ancora possibile farlo nel codice di filtraggio in questo modo:
La linea evidenziata in giallo imposta due condizioni per l'intervallo di date [SubrangeFrom, SubrangeTo] utilizzando i qualificatori aggiuntivi IS::GREATER e IS::LESS (per impostazione predefinita, non sono specificati in altre chiamate a let() e IS::EQUAL è normalmente utilizzato per campi a valore singolo).
Conosco solo un motivo per applicare il sottofiltro per intervallo di date: è per il tempo di preparazione degli ordini (ORDER_TIME_SETUP), perché HistorySelect viene applicato a un'altra proprietà datetime degli ordini, ovvero il tempo di esecuzione dell'ordine (ORDER_TIME_DONE). Inoltre, potrebbe essere interessante filtrare un sottogruppo di ordini attivi (non presenti nella cronologia), se ce ne sono molti.
Come punto di partenza si può consultare lo script di esempio MQL5/Scripts/MQL5Book/p6/TradeHistoryPrint.mq5.Correzione del bug MQL5/Include/MQL5Book/TradeUtils.mqh.
Un moderatore ha formattato il codice incollato in modo errato. Di solito, tale codice viene rimosso.
@StanislavKorotky Per favore, potete aiutarmi a esaminare questo errore, credo che sia iniziato dopo gli aggiornamenti di MT5 perché sapevo che il codice funzionava nei mesi precedenti senza alcuna modifica.
la conversione del tipo di parametro 'long[][2]' in 'string[][] &' non è consentita SymbolFilter.mqh 199 20
Sospetto che il codice seguente possa aiutare a replicare il problema:
Ciao @Paul Dick
Provare questo https://www.mql5.com/it/code/57233 per l'ordinamento degli array
Allego una versione aggiornata del file di calcolo del criterio diottimizzazione personalizzato basato su R2 - RSquared.mqh, in cui è stato corretto il calcolo per il caso di lotti variabili.
La qualità della stima è stata notevolmente migliorata: a giudicare dalla tabella dei risultati dell'ottimizzazione, è stata ottenuta la combinazione del fattore di recupero e dei parametri di Sharpe.
Esempio di utilizzo.
Recentemente ho imparato a usare Frame e ho testato il vostro codice, FrameTransfer.mq5. Questa riga genera un errore nell'attuale compilatore MT5. Si prega di verificare: #property tester_set "FrameTransfer.set" (estensione file tester set non valida, '*.set' previsto FrameTransfer.mq5)
Deve essere modificato in questo modo perché la compilazione vada a buon fine: #property tester_set "\\Presets\FrameTransfer.set"
Anche `#property tester_set "/Presets/FrameTransfer.set"` fallirà.
Forse si potrebbe modificare la descrizione nel libro degli algoritmi:
Per una compilazione corretta, si dovrebbe modificare come segue: #property tester_set "\\Presets\FrameTransfer.set"
Anche `#property tester_set "/Presets/FrameTransfer.set"` fallirà.
Forse si potrebbe modificare la descrizione nel libro degli algoritmi:
Si tratta di un evidente bug del compilatore, che dà l'errore: "invalid tester set file extension, '*.set' expected" al codice:
dove il file ha l'estensione richiesta. Il percorso del file non ha nulla a che fare con questo.
Il bug esiste da molto tempo, almeno dal 2024. Non so perché MQ non si preoccupi di risolverlo.
Per quanto riguarda le modifiche al libro, in questo caso non sono necessarie, ma in ogni caso il libro è ora completamente sotto il controllo di MQ.
Si tratta di un evidente bug del compilatore: dà l'errore: "estensione del file di set del tester non valida, ci si aspettava '*.set'":
Per rimanere sulla vostra versione di MetaEditor, aggiungete zero alla fine del nome del file: "myset.set\0"