Discussione sull’articolo "L'algoritmo di generazione dei ticks all'interno del tester di strategia del terminale MetaTrader 5" - pagina 4

 
Renat :
Ma lei sta partecipando all'argomento MetaTrader 5 + MQL5 + Tester ed è in diretta competizione con gli sviluppatori.


Poiché non conoscete il terminale MetaTrader 5, non siete a conoscenza delle modalità di trading di Tester e non avete nemmeno prestato attenzione alla mia spiegazione di queste modalità con un'immagine nella prima pagina di questo argomento.

Le modalità di test sono state appositamente studiate per far passare la sbornia ai trader e per scrivere Expert Advisor robusti. In questo modo si migliorano drasticamente e qualitativamente gli Expert Advisor.

Ho scritto più volte sui forum (MQL4.com e MQL5.com) delle modalità aggressive del tester.

Questa è la radice dei problemi: la mancanza di volontà di testare nella pratica.

In generale, il nostro dialogo assomiglia a una discussione tra oppositori e sostenitori delle chiusure,

Ciascuna parte non vuole ascoltare l'altra (probabilmente perché una parte ha subito alcune soluzioni che gli avversari non vedono e non capiscono).

Sarebbe bene che lei avesse ragione e che la pratica lo dimostrasse,

Vi auguro buona fortuna e credetemi è un augurio sincero perché per me è più importante utilizzare un terminale più perfetto

(e avere profitto con il suo aiuto) piuttosto che avere ragione in qualche disputa.

 
Renat писал(а) :

...
4. Ricordare la vostra "abilità" nella modellazione e il vostro atteggiamento nei confronti della MT4. Posso fare un'altra domanda. Avete lo stesso numero di tick in una barra? Nella MT4 si buttava via il 20% dei tick. Com'è la situazione ora? Se una barra reale ha 100 ticks, quanti ticks avrete nella modellazione?

Coincidono, ma non si vuole verificare nulla. Il pensiero teorico è sufficiente per voi.

Ok, verifichiamo. Ho abbozzato un esperto. Ecco il codice.

  int ticks=0; 
  double  old_bid=0, old_ask=0;
//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit() {return(0);}
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit(const int reason){}
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
  {
//---
  MqlTick last_tick;
//---
   if(SymbolInfoTick(Symbol(),last_tick)) // получаем тик по символу
     {
     // ограничение по времени, собираем смоделированные тики за 1 час. 2010.05.21   22:00
      if(last_tick.time>"2010.05.21 21.00.00" && last_tick.time<"2010.05.21 23.00.00") {
      if(old_ask!=last_tick.ask || old_bid!=last_tick.bid)  { // если нет изменения цены это не тик, пропускаем
         // это тик запоминаем цену, увеличиваем счетчик тиков и выводим принт для проверки
         old_bid=last_tick.bid;
         old_ask=last_tick.ask;
         ticks++;
         Print("ticks=", ticks," ",last_tick.time,": Bid =",last_tick.bid," Ask =",last_tick.ask);
     }      
     }
     }
   else Print("SymbolInfoTick() failed, error =",GetLastError());
//---
  }

Ecco il risultato.

I numeri non corrispondono. Ora, le cose sono due: o le mie mani sono storte o lei sta mentendo. Chiunque può scaricarlo e verificarlo da solo. Se trovate un errore nel mio codice, ve ne sarei grato.

File:
111.mq5  3 kb
 

La prova pratica ha dato come risultato la prima opzione. Avete commesso un errore nei limiti specificando 2 ore invece di una.

Ecco la variante corretta del limite di tempo:

      if(last_tick.time>="2010.05.21 21:00" && last_tick.time<"2010.05.21 22:00") 

E i risultati:

2010.05.23 20:13:07     Core 1  ticks= 2315   2010.05.21 21:59:59 : Bid = 1.25721  Ask = 1.25738

Sono stati generati 2315 tick quando in realtà sono stati generati 2318 tick. Una perdita di 3 tick su 2318 è una variante normale.


 

Bene, siete d'accordo che questo codice può essere controllato. È sufficiente inserire l'intervallo di tempo corretto. Inserisci questo.

      if(last_tick.time>"2010.05.19 12.00.00" && last_tick.time<"2010.05.19 13.00.00") {

Spiega dove sono finiti i 5200 ticks?

 

È positivo che stiate continuando con i test di pratica.

Non ho 5869 tick su questo orologio, ma 679. Ecco i risultati dell'esecuzione di questo periodo - 679 tick. Il 100% dei ticchettii sono stati simulati.


A quanto pare, avete un orologio memorizzato nella cache (e i minuti erano corretti per un totale di 679 ticchettii) - abbiamo acceso il ticker per un breve periodo il 19, ma poi abbiamo riportato tutto indietro.

È sufficiente richiamare il comando "Aggiorna" sul grafico ed eseguirlo di nuovo.

Prestare attenzione al formato corretto dell'ora YYYY.MM.DD HH:MM:SS.

 

un problema che è stato dimenticato di trattare in questo articolo

con la comparsa di dati di volume reali in mt5

come vengono generate queste informazioni

 

Capisco perfettamente i pips trader, anche se Urain e Prival lo rifiutano. Ma i miei TS sono costruiti al contrario sul massimo filtraggio possibile del rumore, i TS diventano immuni alle qualità dei tick. Tali TS possono essere utilizzati con qualsiasi fornitore di quotazioni. Per quanto riguarda NN, di cui ha parlato Urain, non ha senso costruire un TS su NN sensibile alla qualità dei tick.

Capisco bene anche gli sviluppatori.

Vedo un compromesso nella creazione da parte degli sviluppatori di un add-on al generatore di tick standard che consenta di regolare la "fluffosità" dei tick generati, con la possibilità di regolare la frequenza di occorrenza e la dimensione delle emissioni nei tick. A mio parere, ciò non equivale a regolare il "grado di aggressività" dei test. Forse dovremmo considerare una variante di un qualche tipo di analizzatore del grado di corrispondenza tra i ticchettii generati nel tester e i ticchettii reali, in modo da poter visualizzare i parametri disponibili per la regolazione da parte degli utenti.

In ogni caso, gli sviluppatori devono fare qualcosa per proteggere i loro interessi e quelli dei trader finali. Quasi sempre si possono trovare soluzioni di compromesso.

PS Sì, e un'altra cosa. Non so perché abbiamo bisogno della cronologia dei tick (perché è necessario un test reale adeguato), se DC può cambiare i filtri anche ogni singolo giorno, rendendo inutile la cronologia dei tick accumulata, poiché il comportamento futuro del TS sarà molto diverso da quello che ci si aspettava dopo i test anche sulla cronologia dei tick reali. Per questo motivo ritengo che la variante con regolazione della "morbidezza" da parte dell'utente sia più preferibile rispetto alla possibilità di avere una cronologia reale dei tick.
 
joo писал(а) :

Capisco perfettamente i pips trader, anche se Urain e Prival lo rifiutano. Ma i miei TS sono costruiti al contrario sul massimo filtraggio possibile del rumore, i TS diventano immuni alle qualità dei ticks. .....

E non capisco chi etichetta senza capire. Ancora una volta, ecco il link della prima pagina. https://www.mql5.com/ru/forum/115584/page11#150512. Guardate bene l'immagine!!! potete vedere tutto - i trade sono tracciati sul grafico.

Parametri - dimensione media del trade in pips 650, tempo minimo per mantenere un trade 1 ora. SONO UN UOMO PIP?

Perché mi proibisci di analizzare i tick? Ti proibisco di lavorare e analizzare le informazioni in arrivo come TU ritieni opportuno? Pensi che lavorando sui tick orari ti sei automaticamente liberato del rumore - questa è un'illusione, ti suggerisco una variante ancora migliore - lavora sui candlestick annuali, il sistema sarà ancora migliore, ancora più robusto, ancora più silenzioso, i fornitori di dati non hanno problemi, danno 5 cifre di OHLC e "volume" una volta all'anno al trader e lo lasciano operare. Tutti sono contenti, il trader ha un sistema robusto, non c'è rumore, il fornitore non ha problemi di scalabilità, ecc. (esiste un metodo simile nella scienza, la sostituzione di casi estremi per capire se un'idea è insensata o meno... traete le vostre conclusioni).

Ora scriverò una risposta a Renat e basta. Cercherò di descrivere dove vedo discrepanze tra la modellazione di e le citazioni reali. Questa è una sua idea, ha deciso di modellare le zecche e ritiene che molti parametri di non siano importanti nella modellazione.

Il nostro compito è capire dove possiamo fidarci del tester e in cosa. E dove il tester ci ingannerà. Non possiamo far cambiare idea agli altri. Renat si illude che sia possibile creare un modello migliore di quello reale. Non credo che sia così.

Ci viene data l'opportunità di studiare il TC solo sul modello e non c'è la possibilità di eseguire il TC creato su dati reali (cattivi o buoni, soffici o meno, non importa). Noi non abbiamo questa opportunità!!!. Perché non ci danno la possibilità di scaricare lo storico almeno in modo indipendente, ad esempio da qui http://www.dukascopy.com/swiss/russian/data_feed/historical/, inserirlo nel tester e far girare il TS su questi dati? Nel tester va tutto bene, ma nella vita reale, anche se si trova il TS, si può ottenere così bellamente sul viso https://www.mql5.com/ru/forum . E bisogna essere assolutamente paranoici per modellare una cosa del genere (anche con l'aiuto di un generatore) e cercare di creare un TS che sia resistente a una cosa del genere e che funzioni in tali condizioni....

Ora, per quanto riguarda il confronto tra il numero di ticchettii storici e quelli modellati....

Sì, si tratta di un problema di cronologia (è proprio di questo che stiamo parlando).

Ho scritto al Service Desk #14710 2010.05.18 08:42 a.m. a proposito dei fallimenti nelle citazioni. Hanno impiegato molto tempo per risolvere il problema e sembra che non l'abbiano risolto. Il 20.05 ho cancellato manualmente tutte le quotazioni, scaricandole tutte nuove, quindi non è questo (il 19 stavate sperimentando). Le quotazioni che ho fresche per corrispondenza dal Service Desk le ho scaricate tutte nuove intorno alle 2010.05.20 12:08.

In modo che non ci sarebbe più equivoci. Anche in questo caso ho cancellato completamente la cartella histories e ne ho caricata una nuova.

  1. Sì, quando ho fatto clic sul pulsante di aggiornamento, la cronologia è cambiata. I dati corrispondevano a ticks= 678.
  2. Dal punto di vista del fornitore di dati è una buona cosa, può cambiare la cronologia come un mago.
  3. Dal punto di vista del trader è un incubo. Escludete una situazione del genere. Ho questi dati nel mio terminale, partecipano ai calcoli, agli indicatori, vengono utilizzati per costruire TS e prendere decisioni.

A cos'altro ho prestato attenzione, questo controllo è inutile.

if(old_ask!=last_tick.ask || old_bid!=last_tick.bid)  

1. Non si verificano situazioni in cui cambia solo la domanda o l'offerta (il venditore o l'acquirente viene smantellato). E questo accade molto spesso. L'offerta rimane, solo l'offerta cambia e viceversa.

2. Lo spread è uguale a una costante. Anche questo non corrisponde alla realtà.

3. Se volete essere aiutati nella ricerca della qualità del modello. Raccogliete voi stessi i tick, preferibilmente da 3-4 fonti e postateli. Mostrate i risultati della modellizzazione di questi tick non sotto forma di immagine, dove il prezzo scende di 30 punti per 1000 tick. Ma diciamo per un giorno, in cui ci sono diverse situazioni, compresi grandi movimenti in un breve intervallo di tempo.

4. Fornire le caratteristiche numeriche della deviazione dai dati reali, almeno l'RMS su entrambi gli assi.

5. Questo viene fatto in tutto il mondo, i risultati possono essere attendibili se qualcun altro con gli stessi dati iniziali ottiene lo stesso risultato.

6. Altrimenti, la situazione sarà quella descritta sopra: voi avete 678 tick nel terminale, io 5800. Se aggiungiamo qui tutte le sfumature della raccolta dei tick, non troveremo mai la verità.

7. Stare seduti per 2-3 giorni a raccogliere tick per mostrare o dimostrare qualcosa a qualcuno, mi dispiace, ho già raccolto nel mio tempo. Mi basta vedere come si generano le zecche per formarmi un'opinione.

8. È un peccato che, a causa del formato scelto per memorizzare e alimentare la cronologia nel terminale, noi trader perdiamo informazioni. Renat, per quanto ti sforzi, non sarai in grado di costruire un grafico, diciamo sotto forma di Renko, Kagi. Sarà ridisegnato e diverso da quello costruito sui dati reali.

Le mie conclusioni e raccomandazioni per i trader. Potete tenerle in considerazione o meno, dipende da voi.

  1. La modalità di test è inutile. È una perdita di tempo, perché la struttura dei tick all'interno della barra non viene riprodotta con precisione.
  2. Il metodo di test più corretto è probabilmente lo stesso della MT4 ai prezzi di apertura. Più precisamente, è necessario assicurarsi che sia iniziata una nuova barra e prendere i prezzi di quella precedente. Allo stesso tempo, nel trading reale è necessario utilizzare controlli "paranoici" per la presenza e la sincronizzazione di dati come questo https://www.mql5.com/ru/forum/993 e i risultati potrebbero comunque non coincidere.
  3. Se si testa il sistema con un piccolo valore di stop o di strascico, i risultati possono differire anche in corrispondenza dei prezzi di apertura, a causa di un possibile disallineamento tra l'orario del Low e dell'High. (Possono essere riorganizzati).
  4. Prima che l'Expert Advisor funzioni nella vita reale, al momento dell'inizializzazione, è necessario verificare in qualche modo la correttezza della cronologia (simulare la pressione del pulsante di aggiornamento).
MetaTrader не отражает реальности ! как с этим бороться? - MQL4 форум
  • www.mql5.com
MetaTrader не отражает реальности ! как с этим бороться? - MQL4 форум
 
Prival :

Non capisco le persone che etichettano le persone senza sapere di cosa stanno parlando. Ancora una volta, ecco il link dalla prima pagina. https://www.mql5.com/ru/forum/115584/page11#150512. Guardate meglio l'immagine!!! potete vedere tutto lì - gli accordi sono tracciati sul grafico.

Parametri - dimensione media del trade in pips 650, tempo minimo per mantenere un trade 1 ora. SONO UN UOMO PIP?

Perché TU mi proibisci di analizzare i tick? Ti proibisco di lavorare e analizzare le informazioni in arrivo come TU ritieni opportuno? Pensi che lavorando sui tick orari ti sei automaticamente liberato del rumore - questa è un'idea sbagliata, ti suggerisco un'opzione ancora migliore - lavorare sui candlestick annuali, il sistema sarà ancora migliore, ancora più robusto, ancora più silenzioso, i fornitori di dati non hanno problemi, danno 5 cifre di OHLC e "volume" una volta all'anno al trader e lo lasciano operare. Tutti sono contenti, il trader ha un sistema robusto, non c'è rumore, il fornitore non ha problemi di scalabilità, ecc. (esiste un metodo simile nella scienza, la sostituzione di casi estremi per capire se l'idea espressa è insensata o meno... potete trarre le vostre conclusioni).

................

Perché reagisci in modo così violento, sono un po' preso alla sprovvista? Stavo sostenendo il tuo punto di vista. Non mi piace la parola "zingaro" - la ritiro. Mi dispiace di averle provocato una tempesta di emozioni negative.

Intendo la parola "pifferaio" in un senso più ampio. Un pifferaio è un TS sensibile alla qualità delle zecche. Tutto qui. Come se avesse letto solo la prima riga del mio post. E più avanti nel mio post, ho offerto una soluzione di compromesso.

PS Utilizzo altri metodi di filtraggio del rumore oltre al passaggio a un TF più alto (in grassetto nel mio post). La mia ricerca si concentra su M1.

 
joo писал(а) :

....

Se avete preso queste informazioni sul personale, vi chiedo scusa. Sì, reagisco in modo violento, perché invece di fare trading e guadagnare un pezzo di pane per la mia famiglia, mi siedo e scrivo. Questo è stato scritto piuttosto per coloro che pensano che se una persona analizza i tick, è un giocatore di pips. Questo non è vero. Cerco di dimostrarlo il più possibile.

Non esiste il concetto di tick qualitativo/non qualitativo. Di conseguenza, non esiste un aggregato di tick qualitativi o non qualitativi. Un tick è una realtà che ci viene data nel terminale di trading. Ci arriva, viene lanciato l'Expert Advisor e noi lo analizziamo. Chiunque sia presente qui sarà in grado di dire. Questo tick è di alta qualità e questo no?

Qualcuno analizza solo la chiusura delle barre = un tick arrivato alla fine dell'ora. In che modo questo tick differisce in termini di qualità da quello arrivato un secondo prima? Supponiamo che qualcuno sostenga che è più "soffice", che cos'è e con che cosa? Spero che vediate l'assurdità di tali affermazioni.

Ora pensateci, i fornitori di quotazioni lavorano a livello di zecche, sì, le filtrano, hanno diversi fornitori, ci danno ciò che ritengono necessario e redditizio per loro in un determinato momento. Ma lavorano con i tick, non con l'OHLC, ma con i tick. Quelli che poi vengono piegati in barre. Sono tutti stupidi i DC lì presenti e non vedono che è un suicidio lavorare a livello di ticks?

Se non lo sono, sono intelligenti e competenti? Perché dovremmo lavorare con la temperatura media dell'ospedale e non con le zecche? Dalle zecche si può ricavare tutto quello che si vuole, qualsiasi tipo di grafico. Non è possibile farlo con i minuti, perché si tratta di una forma di compressione dei dati con perdita, perdita irreversibile.

È come un algoritmo di impacchettamento, lo stesso *.rar comprimeva le informazioni, le passava a un altro, che le decomprimeva e le leggeva, diciamo che è un libro. E ora cambiamo l'algoritmo, scompattiamo solo la prima(Open) e l'ultima(Close) lettera della frase, beh, si possono aggiungere altre due lettere, la più spessa (analogo di High) e la più sottile (analogo di Low). Che ne dite? A chi leggere un libro del genere? È lo stesso qui ((((