ProRealCode - Trading & Coding with ProRealTime™
Bonjour,
Avant de mettre en live une stratégie qui me parait cohérente (cela serait un première pour moi) j’aurais besoin de l’avis des experts du forum afin qu’ils me disent si ils voient une objection à le faire à la vue des données suivantes.
Surtout n’hésitez pas si vous avez des critiques (constructives). Je tiens à préciser que la stratégie (que j’applique en manuel) n’est pas encore totalement optimisée et j’ai conscience que le drawdown doit être réduit.
Merci.
Attention si tu comptes lancer ta stratégie sur un compte CFD, tu as développé ton système sur un contrat Futures, les données ne sont pas les mêmes.
Bonjour Nicolas,
Merci pour ta réponse. Etant débutant dans le domaine j’ai du mal à voir ce que cela change entre un compte future ou un compte CFD concernant ma stratégie.
J’essayais justement de joindre ce matin (sans succès) un conseiller Prorealtime pour le choix du broker entre IB et IG.
Le trading automatique avec IB n’est pas encore possible. Donc ton choix devrait s’orienter vers un compte IG sponsorisé avec ProRealTime, voir: https://trading.prorealtime.com/fr/ig
Merci. Au moins cela simplifie les choses.
Juste une dernière question. Comment puis je backtester ma strategie sur un CFD Dax. Je n’arrive pas à le trouver dans la liste de mes instruments. Est ce dû à mes options (j’ai indices et ETF Allemagne + Future Mini Dax) ?
J’aimerai juste backtester ma strategie sur CFD avant de lancer le process d’ouverture de compte.
Salut Grdchef,
Si tu le souhaite partage nous le code et détaille nous ta stratégie. Ca serait intéressant également d’avoir une copie d’écran des statistiques détaillées des trades longs et courts avec le drawdown.
A chaud, je note deux choses qui attirent mon attention. Tout d’abord ton backtest est fait sur une durée d’un an. Cela ne me semble pas suffisant pour garantir la robutesse des résultats. Une durée de 5 ans me semble un minimum pour couvrir des périodes de hausse comme actuellement, des baisses et des ranges.
Je remarque également que la stratégie est moins performante avant mars 2020. Pourquoi?
J’espère que ses pistes de réflexion pourront t’aider^^
Bonjour,
Merci beaucoup Magifina pour ton retour.
Comme demandé tu pourras trouver joint les statistiques des trades longs/courts (période de 1 an).
Malheureusement je n’ai pas encore pris la version premium afin d’avoir un historique supérieur (j’ai dû me connecter 3 fois à mon compte Prorealtime ces 6 derniers mois) mais tu as raison sur la durée de 5 ans minimum.
Concernant la stratégie elle n’est pas très compliquée. Achat (ou vente) lorsqu’il y a 2 bougies clôturées au dessus (en dessous) de la Tenkan Sen. Clôture de la position lorsqu’il y a 2 bougies clôturées en dessous (au dessus) (en gain ou en perte) avec un stop à 45 (pour un 15mn) et une limite à 75 (pour un 15 mn). A cela j’ai rajouté une sécurité dés que l’ATR est supérieur à 50. Je considère que tout robot devrait se déconnecter automatiquement dés que la volatilité devient trop forte. C’est d’ailleurs ce qu’il aurait fait dans le backtest de fin Février à début Avril. Les positions sont prises de 7H00 à 17H00 toutes les positions sont clôturées à 17H00 qu’elles soient en gain ou en perte (pas d’overnight).
Voici le code correspondant à cette stratégie. Il faut être indulgent car même si j’applique cette stratégie en manuel aujourd’hui (sur un timeframe différent) concernant le code je l’ai fait en une journée en partant de 0 sur mes connaissances de prorealcode. J’ai conscience que ce programme est encore à optimiser.
// Définition des paramètres du code
DEFPARAM CumulateOrders = False // Cumul des positions désactivé
// Annule tous les ordres en attente et ferme toutes les positions à 0:00, puis empêche toute création d’ordre avant l’heure “FLATBEFORE”.
DEFPARAM FLATBEFORE = 070000
// Annule tous les ordres en attente et ferme toutes les positions à l’heure “FLATAFTER”
DEFPARAM FLATAFTER = 170000
// Empêche le système de placer des ordres pour entrer sur le marché ou augmenter la taille d’une position après l’heure spécifiée
noEntryAfterTime = 170000
timeEnterAfter = time < noEntryAfterTime
// Empêche le système de placer de nouveaux ordres sur les jours de la semaine spécifiés
daysForbiddenEntry = OpenDayOfWeek = 6 OR OpenDayOfWeek = 0
// Conditions pour ouvrir une position acheteuse
indicator1 = TenkanSen[9,26,52]
c1 = (close[2] < indicator1[2])
c2 = (close[1] > indicator1[1])
c3 = (close > indicator1)
c4 = (close[1] > close[2])
c5 = (close > close[1])
indicator2 = AverageTrueRange[14](close)
c6 = (indicator2 < 50)
IF (c1 AND c2 AND c3 AND c4 AND c5 AND c6) AND not daysForbiddenEntry THEN
BUY 1 SHARES AT MARKET
ENDIF
// Conditions pour fermer une position acheteuse
c7 = (close[2] < indicator1[2])
c8 = (close[1] < indicator1[1])
c9 = (close < indicator1)
c10 = (close[2] < close[3])
c11 = (close[1] < close[2])
c12 = (close < close[1])
IF c8 AND c9 AND c11 AND c12 THEN
SELL AT MARKET
ENDIF
IF c7 AND c9 AND c10 AND C12 THEN
SELL AT MARKET
ENDIF
// Conditions pour ouvrir une position en vente à découvert
c13 = (close[2] > indicator1[2])
c14 = (close[1] < indicator1[1])
c15 = (close < indicator1)
c16 = (close[1] < close[2])
c17 = (close < close[1])
c18 = (indicator2 < 50)
IF (c13 AND c14 AND c15 AND c16 AND c17 AND c18) AND not daysForbiddenEntry THEN
SELLSHORT 1 SHARES AT MARKET
ENDIF
// Conditions pour fermer une position en vente à découvert
c19 = (close[2] > indicator1[2])
c20 = (close[1] > indicator1[1])
c21 = (close > indicator1)
c22 = (close[2] > close[3])
c23 = (close[1] > close[2])
c24 = (close > close[1])
IF c20 AND c21 AND c24 AND c23 THEN
EXITSHORT AT MARKET
ENDIF
IF c19 AND c21 AND c24 AND c22 THEN
EXITSHORT AT MARKET
ENDIF
// Stops et objectifs
SET STOP pLOSS 45
SET TARGET pPROFIT 75
N’hésite pas à dire si tu as d’autres remarques.
Merci.
PS: Concernant la remarque de Nicolas je ne comprend toujours pas qu’elles peuvent être les différences dans un backtest entre une stratégie sur futures ou en CFD. Si tu as la réponse je suis preneur.
Bouton “insert PRT code” svp!!!
// Définition des paramètres du code
DEFPARAM CumulateOrders = False // Cumul des positions désactivé
// Annule tous les ordres en attente et ferme toutes les positions à 0:00, puis empêche toute création d’ordre avant l’heure “FLATBEFORE”.
DEFPARAM FLATBEFORE = 070000
// Annule tous les ordres en attente et ferme toutes les positions à l’heure “FLATAFTER”
DEFPARAM FLATAFTER = 170000
// Empêche le système de placer des ordres pour entrer sur le marché ou augmenter la taille d’une position après l’heure spécifiée
noEntryAfterTime = 170000
timeEnterAfter = time < noEntryAfterTime
// Empêche le système de placer de nouveaux ordres sur les jours de la semaine spécifiés
daysForbiddenEntry = OpenDayOfWeek = 6 OR OpenDayOfWeek = 0
// Conditions pour ouvrir une position acheteuse
indicator1 = TenkanSen[9,26,52]
c1 = (close[2] < indicator1[2])
c2 = (close[1] > indicator1[1])
c3 = (close > indicator1)
c4 = (close[1] > close[2])
c5 = (close > close[1])
indicator2 = AverageTrueRange[14](close)
c6 = (indicator2 < 50)
IF (c1 AND c2 AND c3 AND c4 AND c5 AND c6) AND not daysForbiddenEntry THEN
BUY 1 SHARES AT MARKET
ENDIF
// Conditions pour fermer une position acheteuse
c7 = (close[2] < indicator1[2])
c8 = (close[1] < indicator1[1])
c9 = (close < indicator1)
c10 = (close[2] < close[3])
c11 = (close[1] < close[2])
c12 = (close < close[1])
IF c8 AND c9 AND c11 AND c12 THEN
SELL AT MARKET
ENDIF
IF c7 AND c9 AND c10 AND C12 THEN
SELL AT MARKET
ENDIF
// Conditions pour ouvrir une position en vente à découvert
c13 = (close[2] > indicator1[2])
c14 = (close[1] < indicator1[1])
c15 = (close < indicator1)
c16 = (close[1] < close[2])
c17 = (close < close[1])
c18 = (indicator2 < 50)
IF (c13 AND c14 AND c15 AND c16 AND c17 AND c18) AND not daysForbiddenEntry THEN
SELLSHORT 1 SHARES AT MARKET
ENDIF
// Conditions pour fermer une position en vente à découvert
c19 = (close[2] > indicator1[2])
c20 = (close[1] > indicator1[1])
c21 = (close > indicator1)
c22 = (close[2] > close[3])
c23 = (close[1] > close[2])
c24 = (close > close[1])
IF c20 AND c21 AND c24 AND c23 THEN
EXITSHORT AT MARKET
ENDIF
IF c19 AND c21 AND c24 AND c22 THEN
EXITSHORT AT MARKET
ENDIF
// Stops et objectifs
SET STOP pLOSS 45
SET TARGET pPROFIT 75
Désolé. Je suis un petit nouveau (qui ne lis pas toutes les instructions) 🙂
Pour ta question futures/cfd, ce sont des produits différents fournis par des brokers différents, si ton compte est PRT trading avec Interactive Broker (ce qui semble le cas), tu as accès à des produits de type Futures, stocks, etf, options, etc… mais pas à des CFD, donc normal que tu ne les trouves pas dans ta liste. Inversement, si tu étais client IG (ou aussi IG sponsored PRT du lien de Nicolas), tu aurais accès aux CFD mais pas aux futures, stocks, etf etc…
De plus, au-delà d’avoir besoin de 2 comptes si on veut intervenir sur les 2 types de produits, et au-delà de légère différences sur les valeurs d’ouvertures et de clôtures de bougies à même heure de cloture intraday (et possibles grandes différences en daily ou plus), un cfd est souvent côté H24 en semaine, alors que les autres produits respectent des horaires d’ouverture et fermeture de leurs marchés respectifs, donc en termes de différences dans un backtest, une même stratégie ne donnera pas forcément les mêmes résultats si elle ne tient pas compte d’une gestion spécifique de ces bougies cfd nocturnes supplémentaires qui vont affecter la plupart des variables.
Salut Grdchef,
Pas de souci pour l’indulgence. On a toujours besoin d’aide même après plusieurs années. Un forum s’est un endroit de partage avant tout.
Ta démarche me semble en plus très cohérente sur les points suivants:
– j’aime beaucoup la simplicité de la stratégie. Cela évite la suroptimisation.
– C’est une stratégie de breakout de la tenkan. Pour le Dax une stratégie de suivi de tendance me semble être un bon choix.
– Le taux de réussite autour de 40% est logique pour une stratégie de breakout. Par contre ton ratio gain/perte de 1,4 est un peu faible. Si tu enchaine plusieurs pertes d’affilés, ton taux de réussite va baisser et la stratégie deviendra perdante.
Tu devrais essayer d’éloigner un peu le take profit pour augmenter le ratio gain/perte sans que cela impacte trop le taux de réussite.
– Le choix des horaires de trading peut surement être optimisés. En fonction de ton courtier valide le spread en fonction de l’heure de cotation. Chez IG le spread est de 4 de 7h à 8h et de 1,2 à partir de 9h. Cela fait une grosse différence de performances.
Tu as une bonne base de départ pour ta stratégie. Dès que tu pourras avoir un historique plus important, teste chaque partie de ta stratégie pour mesurer si un élément apporte ou pas de la performance. Teste chaque entrée, sortie et filtre un à un. Tu peux aussi séparer les longs et les shorts.
En dehors d’un breakout de tenkan, tu peux tester un breakout de la kijun ou du nuage par exemple 🙂
Merci Noobywan. Je connaissais la différence (ayant eu les deux) entre un compte CFD et un compte future. le backtest d’une stratégie (mis à part les horaires). De toute façon je comptais ouvrir un nouveau compte CFD (confirmé par Nicolas) qui me parait plus approprié pour mettre en live cette stratégie (et vu les spreads qu’il y a eu cette année sur les futures et qui risquent de se reproduire).
Merci encore Magifina, c’est vraiment très instructif pour moi.
Mille merci.
Plus la stratégie est simple et moins tu as de variable a optimiser. Elle est aussi plus simple à comprendre.
Pour le ratio gain/perte s’il est de 1,3 tu dois gagner plus de 45% du temps pour rester profitable. L’idéal serait donc de baisser le takeprofit en période de range et de l’augmenter en tendance. Tu as peut être besoin de tester plusieurs filtres pour éviter les périodes de range.
Avis sur ma stratégie de trading ichimoku tenkan
This topic contains 20 replies,
has 6 voices, and was last updated by Magifina
5 years, 9 months ago.
| Forum: | ProOrder : Trading Automatique & Backtests |
| Language: | French |
| Started: | 11/23/2020 |
| Status: | Active |
| Attachments: | 6 files |
The information collected on this form is stored in a computer file by ProRealCode to create and access your ProRealCode profile. This data is kept in a secure database for the duration of the member's membership. They will be kept as long as you use our services and will be automatically deleted after 3 years of inactivity. Your personal data is used to create your private profile on ProRealCode. This data is maintained by SAS ProRealCode, 407 rue Freycinet, 59151 Arleux, France. If you subscribe to our newsletters, your email address is provided to our service provider "MailChimp" located in the United States, with whom we have signed a confidentiality agreement. This company is also compliant with the EU/Swiss Privacy Shield, and the GDPR. For any request for correction or deletion concerning your data, you can directly contact the ProRealCode team by email at privacy@prorealcode.com If you would like to lodge a complaint regarding the use of your personal data, you can contact your data protection supervisory authority.