Mon 1er Système, suggestion d'amélioration

Viewing 15 posts - 1 through 15 (of 32 total)
  • Author
    Posts
  • #9271 quote
    AstonAddict
    Participant
    Average

    Bonjour,

    Je vous partage mon premier système. Soyez indulgent, je ne suis ni trader ni programmeur 😉

    C’est un système très simple sur IG DAX 5€ qui fonctionne en réel depuis début mai sans surprise par rapport au backtest, car je suis sur UT 1M donc peu de chance d’avoir SL et TP sur la même bougie. Le programme tourne simultanément sur mes comptes démo et réel, et à part un slippage de temps en temps, je n’ai pas de différence. (spread à 1)

    En gros je short (j’ai le même set up en version longue) un surachat lorsque les prix sont en baisse par rapport à la cloture de la veille et l’ouverture du jour.

    Parmi ce que je souhaite améliorer, je souhaite filtrer les retournements durable de tendance à la hausse mais je n’ai pas trouvé d’indicateur efficace, en tout cas pas pertinent avec les réglages standard. Le multitimeframe serait probablement une solution, ou paramétrer un indicateur sur une UT plus longue.

    Je filtre les retournements haussiers brutaux en contrôlant la pente d’une MM20 mais là aussi il doit y avoir mieux à faire.

    J’ai tenté d’utiliser les divergence grâce au code que Nicolas m’a donné sur un autre post sans succès.

    Bref j’ai fait le gros oeuvre, mais j’ai besoin d’infos des spécialistes pour les finitions 😉

     

    // Définition des paramètres du code
    DEFPARAM CumulateOrders = False // Cumul des positions désactivé
    DEFPARAM Flatbefore = 093000
    DEFPARAM Flatafter = 173500
    DEFPARAM Preloadbars = 600
    
    // Aucune nouvelle position prise après le chandelier qui clôture à 17h
    HeureLimite = 171500
    
    
    // Conditions pour ouvrir une position vendeuse
    indicator1 = RSI[14](close)
    c1 = indicator1[1] > 72 AND (indicator1[1]-indicator1)>0 AND indicator1 > 62
    
    IF TIME = 090000 THEN
    ouverture = close
    ENDIF
    
    IF TIME = 173500 THEN
    cloture = close
    ENDIF
    
    
    //Ecart à l'ouverture
    c2 = close < ouverture
    //Ecart par rapport à la veille
    c3 = close < cloture
    
    //Filtrage tendance fortement haussière
    indicator2 = Average[20](close)
    c4= (indicator2 - indicator2[1])<2.5
    
    //Prise de position
    IF Time <= HeureLimite AND c1 AND c2 AND c3 AND C4 AND NOT ONMARKET THEN
    SELLSHORT 1 CONTRACT AT MARKET
    ENDIF
    
    //SL et TP
    SET TARGET pPROFIT 15
    SET STOP pLOSS 20
    

    [attachment file=9272]

    Le break even est à 57,14 % ce qui me laisse entre 17 et 18 % de marge.

    Merci pour vos commentaires.

    Bon Dimanche.

    jonjon thanked this post
    #9294 quote
    Nicolas
    Keymaster
    Master

    Bonjour Aston et merci pour le partage.

    C’est en effet fonctionnel ! Bravo, c’est aussi bien en version “achat”?

    Par contre, tu peux avoir plusieurs ordres le même jour si le premier a atteint son TP, c’est voulu ?

    #9296 quote
    AstonAddict
    Participant
    Average

    En version achat cela fonctionne bien aussi mais j’ai moins de signaux compte tenu de l’historique limité à octobre 2015 en UT1 et une période plutôt baissière (je sépare toujours mes set up short et long en deux systèmes différents).

    Par contre je n’avais pas pensé à limiter à 1 trade par jour. J’ai moins de trade, mais + de 80 % de positions gagnantes et un ration à 3,24. Merci pour la suggestion !

    Cela vient certainement du problème que je cherche à traiter, qui est d’identifier les situations de retournement de tendance en intraday. J’ai parfois 2 ou 3 trades gagnants tant que la tendance baissière dure, puis je peux avoir 1 ou 2 trades perdants lorsque le marché remonte vers le cours d’ouverture (après la condition de short n’est plus remplie close<ouverture).

    As-tu une idée pour que je puisse conserver plusieurs ordres par jours, en filtrant les retournements “définitifs” de tendance, car limiter à 1 trade fait “perdre” 30 trades gagnants sur la durée du backtest ?

     

    Merci

    #9298 quote
    Nicolas
    Keymaster
    Master

    Avec de simples moyennes mobiles (1 longue et 1 plus courte) dessus/dessous, tu pourrai sans doute limiter les successions de trades perdants inutiles après la fermeture du premier gagnant.

    #9300 quote
    AstonAddict
    Participant
    Average

    J’ai essayé mais ce n’est pas très efficace, notamment sur le premier trade perdant, les MM sont en retard.

    J’ai testé MACD et quelques autres indicateurs aussi mais rien de très pertinents. Je pense qu’ils sont trop réactifs en UT1, alors qu’il faut détecter un retournement de tendance plus “structurel”.

    #9301 quote
    Pascal
    Participant
    Average

    Bonjour Aston, félicitation pour ton travail.

    Je me lance dans une suggestion peut être inutile avec ce TF… Pour rentrer avec un meilleur timing mais aussi éviter une poussée haussière, pourquoi ne pas attendre que le RSI croisse à la baisse un niveau (70) ?

    #9303 quote
    AstonAddict
    Participant
    Average

    @Pascal, j’ai déjà testé cette version mais c’est moins bien, c’est aussi pour cela que la position n’est pas prise si le RSI < 62, sinon le potentiel de repli est déjà trop entamé.

    #9307 quote
    Pascal
    Participant
    Average

    Désolé je n’avais pas décrypté ton code, je débute dans la programmation !

    D’ ailleurs si tu as un moment, pourrais tu m’aider à le décrypter ? Et je pourrais alors partager ton aide sur la file pour les débutants que je viens d’ouvrir.

    Que fait le [1] dans les deux exemples ?

    // Conditions pour ouvrir une position vendeuse
    indicator1 = RSI[14](close)
    c1 = indicator1[1] > 72 AND (indicator1[1]-indicator1)>0 AND indicator1 > 62
    
    
    
    //Filtrage tendance fortement haussière
    indicator2 = Average[20](close)
    c4= (indicator2 - indicator2[1])<2.5
    
    Merci de ton aide
    #9308 quote
    Nicolas
    Keymaster
    Master

    Dans ce cas pourquoi ne pas fermer le premier trade avec un trailing plutôt que d’utiliser un profit fixe en points. Si plusieurs trades gagnants peuvent survenir dans tes statistiques alors peut-être qu’un seul Trade qui trail le profit pourrait les remplacer. Tu peux utiliser  les fonctions de mes 2 derniers articles pour ça.

    HerveS_67 thanked this post
    #9314 quote
    AstonAddict
    Participant
    Average

    @Pascal, le chiffre entre crochet permet de récupérer la valeur d’un indicateur sur la nième bougie précédente [n]. Tu devrais commencer si ce n’est déjà fait à lire les manuels de programmation PRT, cela t’aidera bcp.


    @Nicolas
    , j’ai testé avec un suiveur dont j’avais posté le code ici pour mémoire, mais ce n’est pas si efficace que cela en intraday. La stratégie a besoin d’un SL à 20 pour que le mouvement de baisse se forme, ce qui veut dire que pour qu’un trailing donne plus de 20 pts de profit, il faut que je gagne au moins 40 pts avant de reperdre la valeur du trailing. Même avec un pas ou en réduisant la valeur du trailing en cours de trade ça ne donne pas d’aussi bon résultat, je suis donc revenu à un TP.

    #9334 quote
    Sofitech
    Participant
    New

    Jamais évident de capter une tendance longue sans accroître son drawdown. Je trouve à l’inverse qu’on peut avoir pour objectif de limiter son drawdown tout en maintenant un % (très) élevé de trades gagnants.
    Avec un filtre MM10 au lieu de 20, on améliore les deux. Drawdown + % de trades gagnants.
    J’ai testé d’autres indicateurs de tendance mais sans amélioration notable. Je verrai avec d’autres MM.

    Aurais-tu la possibilité de poster le code achat ?

    #9341 quote
    AstonAddict
    Participant
    Average

    @Sofitech, tu as mis quoi comme pente maxi pour ta MM10 ?

    Ci dessous le code “Long” limité à 1 trade par jour. Ca permet de remonter le TP au même niveau que le SL. 68 % de trades gagnants et ration à plus de 2

    // Définition des paramètres du code
    DEFPARAM CumulateOrders = False // Cumul des positions désactivé
    DEFPARAM Flatbefore = 093000
    DEFPARAM Flatafter = 173500
    
    
    // Aucune nouvelle position prise après le chandelier qui clôture à 17h15
    HeureLimite = 171500
    
    
    // Conditions pour ouvrir une position acheteuse
    indicator1 = RSI[14](close)
    
    c1 = indicator1[1]< 26 AND (indicator1[1]-indicator1)< 0 AND indicator1 < 32
    
    //Récupération clôture et ouverture
    IF TIME = 090000 THEN
    ouverture = close
    UnTradeParJour = 0
    ENDIF
    
    IF TIME = 173500 THEN
    cloture = close
    ENDIF
    
    
    //Ecart à l'ouverture
    c2 = close > ouverture
    //Ecart par rapport à la veille
    c3 = close > cloture
    
    //Filtre retournement
    indicator2 = Average[20](close)
    c4= (indicator2[1]-indicator2)<2.5
    
    //Prise de position
    IF Time <= HeureLimite AND c1 AND c2 AND c3 AND c4 AND UnTradeParJour = 0 AND NOT ONMARKET THEN
    BUY 1 CONTRACT AT MARKET
    UnTradeParJour = 1
    ENDIF
    
    // SL et TP
    SET TARGET PPROFIT 20
    SET STOP PLOSS 20
    
    #9361 quote
    Sofitech
    Participant
    New

    @Astonaddict.

    Merci pour le code achat.
    Pour répondre à ta questions, j’ai simplement modifier la partie filtre de tendance comme ceci :
    //Filtrage tendance fortement haussière
    indicator2 = Average[10](close)
    c4= (indicator2 – indicator2[1])<2.5

    J’ai fait d’autres essais avec des indicateurs de tendances, j’en ferais certainement d’autres. Je posterai si je trouve des pistes pour améliorer le système.

    #9395 quote
    Sofitech
    Participant
    New

    Sur le système de vente à découvert, on peut avoir donc une MM10 en filtrage (j’ai essayé sans meilleurs résultats d’autres filtres) et ajouter un MM tel que celui décrit sur le blog.
    Les résultats me semblent intéressants… et non biaisés car en M1, on ne sort que fort rarement en 1ère bougie (les résultats le confirment d’ailleurs).
    L’approche est bonne. Il y a certainement des pistes à explorer pour améliorer.
    Ci-dessous le code :

    // Conditions pour ouvrir une position acheteuse
    // Définition des paramètres du code
    DEFPARAM CumulateOrders = False // Cumul des positions désactivé
    DEFPARAM Flatbefore = 093000
    DEFPARAM Flatafter = 173500
    DEFPARAM Preloadbars = 600
    
    REM Money Management
    Capital = 10000
    Risk = 0.01
    StopLoss = 10 // Could be our variable X
    
    REM Calculate contracts
    equity = Capital + StrategyProfit
    maxrisk = round(equity*Risk)
    PositionSize = abs(round((maxrisk/StopLoss)/PointValue)*pipsize)
    // Aucune nouvelle position prise après le chandelier qui clôture à 17h
    HeureLimite = 171500
    // Conditions pour ouvrir une position vendeuse
    indicator1 = RSI[14](close)
    c1 = indicator1[1] > 72 AND (indicator1[1]-indicator1)>0 AND indicator1 > 62
    
    IF TIME = 090000 THEN
    ouverture = close
    ENDIF
    
    IF TIME = 173500 THEN
    cloture = close
    ENDIF
    //Ecart à l'ouverture
    c2 = close < ouverture
    //Ecart par rapport à la veille
    c3 = close < cloture
    
    //Filtrage tendance fortement haussière
    indicator2 = Average[10](close)
    c4= (indicator2 - indicator2[1])<2.5
    
    //Prise de position
    IF Time <= HeureLimite AND c1 AND c2 AND c3 AND C4 AND NOT ONMARKET THEN
    SELLSHORT PositionSize CONTRACTS AT MARKET
    ENDIF
    
    //SL et TP
    SET TARGET pPROFIT 15
    SET STOP pLOSS 15/1.5
    #9402 quote
    AstonAddict
    Participant
    Average

    Ok

    A quoi sert le “/1.5” dans SET STOP pLOSS 15/1.5, je ne connais pas cette fonction ?

Viewing 15 posts - 1 through 15 (of 32 total)
  • You must be logged in to reply to this topic.

Mon 1er Système, suggestion d'amélioration


Support ProOrder

New Reply
Author
Summary

This topic contains 31 replies,
has 8 voices, and was last updated by JR1976
8 years, 5 months ago.

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