Problème de backtest : stratégie des TORTUES

Viewing 5 posts - 1 through 5 (of 5 total)
  • Author
    Posts
  • #10558 quote
    Doctrading
    Participant
    Master

    Bonjour à tous,

    Je tente de coder la fameuse “stratégie des tortues”.

    Chose bizarre, la sortie ne s’effectue pas au plus bas des X dernières bougies (X = 10 pour le “système 1” et X = 20 pour le “système 2”).

     

    Le stop loss à l’ATR20 semble bien fonctionner.

    Sur la capture d’écran (DAX index, juste pour l’essai, alors que les tortues ne tardaient pas directement le Dax), on voit clairement que la dernière position “long” est maintenue bien plus qu’elle ne le devrait. On devrait sortir sur le plus bas des 10 dernières bougies.

    De ce fait, mon code n’est pas profitable sur les matières premières entre autres.

     

    Voyez-vous où se trouve l’erreur ?

    Merci par avance.

     

    Voici le code :

    // SYSTEME DE TRADING DES TORTUES
    // REGLES ORIGINALES
    
    
    // 2 SYSTEMES : valeur 1 ou 2
    SYSTEME = 1
    
    
    // INDICATEURS
    ATR20 = AverageTrueRange[20](close)
    HAUT20 = Highest[20](high)
    BAS20 = Lowest[20](low)
    HAUT55 = Highest[55](high)
    BAS55 = Lowest[55](low)
    HAUT10 = Highest[10](high)
    BAS10 = Lowest[10](low)
    
    
    // ACHAT
    IF not onmarket THEN
    
    IF SYSTEME = 1 THEN
    Buy at HAUT20 stop
    ELSIF SYSTEME = 2 THEN
    Buy at HAUT55 stop
    ENDIF
    
    // SORTIE ACHAT
    IF SYSTEME = 1 THEN
    sell at BAS10 stop
    ELSIF SYSTEME = 2 THEN
    sell at BAS20 stop
    ENDIF
    
    ENDIF
    
    
    // VENTE
    IF not onmarket THEN
    
    IF SYSTEME = 1 THEN
    Sellshort at BAS20  stop
    ELSIF SYSTEME = 2 THEN
    Sellshort at BAS55 stop
    ENDIF
    
    // SORTIE VENTE
    IF SYSTEME = 1 THEN
    exitshort at HAUT10 stop
    ELSIF SYSTEME = 2 THEN
    exitshort at HAUT20 stop
    ENDIF
    
    ENDIF
    
    
    // STOP LOSS
    Set stop loss ATR20
    
    #10562 quote
    Nicolas
    Keymaster
    Master

    C’est tout à fait normal car le lowest low et le highest high évolue en temps réel, tu dois donc faire référence à leurs valeurs dans le passé pour effectuer des tests.

    Je ne vois pas de taille de position dans les instructions de vente et d’achat non plus.

    #10572 quote
    Doctrading
    Participant
    Master

    Merci.

    Je vais donc définir le lowest[n](low[1]) et faire l’essai.
    Si le code fonctionne bien je le mettrai en librairie.

    Je n’ai pas mis d’instructions de taille de positions exprès, pas besoin : par défaut lorsqu’on ne met rien, PRT met “1 share”.

    #10740 quote
    Doctrading
    Participant
    Master

    Bonjour,

     

    Je pense avoir pourtant bien corrigé l’erreur, mais ça ne fonctionne pas mieux.
    Voici le code.
    Merci pour l’aide !

     

    // SYSTEME DE TRADING DES TORTUES
    // REGLES ORIGINALES
    
    
    // 2 SYSTEMES : valeur 1 ou 2
    SYSTEME = 1
    
    
    // INDICATEURS
    ATR20 = AverageTrueRange[20](close)
    HAUT20 = Highest[20](high)
    BAS20 = Lowest[20](low)
    HAUT55 = Highest[55](high)
    BAS55 = Lowest[55](low)
    HAUT10 = Highest[10](high)
    BAS10 = Lowest[10](low)
    
    
    // ACHAT
    IF not onmarket THEN
    
    IF SYSTEME = 1 THEN
    Buy at HAUT20 stop
    ELSIF SYSTEME = 2 THEN
    Buy at HAUT55 stop
    ENDIF
    
    // SORTIE ACHAT
    IF SYSTEME = 1 THEN
    sell at BAS10[1] stop
    ELSIF SYSTEME = 2 THEN
    sell at BAS20[1] stop
    ENDIF
    
    ENDIF
    
    
    // VENTE
    IF not onmarket THEN
    
    IF SYSTEME = 1 THEN
    Sellshort at BAS20  stop
    ELSIF SYSTEME = 2 THEN
    Sellshort at BAS55 stop
    ENDIF
    
    // SORTIE VENTE
    IF SYSTEME = 1 THEN
    exitshort at HAUT10[1] stop
    ELSIF SYSTEME = 2 THEN
    exitshort at HAUT20[1] stop
    ENDIF
    
    ENDIF
    
    
    // STOP LOSS
    Set stop loss ATR20
    
    #11322 quote
    JC_Bywan
    Moderator
    Master

    Bonjour, je pense que tes conditions de sorties d’achat et de sorties de vente seraient plus heureuses de vivre leur vie en dehors de tes boucles “if not onmarket” plutôt qu’en dedans, puisque par définition si tu veux sortir des positions, c’est que tu es “on market”. Là du coup tes boucles if de sorties ne sont jamais visitées par le programme.

    En déplaçant 2 endif donc, ça donnerait (sans avoir cherché à vérifier si le reste était ok ou pas):

    // SYSTEME DE TRADING DES TORTUES
    // REGLES ORIGINALES
    
    
    // 2 SYSTEMES : valeur 1 ou 2
    SYSTEME = 1
    
    
    // INDICATEURS
    ATR20 = AverageTrueRange[20](close)
    HAUT20 = Highest[20](high)
    BAS20 = Lowest[20](low)
    HAUT55 = Highest[55](high)
    BAS55 = Lowest[55](low)
    HAUT10 = Highest[10](high)
    BAS10 = Lowest[10](low)
    
    
    // ACHAT
    IF not onmarket THEN
    
    IF SYSTEME = 1 THEN
    Buy at HAUT20 stop
    ELSIF SYSTEME = 2 THEN
    Buy at HAUT55 stop
    ENDIF
    
    ENDIF
    
    // SORTIE ACHAT
    IF SYSTEME = 1 THEN
    sell at BAS10 stop
    ELSIF SYSTEME = 2 THEN
    sell at BAS20 stop
    ENDIF
    
    
    // VENTE
    IF not onmarket THEN
    
    IF SYSTEME = 1 THEN
    Sellshort at BAS20  stop
    ELSIF SYSTEME = 2 THEN
    Sellshort at BAS55 stop
    ENDIF
    
    ENDIF
    
    // SORTIE VENTE
    IF SYSTEME = 1 THEN
    exitshort at HAUT10 stop
    ELSIF SYSTEME = 2 THEN
    exitshort at HAUT20 stop
    ENDIF
    
    
    // STOP LOSS
    Set stop loss ATR20
Viewing 5 posts - 1 through 5 (of 5 total)
  • You must be logged in to reply to this topic.

Problème de backtest : stratégie des TORTUES


Support ProOrder

New Reply
Author
author-avatar
Doctrading @doctrading Participant
Summary

This topic contains 4 replies,
has 3 voices, and was last updated by JC_Bywan
9 years, 5 months ago.

Topic Details
Forum: Support ProOrder
Language: French
Started: 07/18/2016
Status: Active
Attachments: 1 files
Logo Logo
Loading...