L'apprendimento automatico nel trading: teoria, modelli, pratica e algo-trading - pagina 3182

 
fxsaber #:

Grazie, proverò con gli incrementi MathRand.

Aleksey Nikolayev #:

Il più universale è probabilmente Monte Carlo.

Sembra che io abbia un'interessante generazione casuale.

double GetAvgPrice( const MqlTick &Tick )
{
  return((Tick.bid + Tick.ask) / 2);
}

void SetAvgPrice( MqlTick &Tick, const double Price )
{
  const double Spread = (Tick.ask - Tick.bid) / 2;
  
  Tick.bid = NormalizeDouble(Price - Spread, 8);
  Tick.ask = NormalizeDouble(Price + Spread, 8);
  
  return;
}

// Случайный знак приращения средней цены.
bool RandomPrice( MqlTick &Ticks[] )
{  
  const int Size = ArraySize(Ticks) - 1;
  
  if (Size > 0)
  {
    Print("Random price...");
    
    MqlTick PrevTick = Ticks[Size];
    double PrevPrice = GetAvgPrice(PrevTick);
    
    MathSrand((int)TimeLocal());
    
    for (uint i = Size; (bool)i--;)
    {
      const double Diff = GetAvgPrice(PrevTick) - GetAvgPrice(Ticks[i]);
      
      PrevTick = Ticks[i];

      SetAvgPrice(Ticks[i], PrevPrice += !(MathRand() & 1) ? Diff : -Diff);
    }
  }
  
  return(Size >= 0);
}

In alto c'è un simbolo reale, in basso è casuale.

RandomPrice può essere applicato iterativamente. Gli spread e il tempo sono conservati.


Sarebbe corretto farlo tramite logaritmo, ma non mi sono preoccupato di farlo. Se lo perfezioniamo, potrebbe essere l'opzione migliore per Monte Carlo per generare un simbolo casuale con le caratteristiche statistiche richieste.

 
fxsaber #:

per Monte Carlo è probabilmente l'opzione migliore per generare un simbolo casuale con le caratteristiche statistiche desiderate.

Test dei pidocchi con lo stesso set.

In alto - reale, in basso - casuale.

Fallimento.

 

La differenza è che non si cerca nulla nei risultati dell'ottimizzazione. Cioè, i primi cinque risultati dell'ottimizzazione non sono mai stati eseguiti su OOS.

 

Forum sul trading, sui sistemi di trading automatizzati e sulla verifica delle strategie di trading

L'apprendimento automatico nel trading: teoria, modelli, pratica e algo-trading

Valeriy Yastremskiy, 2023.08.17 10:44 AM

Sembra logico che la probabilità di falsi positivi e negativi diminuisca, ma per me non è una panacea contro gli errori.

Pensi che ci si debba fidare di più del modello train_optim + test_forward che di (train+test)_optim?

 
Aleksey Vyazmikin #:

Non c'è nessun errore, nessun errore, nessun errore.

Ho preso un altro campione - 47% di unità ed esempi 5 volte inferiori - dopo un paio di passaggi posso dire che trova già molti segmenti quantici.

Un'altra cosa a cui ho prestato attenzione è la somiglianza tra l'obiettivo iniziale e quello generato - sono simili al 49% - forse è necessario impostare una soglia qui - non più del 30% di somiglianza? Qualche idea?

Ho fatto un grafico - se c'è una corrispondenza "-1", se non c'è corrispondenza, allora "+1", ho ottenuto un tale equilibrio.

Ci sono molte tendenze, cosa ne pensate?

 
fxsaber #:

La parte superiore è reale, quella inferiore è casuale.

Ho effettuato un'ottimizzazione con le stesse impostazioni sul simbolo reale e su quello generato.


Reale.


Casuale.


Non è addestrato su Random.

 
fxsaber #:

Ho effettuato un'ottimizzazione con le stesse impostazioni sul personaggio reale e su quello generato.


Reale.


Casuale.


Non addestrato su Random.

Quante volte è stato generato il simbolo casuale?) Ovviamente, più lunga è la sequenza, più volte deve essere generata per funzionare anche su di essa.
 
fxsaber #:

La differenza è che nei risultati dell'ottimizzazione non viene cercato nulla. In altre parole, i primi cinque risultati dell'ottimizzazione non sono mai stati eseguiti su OOS.

Non so come spiegarlo in modo semplice.

Si scelgono varianti migliori "a mano" su OOS dopo l'ottimizzazione sul test e non si adattano...

E se l'algoritmo seleziona le migliori varianti su OOS dopo l'ottimizzazione, si adatta già... Perché?

Scegliere le migliori opzioni/varianti dall'intero insieme di opzioni è ottimizzazione.... Non importa se lo si fa a mano o con un algoritmo.

Forse hai lavorato solo con un tester in MT e pensi in modo un po' troppo formale all'ottimizzazione in sé e ai modi della sua applicazione, ecco perché abbiamo qualche malinteso.


 
fxsaber #:

Ho effettuato un'ottimizzazione con le stesse impostazioni sul personaggio reale e su quello generato.


Reale.


Casuale.


Non è addestrato su Random.

Random corrisponde alle caratteristiche del prezzo? Media, deviazione standard, covarianza?
 

Maxim Dmitrievsky #:
Сколько раз был сгенерирован рандом символ?)

Uno.

è ovvio che più lunga è la sequenza, più volte è necessario generarla per lavorare anche su di essa.

Non capisco questa affermazione. Cosa si intende con le due opzioni seguenti?

  1. È necessario eseguire molte iterazioni di randomizzazione per farle funzionare.
  2. Se si creano molti personaggi randomizzati, aumenta la probabilità che tra questi ce ne sia uno funzionante.

Cose apparentemente semplici, perché anche su simboli reali diversi lo stesso TC non funziona.

L'algoritmo di randomizzazione è il seguente:

  1. Si prende la storia di un tick reale.
  2. Si ricava una sequenza di incrementi del prezzo medio ((bid+ask)/2).
  3. In questa sequenza ogni termine viene moltiplicato casualmente per +1 o -1.
  4. Dalla sequenza di incrementi ottenuta si ricava una nuova storia di tick, in cui tempo e spread coincidono con il punto 1. La nuova storia di tick viene scritta in un foglio di carta con il prezzo medio ((bid+ask /2).
  5. La nuova storia dei tick viene scritta in un simbolo personalizzato.
Vale a dire che un simbolo reale viene randomizzato. È possibile applicare il punto 3 un numero qualsiasi di volte. Se dopo il punto 5 si ripetono tutti e cinque i punti, è come ripetere il punto 3 due volte.