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.