Calcul du lot par Vince - page 6

 
Vinin:

Je ne parle que du nombre de transactions à analyser. Réel ou virtuel.


Ahh, maintenant je comprends, peut-être que ce n'est pas la bonne approche, puisque l'échantillon doit être représentatif, c'est-à-dire que plus il y en a, mieux c'est...

Chacun, bien sûr, a ses propres critères - pour quelqu'un 200 est suffisant, et pour quelqu'un 500 ne l'est pas...

Je continue à creuser pour une solution optimale à la recherche de la solution optimale (excusez-moi d'être tofthologique) f par R.Vince en utilisant sa méthode de moyenne géométrique.

 
MaxZ:
Ce n'est pas exactement le conseil que je donnais. C'est déjà plus votre approche. L'important est qu'il s'avère également correct.


Eh bien, comment - parce que c'est exactement ce que j'ai fait, uniquement en relation directe avec le TWR - mais pas avec sa moyenne géométrique G.

" Car si la racine de degré K du nombre_1 est supérieure à la racine de même degré K du nombre_2, alors le nombre_1 est supérieur au nombre_2 ! ". :))))))"

Le TWR est le "capital fini relatif" (Terminal Wealth Relative) ,

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


Je fais tous les calculs dans le compteur par les prix d'ouverture, les transactions de 2002 à ce jour 2011 - 503, la transaction la plus éloignée = -628.

Les résultats sont ci-dessus. Je suis en train de tester sur d'autres variantes d'EA.

Voici le texte de l'approche de la résolution de ce problème à partir de la source originale - p. 31.

Nous avons vu que le meilleur système de trading est celui dont la moyenne géométrique est la plus élevée. Pour calculer la moyenne géométrique, nous devons connaître f. Décrivons donc nos actions étape par étape.

1. Prenez l'historique des transactions dans le système de marché donné.

2. Trouvez la valeur optimale de f en examinant différentes valeurs de f entre 0 et 1. La valeur optimale de f correspond à la valeur la plus élevée de TWR.

3. Une fois quevous avez trouvé f, prenez la racine du degré N TWR (N est le nombre total de transactions). C'est votre moyenne géométrique pour ce système de marché. Vous pouvez maintenant utiliser la moyenne géométrique obtenue pour comparer ce système avec d'autres. La valeur f vous indiquera le nombre de contrats à négocier dans ce système de marché. Une fois que f est trouvé, il peut être converti en équivalent monétaire en divisant la plus grosse perte par l'optimum négatif/. Par exemple, si la perte la plus importante est égale à 100 $, et que le f optimal = 0,25, alors -100 $ / -0,25 = 400 $. En d'autres termes, vous devez miser 1 unité pour chaque compte de 400 $. Pour simplifier, vous pouvez tout calculer sur la base d'une unité (par exemple, un jeton de 5 $, un contrat à terme ou 100 actions). Le nombre de dollars à allouer à chaque unité peut être calculé en divisant votre perte la plus importante par le f optimal négatif. Lef optimal est le résultat de l'équilibre entre la rentabilité du système (basé sur 1 unité) et son risque (basé sur 1 unité). De nombreuses personnes pensent que la fraction fixe optimale est le pourcentage du compte qui est alloué

.

Il serait peut-être judicieux de passer aux logarithmes. Remplacer le produit par la somme
 
Vinin:

Il serait peut-être judicieux de passer aux logarithmes. Remplacer le produit par la somme


Merci Victor, c'est possible, je vais devoir essayer, mais pour l'instant je teste cette option de réduire le produit - en le prenant à la puissance 1/3.

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


Eh bien, comment - parce que c'est exactement ce que j'ai fait, seulement directement par rapport à TWR - mais pas par rapport à sa moyenne géométrique G.

" Car si la racine de degré K du nombre_1 est supérieure à la racine de même degré K du nombre_2, alors le nombre_1 est supérieur au nombre_2 ! ". :))))))"

LeTWR est le "capital fini relatif" (Terminal Wealth Relative) ,

Vous avez une transaction manquante :

TWR = TWR* ...

Je ne sais pas comment cela affectera le calcul du lot Vince, mais ma recommandation était de ne pas exclure cette opération.

Ma suggestion était de faire du tableau TWR[]. Et G compte comme ça :

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


Romain.:


Merci Victor, c'est possible, je vais devoir essayer, mais pour l'instant je teste cette variante de réduction du produit - en le prenant à la puissance 1/3.

Même si vous supprimez la racine du troisième degré, il n'y aura toujours pas de double débordement.
 
Roman.:
for ( orderIndex = 1;orderIndex<Qnt; orderIndex++) //при заданной f проходим по всем закрытым ордерам
{                                                  // и считаем относительный конечный капитал (TWR)
   TWR = TWR*(1+f*(-Mas_Outcome_of_transactions[orderIndex]/(D))); // TWR - это произведение всех HPR
}

Pourquoi avez-vous la condition "orderIndex<Qnt" dans la boucle for() ? Donc vous sautez le dernier élément du tableau TWR ?
 
MaxZ:

Vous avez une opération manquante :

Je ne sais pas comment cela affectera le calcul du lot Vince, mais ma recommandation était de ne pas exclure cette opération.

J'ai suggéré de faire le tableau TWR[]. Et G compte comme ça :


Même si vous supprimez la racine du troisième degré, il n'y aura toujours pas de double débordement.


J'ai un dépassement, toutes choses étant égales par ailleurs, y compris la valeur totale : nombre de trades = 503 et perte maximale = 628...

Vous devriez vérifier chez vous, sur n'importe lequel de vos tableaux - le code est affiché sur la première page - ajoutez dans les variables externes et dans la fonction de-enith... C'est tout.

 

MaxZ:


Et pourquoi avez-vous exactement la condition "orderIndex<Qnt" dans votre boucle for() ? Il s'avère que vous sautez le dernier élément du tableau TWR ?


Il n'y a pas de tableau de TWR du tout, il n'est pas nécessaire de l'organiser, il suffit de calculer f et c'est tout, il est seulement intéressant de comparer les TWR à différents f (dans la boucle) et c'est tout, de connaître la valeur de f au TWR maximal et c'est tout.

Tout fonctionne bien là, comparez - première et dernière lignes - la valeur du profit sur la dernière transaction des onglets "Journal" et "Résultat" respectivement...


Les numéros de transaction sont différents, car dans ma chouette, la clôture va du dernier ordre du marché au premier. L'essentiel est que le nombre bat - 503 donne - là (dans le testeur) et là (dans le calcul) +

valeur de la dernière transaction fermée 503 1076 - la recherche d'ordre par historique dans la fonction de-it est effectuée depuis le début jusqu'à la (dernière) transaction fermée.

 
Roman.:


Tableau TWR - il n'est pas du tout nécessaire de l'organiser, il suffit de calculer f et c'est tout, il n'est intéressé que par la comparaison TWR à différents f (dans une boucle) et tout, pour connaître la valeur f au TWR maximum et c'est tout.

Tout fonctionne bien là comparer - première et dernière lignes - la valeur du profit sur la dernière transaction des onglets "Log" et "Resultat" respectivement...


J'ai été complètement confus. Je voulais dire le tableau Mas_Qutcome_of_transactions[]. Car il s'avère qu'un de ses éléments n'est pas compté dans une boucle...

Et pourquoi devrais-je regarder le rapport si je vois une inexactitude dans le code ? Je ne crois pas aux miracles ! :D

Et peut-être que les transactions fermées par le testeur ne devraient pas être prises en compte ? Après tout, ce n'est pas votre TS qui les a fermés...

 
MaxZ:

Je suis complètement perdue. Je voulais dire le tableau Mas_Qutcome_of_transactions[]. Parce qu'il s'avère que la boucle ne compte pas un élément en elle...

Et pourquoi devrais-je regarder le rapport si je vois une inexactitude dans le code ? Je ne crois pas aux miracles ! :D

Et peut-être que les transactions fermées par le testeur ne devraient pas être prises en compte ? Ce n'est pas par votre TS qu'ils ont été fermés...


Oui, je vais vérifier avec la condition <=Qnt. Toutes les transactions ont été clôturées par TS, le testeur a clôturé les 10 dernières (je pense que cela reste dans une tolérance raisonnable... :-))))