Non ditemi allora che l'AT non funziona - pagina 24

 

In generale, possiamo dire che il segreto del TC fitting sui perceptron è risolto:


Supponiamo di avere tre sezioni adiacenti di dati storici: A, B, C

Se abbiamo il fitting in B e C, e OOS in A, allora i falsi segnali saranno tagliati dal filtro: PerceptronA = signum(signum(PerceptronB) + signum(PerceptronC))

Se abbiamo il fitting in A e B e OOS in C, i falsi segnali sono tagliati dal filtro: PerceptronC = signum(signum(PerceptronA) - signum(PerceptronB))


Qui si applicano le leggi dell'aritmetica, cioè: se A = B + C, allora: C = A - B


dove:

signum(x) è una funzione signum, cioè il suo valore è uguale a seconda dell'argomento:

signum(x) = 0 se x = 0

signum(x) = 1 se x > 0

signum(x) = -1 se x < 0

Cioè, i segnali commerciali devono essere coerenti per un test OOS di successo nel passato e incoerenti per un test OOS di successo nel futuro.


Ora è abbastanza chiaro perché il TS sui perceptrons, se ottimizzato solo per una singola sezione della storia, avrà una misura in futuro. Dopo tutto, se dividiamo la parte ottimizzata in due parti e teniamo conto che i segnali su di esse devono essere non corrispondenti, otterremo 0 sulla differenza, cioè nessun segnale, poiché abbiamo a che fare con l'incertezza. Come risultato, invece di un segnale di trading otteniamo SB, che porta alla perdita di circa lo spread.

 

Molto bello!

Supponiamo di avere tre sezioni vicine di dati storici: A, B, C e una sezione futura D

Se abbiamo un adattamento su B e C, allora

1. Per ottenere un profitto sulla trama A, dobbiamo aprire quando i segnali B e C sono coerenti,

2. E per ottenere un profitto sull'area D dovremmo aprire quando i segnali B e C sono discordanti.


Che cazzo è questo, T. Reshetov? Ecco l'implementazione dell'algoritmo per aprire/chiudere le posizioni:

//************************************************************          
void T_SetSignales(int PASS, bool& BUY_Sign, bool& BUY_Stop, bool& SELL_Sign, bool& SELL_Stop, int& LastBar )  
  {      
   BUY_Sign  = false;
   BUY_Stop  = false;
   SELL_Sign = false;
   SELL_Stop = false;
   
   int P1 = perceptron1();
   int P2 = perceptron2();
   
  switch(PASS)
   {
    case 1 : if (P1 > 0)      {BUY_Sign  = true; SELL_Stop = true;} 
                   else               {SELL_Sign = true; BUY_Stop  = true;}  break;
    case 2 : if (P2 > 0)      {BUY_Sign  = true; SELL_Stop = true;} 
                   else               {SELL_Sign = true; BUY_Stop  = true;}  break;
    case 3 : if (  (P1 + P2)  > 0)     {BUY_Sign  = true; SELL_Stop = true;} 
             if       (  (P1 + P2)  < 0)     {SELL_Sign = true; BUY_Stop  = true;}
             if         (  P1 > 0 &&  P2 < 0)  {SELL_Stop = true; BUY_Stop  = true;}
             if         (  P1 < 0 &&  P2 > 0)  {SELL_Stop = true; BUY_Stop  = true;}
             break; 
   }  // switch(PASS)
   return;  
  } //  void SetSignales ()       
//************************************************************          

Если вас не затруднит, поправьте.
 

Юрий Васильевич, хотелось бы обратить ваше внимание, что история самого последнего/правого интервала подгонки-оптимизации

не учитывается в вашей программе автоматизации подгонки-оптимизации.

Если я в 23 часа сегодня готовлю программу gold_dust для работы с начала следующего дня, то для Н1 пропадают 23 бара.

 

more:

Yuri Vasilievich, vorrei attirare la tua attenzione sul fatto che la storia dell'intervallo di adattamento più recente/più giusto

non è presa in considerazione nel tuo programma di automazione dell'ottimizzazione dei raccordi.

Se preparo un programma gold_dust alle 23 di oggi per lavorare dall'inizio del giorno successivo, allora mancano 23 barre per H1.



1. Non Vasilyevich, ma Vyacheslavovich.

2. Non nel mio programma, ma nel tester di strategia MT4

 
Reshetov:

1. Non Vasilyevich, ma Vyacheslavovich.

2. Non nel mio programma, ma nel tester di strategia MT4

1. Mi scuso per il refuso.

2. Ogni volta che caricate il terminale MT4 per l'esecuzione, siete voi che impostate la data più a destra dell'intervallo per il tester della strategia uguale alla data corrente,

escludendo così il giorno corrente. Sarebbe più naturale impostare il giorno successivo come confine destro dell'intero intervallo di test,

allora il giorno corrente sarà incluso nell'intervallo di test.

 
Farnsworth:Controlla i nuovi grafici di redditività risultanti per la casualità.
Per favore, approfondisci questo punto, Sergey. Cosa bisogna controllare e che tipo di casualità?
 
Mathemat:
Ora, per favore, approfondisci questo punto, Sergei. Cosa deve essere controllato e per quale tipo di casualità?
In qualche modo mi sono interessato anch'io, ma ero troppo timido per chiedere)))) (per non rendermi ridicolo:)))
 
Mathemat:
Per favore, entra nei dettagli da questo punto, Sergei. Cosa deve essere controllato e per quale tipo di casualità?

Potrei aver detto qualcosa di stupido, ma non sono un matematico, sto solo imparando :o) Il mio ragionamento è: cos'è il trading? Posso dare molte definizioni, ma una di queste, per esempio, può essere - è un processo di trasformazione della "curva di quotazione" in "curva di deposito". Dopo tutto, è chiaro che si può giudicare la qualità di un processo di trading dalla curva del deposito (o del saldo). Il processo di trading ideale trasforma la curva di quotazione nella linea di equilibrio ideale con pendenza positiva.

Ho preso in prestito la curva di equilibrio da altri a scopo illustrativo (senza autorizzazione):

Se io, per esempio, sono un investitore o un trader, e penso di comprare/fidarmi/verificare un particolare sistema di trading, in altre parole di fare una sorta di valutazione oggettiva del processo di trading stesso, ci sono probabilmente molte opzioni per realizzare questo. Sto solo cercando di esaminare la curva risultante per vedere se il risultato è casuale. Dopo tutto, il fatto che ora si sia ottenuto un saldo positivo non dice nulla.

Uso quanto segue per studiare la serie temporale della curva di equilibrio:

  • criteri di tendenza e casualità (rango, serie, inversione, criterio di autocorrelazione, ecc. ce ne sono molti)
  • analisi frattale

Controllo sempre in questo modo, esattamente questo controllo e rifiuta molte delle mie belle curve con saldo positivo, perché ci sono frammenti casuali.

PS: ecco i miei dubbi guardando una tale curva. È troppo storto :o)

Addendum

Ho dimenticato di aggiungere uno dei criteri importanti: se le caratteristiche frattali di un processo di quotazione coincidono/sono vicine alle caratteristiche frattali di un processo di trading, la strategia viene rifiutata.

 

Oggi ho trovato una caratteristica interessante nell'EA che si trova in GD2. Si scopre che in futuro non si dovrebbe commerciare in 3a modalità (pass = 3), ma in 1a o 2a modalità.

Prendiamo l'EA e la storia per 12 mesi, cioè un anno. Dividiamo la storia in 4 parti di 3 mesi: I, II, III e IV trimestre.

I e IV trimestre - questo è OOS, II e III - Campioni.

Fase 1. Prima troviamo i valori ottimali di p e sl, cioè impostiamo le date del II e III trimestre, spuntiamo il primo perceptron x11, x21, x31, x41, e spuntiamo anche p e sl. Passaggio di modalità = 1. Ottimizzare e impostare il miglior risultato.

Fase 2. Impostare le date su Q2, deselezionare p e sl e ottimizzare le impostazioni per il primo perceptron. Impostare il miglior risultato nelle impostazioni.

Fase 3. Impostare le date per il III trimestre, rimuovere i tick da x11, x21, x31, x41, impostare x12, x22, x32, x42, pass = 2 e ottimizzare le impostazioni per il secondo perceptron. Abbiamo impostato il miglior risultato nelle impostazioni.

4° passo. Passare = 3, impostare le date sul primo trimestre ed eseguire il test. Se il test ha successo, significa che almeno uno dei perceptron sarà robusto.

Cioè tutti i passi sopra come nella metodologia GD2.

Passo 5. Impostare le date su Q4, passare = 1. Eseguire il test.

Passo 6. Fissare le date per il Q4, passare = 2. Eseguire il test.

Almeno uno dei test del par. 5 o paragrafi. 6 dovrebbe avere successo.

Ma abbiamo eseguito i test nel futuro, cioè nel Q4, per così dire, per testare. E GD sta eseguendo tutto nel passato, cioè i primi 3 trimestri. Come facciamo a sapere quale passaggio = 1 o passaggio = 2 produrrà risultati migliori? Impostiamo le date per i primi 3 trimestri e lo eseguiamo prima in modalità 1 e poi in modalità 2. E poi guardiamo i risultati migliori per tutti i 9 mesi - la modalità è la più robusta.

 
Farnsworth:

Per studiare le serie temporali della curva di equilibrio, utilizzo quanto segue:

  • criteri di tendenza e casualità (rango, serie, inversione, criterio di autocorrelazione, ecc. ce ne sono molti)
  • analisi frattale
Controllo sempre in questo modo, esattamente questo controllo rifiuta molte delle mie belle curve con saldo positivo, perché ci sono frammenti casuali.

Perché è così difficile (intendo in blu)? Non crede che si possa rifiutare un buon sistema in questo modo? Sì, ho capito: sembri essere un perfezionista estremo...

imho, la sequenza di trade espressa come "successo-fallimento" è in modo schiacciante un processo di Bernoulli. Quindi come si fa a rimuovere la casualità da lì?

Motivazione: