Calcolo del lotto da parte di Vince - pagina 6

 
Vinin:

Sto parlando solo del numero di scambi da analizzare. Reale o virtuale.


Ahh, ora ho capito, forse non è l'approccio giusto, perché il campione dovrebbe essere rappresentativo, cioè più ce ne sono meglio è...

Ognuno, naturalmente, ha i suoi criteri - per qualcuno 200 sono sufficienti, e per qualcuno 500 non sono sufficienti...

Continuo a scavare ulteriormente per una soluzione ottimale alla ricerca dell'ottimale (scusatemi se sono tofthologico) f di R.Vince usando il suo metodo della media geometrica.

 
MaxZ:
Non è esattamente il consiglio che stavo dando. È già più il tuo approccio. L'importante è che sia anche corretto.


Beh, come - perché questo è esattamente quello che ho fatto, solo direttamente in relazione a TWR - ma non alla sua media geometrica G.

"Perché se la radice di grado K del numero_1 è maggiore della radice dello stesso grado K del numero_2, allora il numero_1 è maggiore del numero_2! :))))))"

TWR è "capitale finito relativo" (Terminal Wealth Relative) ,

 TWR = MathPow(TWR*(1+f*(-Mas_Outcome_of_transactions[orderIndex]/(D))),0.33); // TWR - это произведение всех HPR    
 
Roman.:


Faccio tutti i calcoli nel teter per prezzi di apertura, scambi dal 2002 a data 2011 - 503, lo scambio più rimosso = -628.

I risultati sono qui sopra. Ora sto testando su altre varianti di EA.

Ecco il testo dell'approccio alla soluzione di questo problema dalla fonte originale - p. 31.

Abbiamo visto che il miglior sistema di trading è quello con la media geometrica più alta. Per calcolare la media geometrica dobbiamo conoscere f. Quindi, descriviamo le nostre azioni passo dopo passo.

1. Prendete la storia delle transazioni nel sistema di mercato dato.

2. Trova l'f ottimale guardando vari valori di f da 0 a 1. L'f ottimale corrisponde al valore più alto di TWR.

3. Una voltatrovato f, prendete la radice di grado N TWR (N è il numero totale di scambi). Questa è la vostra media geometrica per questo sistema di mercato. Ora puoi usare la media geometrica ottenuta per confrontare questo sistema con altri. Il valore f vi dirà quanti contratti scambiare in questo sistema di mercato. Una volta trovato f, può essere convertito nell'equivalente in denaro dividendo la perdita maggiore per l'optimum negativo/. Per esempio, se la perdita maggiore è pari a 100 dollari, e f ottimale = 0,25, allora -100 dollari / -0,25 = 400 dollari. In altre parole, dovresti scommettere 1 unità per ogni 400 dollari di conto. Per semplicità puoi calcolare tutto su base unitaria (per esempio una fiche da 5 dollari o un contratto futures, o 100 azioni). Il numero di dollari da assegnare a ciascuna unità può essere calcolato dividendo la tua perdita maggiore per il f ottimale negativo. Ilf ottimale è il risultato del bilanciamento tra la redditività del sistema (basato su 1 unità) e il suo rischio (basato su 1 unità). Molte persone pensano che la frazione fissa ottimale sia la percentuale del conto che viene assegnata


Forse ha senso passare ai logaritmi. Sostituire il prodotto con la somma
 
Vinin:

Forse ha senso passare ai logaritmi. Sostituire il prodotto con la somma


Grazie Victor, è possibile, dovrò provare, ma per ora sto testando questa opzione di ridurre il prodotto - portandolo alla potenza di 1/3.

//TWR — это «относительный конечный капитал» (Terminal Wealth Relative), 
 TWR = MathPow(TWR*(1+f*(-Mas_Outcome_of_transactions[orderIndex]/(D))),0.33); // TWR - это произведение всех HPR    
 
Roman.:


Beh, come - perché ho fatto esattamente questo, solo direttamente rispetto a TWR - ma non alla sua media geometrica G.

"Perché se la radice di grado K del numero_1 è maggiore della radice dello stesso grado K del numero_2, allora il numero_1 è maggiore del numero_2! :))))))"

TWR è "capitale finito relativo" (Terminal Wealth Relative) ,

Avete una transazione mancante:

TWR = TWR* ...

Non so come questo influenzerà il calcolo del lotto Vince, ma la mia raccomandazione era di non escludere questa operazione.

Il mio suggerimento era di rendere l'array TWR[]. E G conta così:

G *= MathPow(TWR[orderIndex], 1/N);


Romano.:


Grazie Victor, è possibile, dovrò provarlo, ma per ora sto testando questa variante di riduzione del prodotto - portandolo alla potenza di 1/3.

Anche se si rimuove la radice di terzo grado, non ci sarà comunque un doppio overflow.
 
Roman.:
for ( orderIndex = 1;orderIndex<Qnt; orderIndex++) //при заданной f проходим по всем закрытым ордерам
{                                                  // и считаем относительный конечный капитал (TWR)
   TWR = TWR*(1+f*(-Mas_Outcome_of_transactions[orderIndex]/(D))); // TWR - это произведение всех HPR
}

Perché avete la condizione "orderIndex<Qnt" nel ciclo for()? Quindi stai saltando l'ultimo elemento dell'array TWR?
 
MaxZ:

Avete un'operazione mancante:

Non so come questo influenzerà il calcolo del lotto Vince, ma la mia raccomandazione era di non escludere questa operazione.

Ho suggerito di rendere l'array TWR[]. E G conta così:


Anche se si rimuove la radice di terzo grado, non ci sarà comunque un doppio overflow.


Ho un overflow, tutte le altre cose sono uguali, compreso il valore totale: numero di trade = 503 e perdita massima = 628...

Dovresti controllare al tuo posto, su una qualsiasi delle tue tavole - il codice è postato nella prima pagina - aggiungi nelle variabili esterne e nella funzione de-enith... Questo è tutto.

 

MaxZ:


E perché hai esattamente la condizione "orderIndex<Qnt" nel tuo ciclo for()? Si scopre che si salta l'ultimo elemento dell'array TWR?


Non c'è nessuna matrice TWR, non è necessario organizzarla, basta calcolare f e basta, è solo interessante confrontare TWR a diversi f (nel ciclo) e basta, conoscere il valore di f al massimo di TWR e basta.

Tutto funziona bene lì confronta - la prima e l'ultima linea - il valore del profitto sull'ultimo trade delle schede "Log" e "Result" rispettivamente...


I numeri degli scambi sono diversi, perché nel mio gufo la chiusura è dall'ultimo ordine nel mercato al primo. La cosa principale è che il numero batte - 503 accordi - là (nel tester) e là (nel calcolo) +

valore dell'ultimo trade 503 chiuso 1076 - la ricerca degli ordini per storia nella funzione de-it viene eseguita dall'inizio fino all'ultimo (ultimo) chiuso.

 
Roman.:


L'array TWR - non c'è bisogno di organizzarlo affatto, è sufficiente calcolare f e questo è tutto, è interessato solo al confronto TWR a diversi f (in un ciclo) e tutto, per conoscere il valore f al massimo TWR e questo è tutto.

Tutto funziona bene lì confronta - prima e ultima riga - il valore del profitto sull'ultimo trade delle schede "Log" e "Result" rispettivamente...


Mi sono completamente confuso. Intendevo l'array Mas_Qutcome_di_transazioni[]. Perché si scopre che uno dei suoi elementi non viene contato in un ciclo...

E perché dovrei guardare il rapporto se vedo un'imprecisione nel codice? Non credo nei miracoli! :D

E forse i trade chiusi dal tester non dovrebbero essere presi in considerazione? Dopo tutto, non è stato il tuo TS a chiuderli...

 
MaxZ:

Sono completamente confuso. Intendevo l'array Mas_Qutcome_di_transazioni[]. Perché si scopre che il ciclo non conta un elemento al suo interno...

E perché dovrei guardare il rapporto se vedo un'imprecisione nel codice? Non credo nei miracoli! :D

E forse i trade chiusi dal tester non dovrebbero essere presi in considerazione? Non è dal tuo TS che sono stati chiusi...


Sì, controllerò con la condizione <=Qnt. Tutti i trade chiusi da TS, il tester ha chiuso gli ultimi 10 (credo che questo rientri in una tolleranza ragionevole... :-))))
Motivazione: