Non sembra. Quando ne ho davvero bisogno, lo faccio.
È un peccato che le tue opzioni siano limitate da qualche sviluppatore di software di terze parti.
Ho scritto molto tempo fa che è così. Non tra le nuvole, ma comunque) E non hai niente da fare, come capire cosa mi serve e cosa ho e valutare a distanza le mie capacità. Non dire cazzate, continua a fare le pubbliche relazioni in cucina ;)
Jacket, non sporcare la tua immagine qui tra i "nubendi e i PR" secondo la tua classificazione. Vai al tuo QQ.
P.S. Per i commercianti c'è l'alfabetizzazione, dove possono reintegrare la loro conoscenza delle realtà del mercato FOREX e le sue varie caratteristiche dai loro scambi abituali. Allarga i tuoi orizzonti!
Как ущербный, могу позволить себе написать правду. И паук и qq - для новичка полное дерьмо. Когда человек, вне зависимости от опыта, приходит на рынок, он сталкивается со сложной задачей: найди то, не знаю что. Но чтобы был профит. И самое сложное определиться, ГДЕ именно копать и КАК копать. На форумах этой информации практически нет. А если и...
MetaQuotes, naturalmente, ha sovradimensionato (sottodimensionato) il formato dello storico memorizzato (MqlRates). Questo è comprensibile. Quando il formato è stato sviluppato, gli spread fissi prevalevano nel mercato forex, mentre gli spread di mercato (fluttuanti) erano ancora esotici.Anche se era chiaro che anche gli spread fissi di fatto fluttuavano, perché le società di brokeraggio "non garantiscono la loro fissità nei momenti di novità e rapidi cambiamenti di mercato" (le virgolette rappresentano qui una citazione da una tipica offerta di quasi tutte le società di brokeraggio di quel periodo).
Ma i tempi sono cambiati e abbiamo quello che abbiamo - gli spread galleggiano su ogni tick, e va bene così. Solo che le citazioni storiche non lo riflettono, purtroppo.
Solo un valore di spread per ogni barra viene memorizzato nella storia. E non è sufficiente ora. E porta a distorsioni quando si testa sulla storia, perché non c'è coincidenza della storia di trading reale e il trading nel tester, anche se un broker fornisce assolutamente onesto (corrispondente alla traduzione reale tick-feed) base storia. La ragione è insufficiente potere descrittivo del formato MqlRates.
structMqlRates
{
datetime time; // время начала периода 8 байт
double open; // цена открытия 8 байтdouble high; // наивысшая цена за период 8 байтdouble low; // наименьшая цена за период 8 байтdouble close; // цена закрытия 8 байтlong tick_volume; // тиковый объем8 байтint spread; // спред 4 байта
long real_volume; // биржевой объем 8 байт
};
// итого: size_of(MqlRates) = 52 байта
Questa struttura presuppone l'invariabilità dello spread all'interno di una barra, che non corrisponde alla realtà attuale del trading.
Più avanti si discute su quale potrebbe essere il formato "completo", l'ho chiamato "Mql_6_Rates" in modo condizionale per rendere chiaro che attualmente non è supportato.
Di seguito ci sono due varianti: la prima è una struttura impacchettata (per il disco) senza compressione con algoritmi speciali. Potrebbe essere compresso molte volte più piccolo (2-3, presumibilmente) per ridurre il traffico di trasferimento. Il formato compresso non è discusso qui.
struct Mql_6_PackedRates
{
time_t time; // время начала периода 4 байта // восьмибайтный time64_t неактуален до 2038 годаfloat average_price; // средняя цена бара грубо (на три значащих цифры меньше точности _digits) 4 байтаfloat d_open; // поправка к цене открытия 4 байтаfloat d_high; // поправка к наивысшей цене за период 4 байтаfloat d_low; // поправка к наименьшей цене за период 4 байтаfloat d_close; // поправка к цене закрытия 4 байтаushort spread; // средний спред 2 байтаchar d_open_spread; // поправка к спреду открытия 1 байтchar d_high_spread; // поправка к спреду high 1 байтchar d_low_spread; // поправка к спреду low 1 байтchar d_close_spread;// поправка к спреду close 1 байтuint tick_volume; // тиковый объем 4 байтuint real_volume; // биржевой объем 4 байтdouble OpenBid() {return (average_price+d_open); } // функции на лету вычисляющие точные значенияdouble OpenAsk() {return (average_price+d_open+OpenSpread()); }
double HighBid() {return (average_price+d_high); }
и т.д...... // функции на лету вычисляющие точные значения
...
...
double OpenSpread() { return ((spread+d_open_spread) * _digits); }
...
и т.п ......
Mql_6_Rates UnpackRates() { Mql_6_Rates Rates; ..../*заполняем*/..... return (Rates);}
};
// Итого у меня получилось 38 байт, всё правильно? Вся информация об 4 точках bid-ask упакована без искажений
Il formato "impacchettato" dovrebbe essere ottimale quando viene memorizzato sul disco del commerciante. Quando viene caricato dal disco nella memoria, può essere spacchettato al volo, le funzioni di spacchettamento sono "attaccate" alla struttura.
La storia scompattata (per l'accesso da MQL) potrebbe essere, diciamo, questa:
struct Mql_6_Rates
{
datetime time; // время начала периода 8 байтdouble open_bid; // цена открытия 8 байтdouble open_ask; // цена открытия 8 байтdouble high_bid; // наивысшая цена за период 8 байтdouble high_ask; // наивысшая цена за период 8 байтdouble low_bid; // наименьшая цена за период 8 байтdouble low_ask; // наименьшая цена за период 8 байтdouble close_bid; // цена закрытия 8 байт double close_ask; // цена закрытия 8 байт long tick_volume; // тиковый объем 8 байт long real_volume; // биржевой объем 8 байт
};
//итого = 88 байт
È più grande di adesso, ma lo spread è calcolato in tutti i punti fissi della barra. Cioè, se dobbiamo scrivere le informazioni in barre di minuti secondo lo schema tradizionale {Open+High+Low+Close}, allora dovremmo scriverle "per intero".
A mio parere, questa informazione è ridondante e tende a creare illusioni massime al punto di apertura. I momenti di apertura delle barre per i diversi simboli non coincidono, mentre esattamente al momento dell'inizio del minuto (astronomico) i prezzi bid-ask sui simboli corrispondono alle ultime offerte scambiate, cioè i prezzi di chiusura. Pertanto, il formato più adatto per testare i minuti (il più sano compromesso tra tradizione e buon senso) potrebbe essere il seguente
struct Mql_6_Rates
{
datetime time; // время начала периода 8 байтdouble high_bid; // наивысшая цена за период 8 байтdouble high_ask; // наивысшая цена за период 8 байтdouble low_bid; // наименьшая цена за период 8 байтdouble low_ask; // наименьшая цена за период 8 байтdouble close_bid; // цена закрытия 8 байт double close_ask; // цена закрытия 8 байт long tick_volume; // тиковый объем 8 байт long real_volume; // биржевой объем 8 байт
};
//итого = 72 байта
// Il risparmio corrispondente in formato disco impacchettato sarebbe di altri 7 byte, cioè SizeOf(Mql_6_PackedRates) sarebbe ridotto a 31 byte.
Per il test ecologico (più ragionevole) "per prezzi di apertura", si dovrebbe prendere il tempo di inizio astronomico di un minuto, cioè il prezzo di chiusura della barra precedente. In questo caso, si otterrebbe un esatto sincronismo multivaluta dei prezzi. Questo sincronismo è vitale per il debugging degli EA multivaluta che scambiano ordini di mercato. Per il trading di ordini limite e stop, l'informazione sugli estremi su ogni barra è vitale. È anche completamente disponibile nel formato che stiamo discutendo.
--
In realtà, sto sviluppando questi formati proprio ora per i miei scopi. Pubblicarli qui è solo un sottoprodotto del mio sviluppo. Forse qualcuno può trovarli utili.
In un test ecologico (il più sensato) dei "prezzi di apertura", si dovrebbe prendere l'ora astronomica di inizio del minuto, cioè il prezzo di chiusura della barra precedente.
ignorare il divario sarà fondamentale in alcuni casi
p.s. se avete bisogno di risparmi nel traffico, potete memorizzare offset invece di valori assoluti di prezzo, per i quali il doppio è molto
MetaQuotes, naturalmente, ha esagerato (underdid) il formato della storia memorizzata (MqlRates). È comprensibile. Quando il formato è stato sviluppato nel mercato forex, gli spread fissi prevalevano, mentre gli spread di mercato (fluttuanti) erano ancora esotici.Anche se era chiaro che anche gli spread fissi erano in realtà fluttuanti, perché le società di brokeraggio "non garantiscono la loro fissità in tempi di novità e rapidi cambiamenti nel mercato" (le virgolette qui rappresentano una citazione da un'offerta tipica di quasi tutte le società di brokeraggio di quel periodo).
La MT5 era originariamente posizionata come un terminale di scambio. E nelle borse le leggi sui prezzi ECN sono in vigore da MOLTO tempo. Cioè la scusa della sottoperformance è insostenibile. Non c'era (e non c'è) nella loro squadra un algotrader forte, che possa essere ascoltato. A quanto pare, solo "il numero di anni di sviluppo di successo della piattaforma" è più importante della logica.
hrenfx: MT5 è stato originariamente posizionato come un terminale di scambio. E sulle borse ECN-legge di formazione dei prezzi sono MOLTO tempo fa. Quindi, la scusa della carenza è insostenibile. Non c'era (e non c'è) nella loro squadra un algotrader forte, che possa essere ascoltato. A quanto pare, solo "il numero di anni di sviluppo di successo della piattaforma" è più importante della logica.
Non stavo cercando di trovare delle scuse. Per trovare delle scuse, devi prima accusare. Non ho davvero tempo per questo.... :)
Allora è un'indulgenza (bisogna diffidare di una cosa del genere - è peggio della critica nuda e cruda):
MetaDriver:
Quando è stato sviluppato il formato della cronologia memorizzata (MqlRates), MetaQuotes, naturalmente, ha esagerato (underdid). È comprensibile. Quando il formato è stato sviluppato nel mercato del forex, gli spread fissi hanno prevalso, gli spread di mercato (fluttuanti) erano ancora esotici.Anche se era chiaro che anche gli spread fissi erano in realtà fluttuanti, perché le società di brokeraggio "non garantiscono la loro fissità in tempi di novità e rapidi cambiamenti nel mercato" (le virgolette qui rappresentano una citazione da una tipica offerta di quasi tutte le società di brokeraggio di quel periodo).
ignorare il divario sarà fondamentale in alcuni casi
Esiste una tale lettera. Ma il gap (salto discontinuo di quotazione) può avvenire in qualsiasi momento, non solo all'inizio della barra. Quindi, qualsiasi formato "assottigliato" non è senza peccato, per definizione. Il feed completo solo in tick. E potrebbe essere ancora più pieno nella storia. Sto cercando di fare un formato minuto per me, mentre ho trovato un tale compromesso.Potrei lasciarlo come descritto sopra (senza Open, solo {Hi-Lo-Close}), capisco tutti gli svantaggi, è solo una versione della mia codifica per il mio tester. Prevedo anche di testare con ticks grezzi, o con diluiti artificialmente con qualsiasi metodo (con salvataggio dei ticks formato {bid-ask-time}).
Non sembra. Quando ne ho davvero bisogno, lo faccio.
È un peccato che le tue opzioni siano limitate da qualche sviluppatore di software di terze parti.
Non si può.
Non dire stronzate, vai su PR la cucina ;)
Jacket, non sporcare la tua immagine qui tra i "nubendi e i PR" secondo la tua classificazione. Vai al tuo QQ.
P.S. Per i commercianti c'è l'alfabetizzazione, dove possono reintegrare la loro conoscenza delle realtà del mercato FOREX e le sue varie caratteristiche dai loro scambi abituali. Allarga i tuoi orizzonti!
Jacket, non sporcare la tua immagine qui tra i "nubendi e i PR" secondo la tua classificazione. Vai al tuo QQ.
MetaQuotes, naturalmente, ha sovradimensionato (sottodimensionato) il formato dello storico memorizzato (MqlRates). Questo è comprensibile. Quando il formato è stato sviluppato, gli spread fissi prevalevano nel mercato forex, mentre gli spread di mercato (fluttuanti) erano ancora esotici.Anche se era chiaro che anche gli spread fissi di fatto fluttuavano, perché le società di brokeraggio "non garantiscono la loro fissità nei momenti di novità e rapidi cambiamenti di mercato" (le virgolette rappresentano qui una citazione da una tipica offerta di quasi tutte le società di brokeraggio di quel periodo).
Ma i tempi sono cambiati e abbiamo quello che abbiamo - gli spread galleggiano su ogni tick, e va bene così. Solo che le citazioni storiche non lo riflettono, purtroppo.
Solo un valore di spread per ogni barra viene memorizzato nella storia. E non è sufficiente ora. E porta a distorsioni quando si testa sulla storia, perché non c'è coincidenza della storia di trading reale e il trading nel tester, anche se un broker fornisce assolutamente onesto (corrispondente alla traduzione reale tick-feed) base storia. La ragione è insufficiente potere descrittivo del formato MqlRates.
Questa struttura presuppone l'invariabilità dello spread all'interno di una barra, che non corrisponde alla realtà attuale del trading.
Più avanti si discute su quale potrebbe essere il formato "completo", l'ho chiamato "Mql_6_Rates" in modo condizionale per rendere chiaro che attualmente non è supportato.
Di seguito ci sono due varianti: la prima è una struttura impacchettata (per il disco) senza compressione con algoritmi speciali. Potrebbe essere compresso molte volte più piccolo (2-3, presumibilmente) per ridurre il traffico di trasferimento. Il formato compresso non è discusso qui.
Il formato "impacchettato" dovrebbe essere ottimale quando viene memorizzato sul disco del commerciante. Quando viene caricato dal disco nella memoria, può essere spacchettato al volo, le funzioni di spacchettamento sono "attaccate" alla struttura.
La storia scompattata (per l'accesso da MQL) potrebbe essere, diciamo, questa:
È più grande di adesso, ma lo spread è calcolato in tutti i punti fissi della barra. Cioè, se dobbiamo scrivere le informazioni in barre di minuti secondo lo schema tradizionale {Open+High+Low+Close}, allora dovremmo scriverle "per intero".
A mio parere, questa informazione è ridondante e tende a creare illusioni massime al punto di apertura. I momenti di apertura delle barre per i diversi simboli non coincidono, mentre esattamente al momento dell'inizio del minuto (astronomico) i prezzi bid-ask sui simboli corrispondono alle ultime offerte scambiate, cioè i prezzi di chiusura. Pertanto, il formato più adatto per testare i minuti (il più sano compromesso tra tradizione e buon senso) potrebbe essere il seguente
// Il risparmio corrispondente in formato disco impacchettato sarebbe di altri 7 byte, cioè SizeOf(Mql_6_PackedRates) sarebbe ridotto a 31 byte.
Per il test ecologico (più ragionevole) "per prezzi di apertura", si dovrebbe prendere il tempo di inizio astronomico di un minuto, cioè il prezzo di chiusura della barra precedente. In questo caso, si otterrebbe un esatto sincronismo multivaluta dei prezzi. Questo sincronismo è vitale per il debugging degli EA multivaluta che scambiano ordini di mercato. Per il trading di ordini limite e stop, l'informazione sugli estremi su ogni barra è vitale. È anche completamente disponibile nel formato che stiamo discutendo.
--
In realtà, sto sviluppando questi formati proprio ora per i miei scopi. Pubblicarli qui è solo un sottoprodotto del mio sviluppo. Forse qualcuno può trovarli utili.
In un test ecologico (il più sensato) dei "prezzi di apertura", si dovrebbe prendere l'ora astronomica di inizio del minuto, cioè il prezzo di chiusura della barra precedente.
ignorare il divario sarà fondamentale in alcuni casi
p.s. se avete bisogno di risparmi nel traffico, potete memorizzare offset invece di valori assoluti di prezzo, per i quali il doppio è molto
MetaQuotes, naturalmente, ha esagerato (underdid) il formato della storia memorizzata (MqlRates). È comprensibile. Quando il formato è stato sviluppato nel mercato forex, gli spread fissi prevalevano, mentre gli spread di mercato (fluttuanti) erano ancora esotici.Anche se era chiaro che anche gli spread fissi erano in realtà fluttuanti, perché le società di brokeraggio "non garantiscono la loro fissità in tempi di novità e rapidi cambiamenti nel mercato" (le virgolette qui rappresentano una citazione da un'offerta tipica di quasi tutte le società di brokeraggio di quel periodo).
MT5 è stato originariamente posizionato come un terminale di scambio. E sulle borse ECN-legge di formazione dei prezzi sono MOLTO tempo fa. Quindi, la scusa della carenza è insostenibile. Non c'era (e non c'è) nella loro squadra un algotrader forte, che possa essere ascoltato. A quanto pare, solo "il numero di anni di sviluppo di successo della piattaforma" è più importante della logica.
Non stavo cercando di trovare delle scuse. Per trovare delle scuse, devi prima accusare. Non ho davvero tempo per questo.... :)
Allora è un'indulgenza (bisogna diffidare di una cosa del genere - è peggio della critica nuda e cruda):
Quando è stato sviluppato il formato della cronologia memorizzata (MqlRates), MetaQuotes, naturalmente, ha esagerato (underdid). È comprensibile. Quando il formato è stato sviluppato nel mercato del forex, gli spread fissi hanno prevalso, gli spread di mercato (fluttuanti) erano ancora esotici.Anche se era chiaro che anche gli spread fissi erano in realtà fluttuanti, perché le società di brokeraggio "non garantiscono la loro fissità in tempi di novità e rapidi cambiamenti nel mercato" (le virgolette qui rappresentano una citazione da una tipica offerta di quasi tutte le società di brokeraggio di quel periodo).
ignorare il divario sarà fondamentale in alcuni casi