Documentation

Dernière mise à jour le 25. 6. 2015 par Mark Fric

Ajouter une nouvelle colonne Monte Carlo

Un exemple de la façon d'ajouter une nouvelle valeur dans la méthode de Monte Carlo.

Quel est l'objet de la mission ?

Par défaut, lorsque vous exécutez une simulation de Monte Carlo, vous obtenez des résultats de simulation pour des niveaux de confiance donnés.
La simulation MC calcule les résultats tels que le bénéfice net, le bénéfice net %, le rendement / DD, etc. pour un niveau de confiance donné.

L'utilisateur du forum a demandé le calcul d'une nouvelle valeur personnalisée - le nombre de transactions perdantes consécutives.

Comme beaucoup d'autres choses, les valeurs (colonnes) du rapport Monte Carlo sont calculées à l'aide d'extraits, il est donc possible de les étendre et d'ajouter les vôtres.

Dans cet article, nous allons montrer comment ajouter une nouvelle valeur MC qui calcule le nombre de transactions perdantes consécutives pour tous les niveaux de confiance de Monte Carlo.

Étape 1 - Créer un nouvel extrait de valeur Monte Carlo

Comme tous les autres snippets, les snippets Monte Carlo sont modifiables dans QuantEditor, nous allons donc les lancer :

Nous allons maintenant créer un nouvel extrait qui calculera nos ordres perdants consécutifs :

Cela créera un squelette de snippet que nous pourrons étendre pour faire ce que nous voulons. Nous allons passer en revue les fonctions du snippet une par une.

Dans le constructeur, nous devons définir le nom de la colonne et l'ordre. Si les meilleures valeurs sont les plus élevées, nous devons définir MAXIMIZE.
Dans notre cas, les meilleures valeurs sont les plus basses (le plus petit nombre possible de transactions perdantes consécutives), nous allons donc régler l'ordre sur MINIMIZE.

Ceci est important pour que le programme sache comment trier les résultats lorsqu'il calcule les résultats pour chaque niveau de confiance.

public ConsecutiveLosingOrders() {
   super("ConsecutiveLosingOrders", FitnessFunction.MINIMIZE) ;

 


setColumnName(L.t("Ordres perdants consécutifs")) ;
setColumnWidth(100) ;
setTooltip(L.t("Ordres perdants consécutifs")) ;
}
méthode calculer() est le cœur de notre extrait, il contient le code qui effectue le calcul du nombre maximum d'ordres perdants consécutifs.
L'algorithme de calcul est très simple : il parcourt le tableau des ordres et se souvient de la plus grande série d'ordres perdants.

protected double compute(MonteCarloStatValues statValues, double initialCapital, double[] orders, double avgTradesPerMonth) throws Exception {
   int maxConsecLosingOrders = 0 ;
   int consecLosingOrders = 0 ;

for(int i=0 ; i<orders.length ; i++) {
if(orders[i] > 0) {
// il s'agit d'un ordre gagnant, remettre le compteur à zéro
consecLosingOrders = 0 ;
} else {
// il est en train de perdre l'ordre
consecLosingOrders++ ;

if(consecLosingOrders > maxConsecLosingOrders) {
maxConsecLosingOrders = consecLosingOrders ;
}
}
}

return maxConsecLosingOrders ;
}

La dernière fonction sert à formuler la valeur calculée.

public String formatValue(double value) {
   return String.valueOf((int) valeur) ;
}

C'est tout, nous pouvons appuyer sur la touche Compiler et notre nouveau snippet devrait être compilé sans erreur.

Étape 2 - ajouter notre nouvelle valeur à la vue

Si nous regardons le tableau Monte Carlo dans Quant Analyzer, nous verrons que notre nouvelle colonne n'y est toujours pas visible. C'est parce que les colonnes visibles sont gérées dans les vues.

Nous devons cliquer sur Configurer la vue dans le coin supérieur droit du tableau pour ajouter une nouvelle colonne à la vue :

Ici, nous devons ajouter la colonne Ordres perdants consécutifs à la liste des colonnes affichées à droite.

Une fois que c'est fait, nous pouvons voir que notre tableau de résultats de Monte Carlo contient maintenant aussi la colonne des ordres perdants consécutifs avec les valeurs calculées :

C'est tout ce qui était nécessaire pour ajouter une nouvelle valeur aux résultats de Monte Carlo.

Vous pouvez voir que c'est simple, le seul véritable défi est de mettre en œuvre correctement la fonction calculer() de manière à ce qu'elle calcule ce que vous voulez.

Cet article a-t-il été utile ? L'article était utile L'article n'était pas utile

S'abonner
Notification pour
0 Commentaires
Commentaires en ligne
Afficher tous les commentaires