CopyTicksRange () non funziona correttamente in MQL5. a - pagina 4

 
Alexey Viktorov #:

Una linea di ritorno al dialogo:

Lafunzione dovrebbe funzionare nel modo in cui gli sviluppatori l'hanno pensata, non nel modo in cui gli utenti vogliono che funzioni. Uno vuole una cosa, uno ne vuole un'altra, e uno vuole delle sciocchezze.

Questo è il motivo per cui gli sviluppatori non ti rispondono. E non sono un avvocato, sto cercando di portarvi una semplice verità, non disgustate gli altri se non potete farlo voi stessi. Tu, invece, hai acceso il "non......... cedere..." e stai inventando miti sulle stampelle.

Questo è davvero TUTTO... gli sviluppatori non ti risponderanno... non farti illusioni.

So che lo farete, quindi vi scriverò. La funzione deve funzionare come descritto nella documentazione e nient'altro. Se ci sono sfumature, scrivetele nella documentazione e non avrete problemi.

Non ho il senso di convincervi di nulla. È meglio far conoscere agli sviluppatori delle semplici verità. Sono sicuro che non hai mai lavorato in un team di programmatori - sei il tipico programmatore autodidatta senza una solida base di conoscenze. Mentre ho lavorato e gestito progetti seri. Eravamo soliti licenziare le persone per aver comunicato con verità banali non supportate da esperienza e conoscenza. Non ho bisogno di te come intermediario per comunicare con gli sviluppatori. Ho avuto una risposta da loro circa due anni fa - "fate le stampelle, qui funziona tutto". Spero che l'autore di questa frase sia già stato licenziato perché i programmatori non sono Dio e spesso commettono errori.

Avevamo una posizione di tester - non potete nemmeno immaginare quanti bug si possono trovare in un paio di pagine di codice in un programmatore troppo sicuro e inesperto.

 
RusPro #:

Nel tuo esempio funziona, perché le condizioni di chiamata sono diverse - l'ora di inizio è sempre uguale all'inizio della barra esistente (cioè i tick sono noti per esistere) e si legge tutta la storia dei tick dell'ultima barra in una volta sola.

A proposito, una delle mie stampelle funziona in modo simile alla tua. All'inizio ottengo anche i tempi delle barre esistenti, poi le spezzo in segmenti continui massimi e ottengo i tick. Ma si verifica un altro problema - se non c'è abbastanza array di ricezione per i dati, il resto che riprende è una danza del tamburello (di cui ho parlato sopra).

E lavorare con gli array dinamici è molto più lento e bisogna tenere conto della possibile frammentazione della memoria.

Avete letto tutti i documenti fino alla fine?

Примечание

Функция CopyTicksRange() предназначена для запроса тиков из строго указанного диапазона, например, за конкретный день истории.

E tutto funziona velocemente con gli array dinamici.

Confrontate il vostro ping e dimenticate la velocità degli array dinamici :)

Non è un canale MMB dedicato

Aggiunto da

Se hai bisogno di velocità, allora perché ti sei "seduto" su BCS, quegli u--holes limitano deliberatamente la velocità del login standard FORTS

da 30 transazioni al secondo a 10 transazioni al secondo!

Aggiunto

Ed è meglio scrivere nella sezione "Exchange Trading"

 
RusPro #:

Sul forex, gli stessi errori. Broker Alpari, conto di prova. Simbolo EURUSD

Il simbolo personalizzato è fatto sulla base di EURUSD, appena lasciato il nome troppo

Se stiamo parlando del funzionamento di CopyTicks nello Strategy Tester, sono un incompetente, perché non ho mai richiesto una cronologia di tick nello Strategy Tester.

Posso parlare solo per la modalità battaglia.

 
prostotrader #:

Leggete i documenti fino in fondo?

Sì, leggo le descrizioni delle funzioni fino in fondo, e se ho dei dubbi, guardo anche nei forum. Ognuno ha una nozione diversa di velocità. La dinamica è più lenta per definizione perché la memoria viene costantemente ridistribuita. Il secondo svantaggio è la frammentazione - a volte si fa un errore con la dinamica e poi la memoria non è sufficiente per chiudere il terminale :)))

Il ping non c'entra niente, dopo il primo download, i tick sono dati già dalla base, in teoria, ovviamente :) mi è stato insegnato che il programma dovrebbe essere accelerato dall'ottimizzazione, ma non dalla base hardware - questo è automatico. E che differenza fa, qual è la connessione - oggi è una, domani un'altra - non dipende dall'algoritmo.

Ho il mio broker, per questo lavoro con loro da più di un anno. Il mio compito ora è quello di testare la matematica sui tick, non il trading o il freelance.

 
RusPro #:

E lavorare con gli array dinamici è molto più lento e bisogna considerare la possibile frammentazione della memoria.

Si prega di fornire misure per questa affermazione. Presto molta attenzione ai problemi di performance negli Expert Advisor.

Forum sul trading, sistemi di trading automatico e test di strategia

Nuova versione di MetaTrader 5 build 2980: notifiche push sulle operazioni di trading

Ilyas, 2021.09.03 10:02

La matrice per le zecche è sempre allocata un po' di più di quante siano le zecche

 
fxsaber #:

Se stiamo parlando del funzionamento di CopyTicks nel Tester, non sono competente, perché non ho mai richiesto la cronologia dei tick nel Tester.

Posso parlare solo per la modalità battaglia.

Non sto parlando del tester, ma di un conto demo. Perché è problematico controllare Alpari su un conto live durante il fine settimana.

 
RusPro #:

Non intendo il tester, ma il conto demo. Il Tester, non il tester, ma il conto demo.

Sì, se chiedete le zecche in un intervallo in cui non ce n'erano, vi darà non zero, ma l'intera giornata.

Sembra che questo sia fatto deliberatamente. Ma non so per cosa.


L'indagine ha dimostrato che il problema si verifica quando From colpisce il tempo dopo l'ultimo tick della settimana di trading. Penso che sia un bug.

Sui personaggi reali e personalizzati si comporta in modo identico.


Ovviamente, se richiedo i tick dall'ultimo tick della richiesta precedente, il problema non si verifica. Ma se si fa una richiesta con SymbolInfoTick_time_msc, il bug può verificarsi. Pertanto, è meglio non farlo ancora.

 

fxsaber #:

Ma se fai una query con SymbolInfoTick_time_msc, il bug può apparire. Ecco perché è meglio non farlo ancora.

Quante volte è stato testato?

Se non vi piace SymbolInfoTick, usate

int  CopyTicks( 
   string           symbol_name,           // имя символа 
   MqlTick&         ticks_array[],         // массив для приёма тиков 
   uint             flags=COPY_TICKS_ALL,  // флаг, определяющий тип получаемых тиков 
   ulong            from=0,                // дата, начиная с которой запрашиваются тики 
   uint             count=0                // количество тиков, поставьте 1
   );
CopyTicks

da

[in] Data a partire dalla quale sono richieste le zecche. Specificato in millisecondi dal 01.01.1970. Se il parametro from=0, allora viene passato l'ultimo conteggio di tick.

 
Alexey Viktorov #:

È stato controllato quante volte?

Non mi piace l'uso di SymbolInfoTick

Grazie, ottimo per lavorare con le zecche. Questo non invalida l'esistenza del bug.

 
Alexey Viktorov #:

È stato controllato quante volte?

Non mi piace l'uso di SymbolInfoTick

è stato testato per due anni!

Che testardo! Leggi quello che è stato scritto sopra - CopyTicks glitcha lo stesso. Se vi piace cercare modi per far funzionare una funzione buggata o trovare workaround buggati, allora non preoccupatevi - non si tratta di questo