ProRealTime
Pour partager sur le trading automatique, nos algorithmes, nos backtests

Suivi de mon algorithme de trading Dax 30

par Anonymous99 » 01 mai 2016 12:03

Bonjour à tous,

En hommage au travail de Benoist et à la file "Suivi de mon algorithme de trading cac 40" suivi-de-mon-algorithme-de-trading-cac-40-t10826.html je partage le code source de la première version de mon système de trading (du 22/01/2016) journal-de-trading-d-Anonymous99-t10768-10.html#p360430.

Depuis il a bien évolué... Je communiquerai probablement des versions plus récentes (et plus performantes) suivant la participation des membres ;)

Il n'était pas extraordinaire, mais c'est une bonne base pour aider les débutants...
Résumé.JPG
Stats.JPG
Positions.JPG
Mon UT c'est 6 secondes.
Spoiler:

Code : #

// Définition des paramètres du code

// Cumul des positions désactivé
DEFPARAM CumulateOrders = False
// La position est clôturée à 17h30, heure française
DEFPARAM flatafter = 173000 // 17h30

// Indicateurs
RSI14 = RSI[14](close)
cloture = close
//MME20 = ExponentialAverage[20](close)
//MM20 = Average[20](close)
MM50 = Average[50](close)
//MM100 = Average[100](close)
MM200 = Average[200](close)
SupT = SuperTrend[3,10]
pSAR = SAR[0.02,0.02,0.2]
ATR = AverageTrueRange[14](close)
BolH = BollingerUp[20](close)
BolB = BollingerDown[20](close)
Bol = BolH - BolB

// Aucune nouvelle position prise après le chandelier qui clôture à 17h29
HeureLimite = 172900
// L'analyse du marché commence avec le chandelier 6 secondes qui clôture à 8h00
HeureDebut = 090000

// Les journées du 24 et 31 décembre sont exclues car la bourse ferme avant 19h45
IF Month = 12 AND (Day = 24 OR Day = 31) THEN
JourTrading = 0
ELSE
JourTrading = 1
ENDIF

// S'adapter au spread
IF time >= 090000 AND time < 173000 THEN
spread = 1
ELSE
IF time >= 173000 AND time < 220000 THEN
spread = 2
ELSE
IF time >= 220000 AND time < 000000 THEN
spread = 7
ELSE
IF time >= 000000 AND time < 080000 THEN
spread = 7
ELSE
IF time >= 080000 AND time < 090000 THEN
spread = 2
ENDIF
ENDIF
ENDIF
ENDIF
ENDIF

// Les variables qui peuvent être adaptées selon ses préférences
RSIAchatH = 67
RSIAchatB = 56 // éviter d'être vers 50
RSIVenteH = 43 // éviter d'être vers 50
RSIVenteB = 30
IF (ATR * 1.75 >= 4) then
SL = ATR * 1.75
ELSE
SL = 4 // Stop Loss mini : 4
ENDIF
TP = ATR * 2.2
TaillePosition = 1
BolMin = 5.3 * ATR // Taille min Bollinger
ATRMin = 0.8 + spread
ATRMax = 5 + spread
BolHMax = BolH - ATR * 1.1
BolBMin = BolB + ATR * 1.1

IF JourTrading = 1 AND time >= HeureDebut AND time < HeureLimite THEN
// Création des ordres d'achat et de vente à découvert si les conditions sont remplies
IF (cloture CROSSES OVER pSAR) THEN // Cours en hausse
IF SHORTONMARKET THEN // Indique si vous avez des positions vendeuses (=courtes) sur le marché
EXITSHORT AT MARKET // Instruction qui clôture une position courte
ENDIF
IF (RSI14 >= RSIAchatB AND RSI14 <= RSIAchatH) AND (cloture >= SupT) AND (cloture <= BolH) AND (Bol >= BolMin) AND (ATR >= ATRMin) AND (ATR <= ATRMax) AND (MM50 >= MM200) AND (cloture <= BolHMax) THEN
BUY TaillePosition CONTRACT AT MARKET // Instruction d'ouverture de position longue
ENDIF
ENDIF

IF (cloture CROSSES UNDER pSAR) THEN // Cours en baisse
IF LONGONMARKET THEN // Indique si vous avez des positions acheteuses (=longues) sur le marché
SELL AT MARKET // Instruction de clôture de position longue
ENDIF
IF (RSI14 >= RSIVenteB AND RSI14 <= RSIVenteH) AND (cloture <= SupT) AND (cloture >= BolB) AND (Bol >= BolMin) AND (ATR >= ATRMin) AND (ATR <= ATRMax) AND (MM50 <= MM200) AND (cloture >= BolBMin) THEN
SELLSHORT TaillePosition CONTRACT AT MARKET // Instruction d'ouverture de position courte
ENDIF
ENDIF
ENDIF


// Définition d'un risque maximummal de pertes par position
// en cas d'évolution défavorable du prix de l'instrument
SET STOP pLOSS SL
SET TARGET pPROFIT TP

Re: Suivi de mon algorithme de trading Dax 30

par GDX23 » 01 mai 2016 12:25

Salut !

As-tu backtesté cela sur une période plus longue ? Par contre 6 secondes, c'est surprenant ;)

Souvent les gens utilisent le 15 minutes ;)

Re: Suivi de mon algorithme de trading Dax 30

par Anonymous99 » 01 mai 2016 12:57

En 6 secondes on ne peut pas tester sur plus de 10 jours (c'est déjà 100 000 bougies...).

6 secondes, c'est pour faire l'équivalent de plus ou moins 21 ticks (comme on ne peut pas travailler en ticks dans le système de trading ProRealTime).

Un "bug" (si on peut dire) à corriger, il faut éviter d'imposer une taille de Bollinger avec un ATR, car c'est 2 indices de volatilité... :hein: Vous pouvez mettre par exemple :

Code : #

BolMin = 12 // Taille min Bollinger en POINTS
Et vous passerez dans mon exemple de 46 € à 54.50 €...

Re: Suivi de mon algorithme de trading Dax 30

par GDX23 » 01 mai 2016 19:03

Pourquoi pas du 15 min ??

Re: Suivi de mon algorithme de trading Dax 30

par Anonymous99 » 01 mai 2016 19:24

Pour faire du scalping ;-)
En plus, les calculs sont réévalués à la clôture de chaque Bougie... Donc 15 min c'est une éternité pour moi.

L'objectif étant de gagner peu de points, mais souvent, de manière la moins risquée (temps d'exposition limité), avec petit Effet de levier, etc.

Re: Suivi de mon algorithme de trading Dax 30

par GDX23 » 02 mai 2016 20:28

ok je disais ça car souvent le trading auto est utilisé en 15 min pour faire de l'intraday

Re: Suivi de mon algorithme de trading Dax 30

par Anonymous99 » 02 mai 2016 22:29

En effet, sur http://www.prorealcode.com/ par exemple c'est souvent sur des périodes plus longues.

Moi j'aime bien les courtes, car cela offre plein d'occasions, donc on peut être très sélectif sur les entrées.

Je le suis un peu trop même : dans mon exemple seulement 10 trades sur 10 jours... ;-)

Une dernier conseil d'optimisation pour la route, pour l'ATR minimum, 1 point c'est suffisant :

Code : #

ATRMin = spread

Re: Suivi de mon algorithme de trading Dax 30

par Anonymous99 » 04 mai 2016 10:20

Bonjour à tous,

La version du 25/01/2016 dont j'ai publié les résultats le 29/01/2016 (il y a eu d'autres versions entre le 25 et le 29) journal-de-trading-d-Anonymous99-t10768-10.html#p364096
Résumé.JPG
Stats.JPG
Positions.JPG
J'avais notamment rajouté la coupure après x euros de pertes ou de gains, et une gestion plus dynamique de la quotité/SL/TP en fonction de la prise de risque :
Spoiler:

Code : #

// Cumul des positions désactivé
DEFPARAM CumulateOrders = False
// La position est clôturée à 17h45, heure française
DEFPARAM flatafter=174500 // 17h45

// Indicateurs
RSI14 = RSI[14](close)
cloture = close
MME20 = ExponentialAverage[20](close)
MM20 = Average[20](close)
MM50 = Average[50](close)
MM100 = Average[100](close)
MM200 = Average[200](close)
SupT = SuperTrend[3,10]
pSAR = SAR[0.02,0.02,0.2]
ATR = AverageTrueRange[14](close)
BolH = BollingerUp[20](close)
BolB = BollingerDown[20](close)
Bol = BolH - BolB

// Aucune nouvelle position prise après le chandelier qui clôture à 17h29
HeureLimite = 173000
// L'analyse du marché commence avec le chandelier 6 secondes qui clôture à 8h00
HeureDebut = 080000

// Les journées du 24 et 31 décembre sont exclues car la bourse ferme avant 19h45
IF Month = 12 AND (Day = 24 OR Day = 31) THEN
JourTrading = 0
ELSE
JourTrading = 1
ENDIF

// S'adapter au spread
IF time >= 090000 AND time < 173000 THEN
spread = 1
ELSE
IF time >= 173000 AND time < 220000 THEN
spread = 2
ELSE
IF time >= 220000 AND time < 000000 THEN
spread = 7
ELSE
IF time >= 000000 AND time < 080000 THEN
spread = 7
ELSE
IF time >= 080000 AND time < 090000 THEN
spread = 2
ELSE
spread = 1 // Sécurité erreur prog
ENDIF
ENDIF
ENDIF
ENDIF
ENDIF

// Les variables qui peuvent être adaptées selon ses préférences
RSIAchatH = 67 // 
RSIAchatB = 54 // éviter d'être vers 50
RSIVenteH = 43 // éviter d'être vers 50
RSIVenteB = 30 // 
BolMin = 12 // Taille min Bollinger en POINTS
ATRMin = spread // spread
ATRMax = 5 + spread // 5 + spread
BolHMax = BolH - ATR * 1.1 // 
BolBMin = BolB + ATR * 1.1 // 
gainsMax = 160 // en euros
pertesMax = -80 // en euros

IF STRATEGYPROFIT < pertesMax THEN
QUIT 
ELSE
IF STRATEGYPROFIT > gainsMax THEN
QUIT
ENDIF
ENDIF

IF (JourTrading = 1) AND (time >= HeureDebut) AND (time < HeureLimite) THEN
IF (cloture CROSSES OVER pSAR) THEN // Cours en hausse
IF SHORTONMARKET THEN // Indique si vous avez des positions vendeuses (=courtes) sur le marché
EXITSHORT AT MARKET // Instruction qui clôture une position courte
ENDIF
IF (RSI14 >= RSIAchatB) AND (RSI14 <= RSIAchatH) AND (cloture >= SupT) AND (cloture <= BolH) AND (Bol >= BolMin) AND (ATR >= ATRMin) AND (ATR <= ATRMax) AND (MM50 > MM200) AND (cloture <= BolHMax) THEN // --- ACHAT ---
// S'adapter aux risques :
// --- ACHAT : Palier 1 ---
IF (MM100 > MM200) AND (MM50 > MM100) AND (MM50 > MM200) AND (MM20 >= MM50) AND (MM20 > MM100) AND (MM20 > MM200) AND (MME20 >= MM20) THEN
TaillePosition = 1
SL = ATR * 1.75 // 
TP = ATR * 2.00 // 
ELSE // --- ACHAT : Palier 2 ---
IF (MM100 > MM200) AND (MM50 > MM100) AND (MM50 > MM200) AND (MM20 >= MM50) AND (MM20 > MM100) AND (MM20 > MM200) THEN
TaillePosition = 1
SL = ATR * 1.65 // 
TP = ATR * 1.95 // 
ELSE // --- ACHAT : Palier 3 ---
IF (MM100 > MM200) AND (MM50 > MM100) AND (MM50 > MM200) AND (MM20 > MM100) AND (MM20 > MM200) THEN
TaillePosition = 1
SL = ATR * 1.55 // 
TP = ATR * 1.90 // 
ELSE // --- ACHAT : Palier 4 ---
IF (MM100 > MM200) AND (MM50 > MM100) AND (MM50 > MM200) AND (MM20 > MM200) THEN
TaillePosition = 1
SL = ATR * 1.45 // 
TP = ATR * 1.85 // 
ELSE // --- ACHAT : Palier 5 ---
IF (MM100 > MM200) AND (MM50 > MM100) AND (MM50 > MM200) THEN
TaillePosition = 1
SL = ATR * 1.35 // 
TP = ATR * 1.80 // 
ELSE // Sécurité erreur prog
// Paramètres par défaut
TaillePosition = 1
SL = ATR * 1.75 // 
TP = ATR * 2.20 // 
ENDIF
ENDIF
ENDIF
ENDIF
ENDIF

BUY TaillePosition CONTRACT AT MARKET // Instruction d'ouverture de position longue
ENDIF
ENDIF

IF (cloture CROSSES UNDER pSAR) THEN // Cours en baisse
IF LONGONMARKET THEN // Indique si vous avez des positions acheteuses (=longues) sur le marché
SELL AT MARKET // Instruction de clôture de position longue
ENDIF
IF (RSI14 >= RSIVenteB) AND (RSI14 <= RSIVenteH) AND (cloture <= SupT) AND (cloture >= BolB) AND (Bol >= BolMin) AND (ATR >= ATRMin) AND (ATR <= ATRMax) AND (MM50 < MM200) AND (cloture >= BolBMin) THEN // --- VENTE ---
// S'adapter aux risques :
// --- VENTE : Palier 1 ---
IF (MM100 < MM200) AND (MM50 < MM100) AND (MM50 < MM200) AND (MM20 <= MM50) AND (MM20 < MM100) AND (MM20 < MM200) AND (MME20 <= MM20) THEN
TaillePosition = 1
SL = ATR * 1.75 // 
TP = ATR * 2.00 // 
ELSE // --- VENTE : Palier 2 ---
IF (MM100 < MM200) AND (MM50 < MM100) AND (MM50 < MM200) AND (MM20 <= MM50) AND (MM20 < MM100) AND (MM20 < MM200) THEN
TaillePosition = 1
SL = ATR * 1.65 // 
TP = ATR * 1.95 // 
ELSE // --- VENTE : Palier 3 ---
IF (MM100 < MM200) AND (MM50 < MM100) AND (MM50 < MM200) AND (MM20 < MM100) AND (MM20 < MM200) THEN
TaillePosition = 1
SL = ATR * 1.55 // 
TP = ATR * 1.90 // 
ELSE // --- VENTE : Palier 4 ---
IF (MM100 < MM200) AND (MM50 < MM100) AND (MM50 < MM200) AND (MM20 < MM200) THEN
TaillePosition = 1
SL = ATR * 1.45 // 
TP = ATR * 1.85 // 
ELSE // --- VENTE : Palier 5 ---
IF (MM100 < MM200) AND (MM50 < MM100) AND (MM50 < MM200) THEN
TaillePosition = 1
SL = ATR * 1.35 // 
TP = ATR * 1.80 // 
ELSE // Sécurité erreur prog
// Paramètres par défaut
TaillePosition = 1
SL = ATR * 1.75 // 
TP = ATR * 2.20 // 
ENDIF
ENDIF
ENDIF
ENDIF
ENDIF

SELLSHORT TaillePosition CONTRACT AT MARKET // Instruction d'ouverture de position courte
ENDIF
ENDIF
ENDIF

IF (SL < 4) then
SL = 4 // Stop Loss mini : 4
ENDIF

// Définition d'un risque maximummal de pertes par position
// en cas d'évolution défavorable du prix de l'instrument
SET STOP pLOSS SL
SET TARGET pPROFIT TP

Re: Suivi de mon algorithme de trading Dax 30

par Anonymous99 » 04 mai 2016 12:37

Je commence à le faire depuis peu : sur mes dernières versions uniquement (j'ai une version sur presque 1 mois de test actuellement).

Pour les 2 premiers codes sources que j'ai donné, j'ai vérifié qu'ils fonctionnaient à l'époque, mais surtout que c'était encore le cas sur les 10 derniers jours (ce qui n'est le cas que pour environ 10% de mes versions).

Mais ce n'est pas une période suffisante pour les utiliser sans surveillance et améliorations : mes exemples sont là pour aider les débutants afin de commencer leur propre système de trading et/ou à améliorer mes exemples en simulation (voire à 5€ le point maximum pour les plus courageux).

Re: Suivi de mon algorithme de trading Dax 30

par Anonymous99 » 04 mai 2016 19:27

Pour comprendre le pourquoi du comment : ;)
"Note du soir" d'une de mes sources d'inspiration Jean Riviere :top:
Jean Riviere.jpg

Sujets similaires
Suivi de mon algorithme de trading cac 40
Fichier(s) joint(s) par Benoist Rousseau » 22 nov. 2015 20:43 (86 Réponses)
Suivi de mon algo de trading sur le Dax
par Gavrinis » 19 mai 2016 18:30 (11 Réponses)
Créer un algorithme de trading
par Benoist Rousseau » 05 nov. 2017 14:33 (1 Réponses)
Algorithme de trading.
par zeb1st » 10 nov. 2019 08:51 (0 Réponses)
Sondage: création algorithme gestion d'actifs
par artes88 » 27 janv. 2015 18:04 (4 Réponses)
Algorithme prévisionnel
par Ernesto » 10 févr. 2015 17:46 (10 Réponses)
Nouvel algorithme Google pour les sites adaptés aux mobiles
Fichier(s) joint(s) par GOLDENBOY » 22 avr. 2015 02:16 (4 Réponses)
Idée d'algorithme ultra rapide
par winacash86 » 08 mai 2015 15:30 (2 Réponses)
Stratégie et programmation d'algorithme pour la backtester
Fichier(s) joint(s) par falex » 12 juin 2015 23:12 (9 Réponses)
Développement algorithme HFT
par Epitaf » 03 oct. 2016 21:57 (8 Réponses)