CADEAU 2020 ALGO DAX

Re: CADEAU 2020 ALGO DAX

Messagepar DonTony » 28 Avr 2020, 10:29

Bonjour Yann,

Je te réponds après la revue de marché! ;) :D
TWITTER: @DonTonyDaSilva1
Avatar de l’utilisateur
DonTony
7
7
 
Messages: 1714
Inscription: 24 Oct 2019, 15:14
Localisation: Saône & Loire/Bourgogne

Re: CADEAU 2020 ALGO DAX

Messagepar Yann67 » 28 Avr 2020, 20:40

DonTony a écrit:Bonjour Yann,

Je te réponds après la revue de marché! ;) :D


Merci :)
Yann67
2
2
 
Messages: 43
Inscription: 11 Avr 2020, 18:17

Re: CADEAU 2020 ALGO DAX

Messagepar DonTony » 28 Avr 2020, 21:01

Bonsoir Yann,

Milles excuses pour le retard, car pas mal occupé ces derniers temps au boulot.

En fait il faut que modifie cette ligne:

DEFPARAM CumulateOrders = False // Cumul des positions désactivé
// Conditions pour ouvrir une position acheteuse
cvente = (close <= close[1]-5)
cjour = dayofweek<>5
c2= time=94500
c3= time=210000
// SHORT
IF cvente and cjour and c2 THEN
sellshort 1 CONTRACT AT MARKET

et nottament que tu remplaces le "1" par le nombre de contrat que tu désires.
Mais attention, 1 mini contrat DAX(Allemagne 30) à 1e est égal à 1e du point.

Donc, si tu remplaces le "1" par "3" tu traderas a 3euros du point sachant que l'algo est configuré en ayant un SL fixe de 70 points, tu peux facilement faire le calcul.
Franchement, je te conseille de ne pas dépassé 2% de perte max par trade en fonction de ton capital, car si tu as une succession de perte consécutive, le drawdown risque d'être important et il va falloir le supporter psychologiquement.

Enfin, je dis ça mais fait comme bon te semble…

Si tu as d'autres questions, n'hésite pas car nous ne sommes pas nombreux sur le forum à connaitre le language de programmation auto sur PRT.
TWITTER: @DonTonyDaSilva1
Avatar de l’utilisateur
DonTony
7
7
 
Messages: 1714
Inscription: 24 Oct 2019, 15:14
Localisation: Saône & Loire/Bourgogne

Re: CADEAU 2020 ALGO DAX

Messagepar Yann67 » 29 Avr 2020, 20:56

Merci pour tes conseils, et d'avoir pris du temps de me répondre. Je vais regarder cela, je vais juste attendre qu'il trade, en deux jours 0 tentative car il y avait pas les opportunités.
Yann67
2
2
 
Messages: 43
Inscription: 11 Avr 2020, 18:17

Re: CADEAU 2020 ALGO DAX

Messagepar damfo » 30 Avr 2020, 20:47

Merci Thomas pour le partage, j'ai découvert ton message car il est remonté dans les actifs.

Je n'ai pas PRT CFD donc je ne peux pas tester le programme, je crois. Il parait que PRT future inclurera ces possibilités d'ici la fin de l'année.

Du coup, j'ai lu un peu la doc de la programmation PRT pour comprendre un peu le programme.

Voici une version avec de très légères modifications et des commentaires pour aider à le comprendre. Cela m'aidera aussi si j'y reviens car j'aurais certainement beaucoup oublié !
Modifications d'optimisation minimes avec l'utilisaiton de ONCE, tous les mots du langage mis en majusucles. Création de variables pour modifier sans avoir à lire vraiment le programme pour le volume de la position, le stop et le TP.
Indentation pour faciliter la lecture, ah non finalement, le forum élimine les espaes ou tabulation en début de ligne, dommage pour le code.
J'ai trouvé qu''on peut encadrer le code avec les balises code] et /code] qui doivent être entre crochets chacune. Je ne peux pas mettre les crochets qui ouvrent dans le texte car c'est interprété comme une zone de code ! Ceci n'est pas documenté dans la page d'aide : https://ichimoku-forum.net/forum/faq.php?mode=bbcode
Cela pourrait être utile de le rajouter.

Je ne vois aucun cas qui ferait que l'on peut avoir la condition (4) vraie.
breakeventLevel prends les valeurs 0, cours de la prise de position -10, cours de la prise de position -35 et rien d'autre dans le programe donc (4) n'est jamais vraie.
Donc je pense que l'on peut effacer les 2 lignes qui constiutent (4) comme indiquée dans le code.

L'explication du progamme a déjà été donné et mon analyse aboutie au même résultat.
Code: Tout sélectionner
DEFPARAM CumulateOrders = False // Cumul des positions désactivé

// Conditions pour ouvrir une position acheteuse
ONCE nbrPos = 1 // quantité de contracts de la position qui sera prise
ONCE stopPos = 60 // valeur du stop loss initial
ONCE tpPos = 90 // valeur du Take Profit
ONCE vendredi = 5
cvente = (close <= close[1]-5) //fermeture bougie <= fermeture bougie précédente - 5 ; TRADEPRICE = cours de fermeture bougie précédente - 5
cjour = dayofweek<>vendredi // cjour vrai si on n'est pas le vendredi ; le week-end est exclus
c2= time=94500 //9.45.00 soit 9h45 et 0 secondes
c3= time=210000 // 21.00.00 soit 21h

// SHORT
IF cvente AND cjour AND c2 THEN //si conditions cvente et cjour et c2 vraies alors
   SELLSHORT nbrPOS CONTRACT AT MARKET // vente au cours du marché de nbrPos contracts
   SET STOP pLOSS stopPos // fixe un stop de protection à stopPos points du cours d'entrée
   SET TARGET pprofit tpPos // fixe comme TP une limite à tpPos points du cours d'entrée
ENDIF

//exitshort n'est exécuté que s'il y a eu effectivement la prise d'un short
//si entrée à la vente ET que le cours du trade pris - celui de la fermeture de la bougie à 19h > 10 alors
// clôture de la position au cours du marché
If SHORTONMARKET AND TRADEPRICE - CLOSE > 10 AND TIME>190000 then
   EXITSHORT AT MARKET
ENDIF

//si position en cours ET qu'il est 21h00 alors
// clôture de la position au cours du marché
IF c3 AND SHORTONMARKET THEN
   EXITSHORT AT MARKET
ENDIF

//si aucune position, on définit breakeventLevel=0
//donc on réinitialise breakeventLevel pour un prochain trade au cas où il avait été modifié
If NOT ONMARKET THEN
   breakevenLevel=0
ENDIF

ONCE startBreakevenShort1 = 10
ONCE PointsToKeepShort1 = -35
ONCE startBreakevenShort2 = 55
ONCE PointsToKeepShort2 = 10

//si PNL >= 55 alors
//   (1) si breakevenLevel=0 alors
//      breakevenLevel = cours de la prise de position - 10
//      => signifie STOP ajusté à un gain de 10 points
//   (2) sinon si cours de la prise de position - 55 < breakeventLevel alors
//      breakeventLevel = cours de la prise de position -10
//      => signifie STOP ajusté à un gain de 10 points
//sinon si PNL >= 10
//   (3) si breakevenLevel=0 alors
//      breakevenLevel = cours de la prise de position - 35
//      => ajustement de breakeventlevel dés que position en gain de 10 points, signifie STOP ajusté à une perte de -35 points
//   (4) sinon si cours de la prise de position - 35 < breakevenLevel alors
//      breakevenLevel = cours de la prise de position - 10
//      => signifie STOP ajusté à une perte de -35 points
IF SHORTONMARKET AND TRADEPRICE - CLOSE >= startBreakevenShort2 THEN
   IF breakevenLevel=0 THEN
      breakevenLevel = TRADEPRICE - PointsToKeepShort2
   ELSIF TRADEPRICE - PointsToKeepShort2 < breakevenLevel THEN
      breakevenLevel = TRADEPRICE - PointsToKeepShort2
   ENDIF
ELSIF SHORTONMARKET AND TRADEPRICE - CLOSE >= startBreakevenShort1 THEN
   IF breakevenLevel=0 THEN
      breakevenLevel = TRADEPRICE - PointsToKeepShort1
//je pense que les 2 prochaines lignes peuvent être supprimées car la condition n'est jamais réalisée
   ELSIF TRADEPRICE - PointsToKeepShort1 < breakevenLevel THEN
      breakevenLevel = TRADEPRICE - PointsToKeepShort1
   ENDIF
ENDIF

//si breakevenLevel > 0 alors
//stop ajusté à la valeur de breakevenLevel
IF breakevenLevel > 0 THEN
   EXITSHORT AT breakevenLevel STOP
ENDIF
damfo
1
1
 
Messages: 12
Inscription: 19 Sep 2019, 12:09

Re: CADEAU 2020 ALGO DAX

Messagepar Thomas3 » 03 Mai 2020, 18:07

Bonjour à tous!

désolé de ne pas avoir pris le temps de me connecter sur le forum et de répondre aux différentes questions, mais je vois que Don Tony s'en ait chargé. Du coup je profite de ce message pour te remercier!
J'espère que la communauté à pu profiter de cet algo, et merci à tous vos messages.

Je travaille actuellement sur d'autres stats un peu du genre du cycle DAX que j'espère pouvoir partager avec vous dans les prochains jours.

Bon dimanche à tous.
Thomas3
5
5
 
Messages: 331
Inscription: 07 Mar 2019, 14:35
Localisation: Strasbourg Bas-Rhin ALSACE bref le centre du monde!

Re: CADEAU 2020 ALGO DAX

Messagepar DonTony » 03 Mai 2020, 23:44

Bonsoir Thomas,

Tu n'as pas à me remercier mais c'est nous qui te remercions.
C'est toujours un plaisir de te croiser sur le forum! :D
TWITTER: @DonTonyDaSilva1
Avatar de l’utilisateur
DonTony
7
7
 
Messages: 1714
Inscription: 24 Oct 2019, 15:14
Localisation: Saône & Loire/Bourgogne

Re: CADEAU 2020 ALGO DAX

Messagepar floflo34 » 10 Mai 2020, 17:35

Bonjour merci pour ce partage très intéressant... le backtest n'est pas très convaincant de mon côté mais je pense qu'il demande a être travaillé.

Juste pour bien comprendre :

Le cours de fermeture de la dernière bougie (Donc le cours de 9h45 cad la bougie M15 ouvrant à 9h30 et clôturant à 9h45) est inférieur au cours de fermeture de la bougie précédente - 5 points (Donc le cours à 9h30 cad la bougie ouvrant à 9h15 et clôturant à 9h30)

Est-ce exact ?

Merci de vos réponses
Flo
floflo34
1
1
 
Messages: 17
Inscription: 08 Avr 2020, 12:40

Re: CADEAU 2020 ALGO DAX

Messagepar damfo » 11 Mai 2020, 10:13

La première chose a avoir à l'esprit à mon avis, ce sont les conditions de marché dans lequel a été détecté un avantage statistique.
Je n'ai pas fait de backtest, j'ai juste analysé le programme.
Cadeau de janvier donc condition de volatilité très différentes de celles actuelles, ce qui par prudence invite à "re-qualifier" l'effacité du programme.
Le stop pourrait être beaucoup plus facilement touché avec la forte volatilité et faire passer les résultats de positif à négatif.
Idée théorique.

Je déduis de ta question que tu ne fais pas de backtest automatique et que c'est manuel.
Il te suffit de faire l'analyse pour les 2 bougies sur lesquels tu hésites.

J'ai commenté et légèrement modifié le programe pour que tu puisses trouver la réponse toi-même dans mon post précédent. En vain semble-t-il...

cvente = (close <= close[1]-5) //fermeture bougie <= fermeture bougie précédente - 5 ; TRADEPRICE = cours de fermeture bougie précédente - 5
cjour = dayofweek<>vendredi // cjour vrai si on n'est pas le vendredi ; le week-end est exclus
c2= time=94500 //9.45.00 soit 9h45 et 0 secondes
c3= time=210000 // 21.00.00 soit 21h
IF cvente AND cjour AND c2 THEN //si conditions cvente et cjour et c2 vraies alors
SELLSHORT nbrPOS CONTRACT AT MARKET // vente au cours du marché de nbrPos contracts
=> j'espère que tu comprends la ligne if qui détermine les conditions d'entrée.
La ligne liée qui répond à ta question est celle qui détermine cvente.

La petite difficulté est que la condition est à 9h45 et que c'est l'instant de changement de bougie de 15 minutes.
Comme je n'ai jamais exécuté de code PRT, je peux me tromper.
cvente vient d'être calculé pour la bougie de 9h30-9h45 et donc si la clôture de cette bougie est inférieure à celle de 9h15-9h30 de 5points alors à 9h45 on rentre en position.

A mon avis avant d'utiliser ce programme, il faut faire du backtest avec différentes conditions comme l'a fait DonTony.
Une validation en fonction de la volatilité pourrait aussi être intéressante.
Un algo fonctionne dans des conditions de marché particulières et les connaître c'est limiter les pertes.
damfo
1
1
 
Messages: 12
Inscription: 19 Sep 2019, 12:09

Re: CADEAU 2020 ALGO DAX

Messagepar DonTony » 13 Juin 2020, 00:01

Bonsoir,

Comme annoncé lors de la revue de marché de mardi, voilà "une mise à jour" de la stratégie SHORTDax de Thomas(Bin oui, j'ai 6 ou 7 stratégies qui tournent donc cela évite à chaque fois de regardé le code pour savoir de quelle stratégie je parle).

Tout d'abord, je n'ai aucunement modifié les critères d'entrées et paramètres prit en compte dans la stratégie mais uniquement effectué une optimisation au niveau du SL et TP.

Plusieurs choses, le stratégie originelle de Thomas fonctionne très bien car en en faisant un backtest sur 100000UT m15 (juin 2018), nous pouvons nous apercevoir qu'elle est largement positive.

J'ai commencé a utilisé celle ci en tout début d'année(merci à lui!), et j'ai remarqué une série de perte pendant la recovery après crise COVID. J'ai donc décidé de regarder à ce moment s'il n'était pas possible d'y faire quelque-chose ayant comme postulat que la volatilité ayant augmenté, la distance SL et TP n'était plus judicieuse.

J'avais donc retenu de la suite des backtests que j'ai effectué, 3 versions différentes.

Annotation 2020-06-12 235549.jpg


La premère a été la version 60*11 car nous parlons de SL et TP.
Voici le code:

DEFPARAM CumulateOrders = False // Cumul des positions désactivé
// Conditions pour ouvrir une position acheteuse
cvente = (close <= close[1]-5)
cjour = dayofweek<>5
c2= time=94500
c3= time=210000
// SHORT
IF cvente and cjour and c2 THEN
sellshort 1 CONTRACT AT MARKET
SET STOP pLOSS 60
set target pprofit 110
ENDIF
If shortonmarket and tradeprice - close > 10 and time>190000 then
exitshort at market
endif
If c3 and shortonmarket then
exitshort at market
endif
If not onmarket then
breakevenLevel=0
endif
startBreakevenShort1 = 10
PointsToKeepShort1 = -35
startBreakevenShort2 = 55
PointsToKeepShort2 = 10
IF ShortONMARKET AND tradeprice - close >= startBreakevenShort2 THEN
if breakevenLevel=0 then
breakevenLevel = tradeprice - PointsToKeepShort2
elsif tradeprice - PointsToKeepShort2 < breakevenLevel then
breakevenLevel = tradeprice - PointsToKeepShort2
endif
elsif ShortONMARKET AND tradeprice - close >= startBreakevenShort1 THEN
if breakevenLevel=0 then
breakevenLevel = tradeprice - PointsToKeepShort1
elsif tradeprice - PointsToKeepShort1 < breakevenLevel then
breakevenLevel = tradeprice - PointsToKeepShort1
endif
ENDIF
IF breakevenLevel > 0 THEN
exitshort AT breakevenLevel STOP
ENDIF

Cette version est sans grand intérêt puisqu'elle performe moins que la version originale.

Annotation 2020-06-12 232831.jpg


Un plus gros gain max, mais un gain moyen diminué et un nombre de position perdante augmenté.
Le gain moyen par position gagnantes est également augmenté et le montant des pertes moyennes diminue.
Le drawdown diminue également.

Puis, sur une série d'autres backtest ou je prenais en compte la volatilité lié à la crise, j'ai trouvé cette version intérresante:
Je l'ai obtenu en augmentant le SL mais en augmentant largement aussi le TP, car elle offre un ratio de plus de 2/1.

Celle ci s'appelle 80*18, et voici le code:

DEFPARAM CumulateOrders = False // Cumul des positions désactivé
// Conditions pour ouvrir une position acheteuse
cvente = (close <= close[1]-5)
cjour = dayofweek<>5
c2= time=94500
c3= time=210000
// SHORT
IF cvente and cjour and c2 THEN
sellshort 1 CONTRACT AT MARKET
SET STOP pLOSS 80
set target pprofit 180
ENDIF
If shortonmarket and tradeprice - close > 10 and time>190000 then
exitshort at market
endif
If c3 and shortonmarket then
exitshort at market
endif
If not onmarket then
breakevenLevel=0
endif
startBreakevenShort1 = 10
PointsToKeepShort1 = -35
startBreakevenShort2 = 55
PointsToKeepShort2 = 10
IF ShortONMARKET AND tradeprice - close >= startBreakevenShort2 THEN
if breakevenLevel=0 then
breakevenLevel = tradeprice - PointsToKeepShort2
elsif tradeprice - PointsToKeepShort2 < breakevenLevel then
breakevenLevel = tradeprice - PointsToKeepShort2
endif
elsif ShortONMARKET AND tradeprice - close >= startBreakevenShort1 THEN
if breakevenLevel=0 then
breakevenLevel = tradeprice - PointsToKeepShort1
elsif tradeprice - PointsToKeepShort1 < breakevenLevel then
breakevenLevel = tradeprice - PointsToKeepShort1
endif
ENDIF
IF breakevenLevel > 0 THEN
exitshort AT breakevenLevel STOP
ENDIF

Sur cette version, le nombre de position gagnante par rapport à la version originale est stable, le ratio gains/pertes augmente ainsi que le gain moyen.
La perte max également(bin oui, forcément!) et de ce fait les pertes moyennes par positions perdantes.
Le gain moyen augmente considérablement, mais attention, le drawdown augmente!

Si vous retourné sur la courbe d'évolution des perfs, cette version correspond à la courbe bleue foncé et l(on s'apperçoit que cette version à eu des performances positives pendant la recovery(contrairement à la version originale).
Cependant, cette version n'est pas très progressive puisque elle augmente par escalier.

Cette version est sur la période backtesté, la plus perfromante de toutes les versions.

AH! POUR RAPPEL, LE BACKTEST EST EFFECTU2 AEVC UN k DE DEPART DE 3ke AVEC UN MINI CONTRAT DAX dans le but de faire la démonstration d'un tout tout petit capital dont la majorité d'entre enous peuvent se permettre(j'espère pour chacun).

Et voici une 3eme version(je ne sais plus si je l'ai déjà donné à Thomas, mais si ce n'est pa sle cas, je suis sûr qu'il m'excusera ;) :D ), il s'agit de la version que j'utilise actuellement qui est la version 90*15 qui correspond à une version intermédiaire entre la version originale et la version suroptimisé 85*18.

Voici le code:

DEFPARAM CumulateOrders = False // Cumul des positions désactivé
// Conditions pour ouvrir une position acheteuse
cvente = (close <= close[1]-5)
cjour = dayofweek<>5
c2= time=94500
c3= time=210000
// SHORT
IF cvente and cjour and c2 THEN
sellshort 1 CONTRACT AT MARKET
SET STOP pLOSS 85
set target pprofit 150
ENDIF
If shortonmarket and tradeprice - close > 10 and time>190000 then
exitshort at market
endif
If c3 and shortonmarket then
exitshort at market
endif
If not onmarket then
breakevenLevel=0
endif
startBreakevenShort1 = 10
PointsToKeepShort1 = -35
startBreakevenShort2 = 55
PointsToKeepShort2 = 10
IF ShortONMARKET AND tradeprice - close >= startBreakevenShort2 THEN
if breakevenLevel=0 then
breakevenLevel = tradeprice - PointsToKeepShort2
elsif tradeprice - PointsToKeepShort2 < breakevenLevel then
breakevenLevel = tradeprice - PointsToKeepShort2
endif
elsif ShortONMARKET AND tradeprice - close >= startBreakevenShort1 THEN
if breakevenLevel=0 then
breakevenLevel = tradeprice - PointsToKeepShort1
elsif tradeprice - PointsToKeepShort1 < breakevenLevel then
breakevenLevel = tradeprice - PointsToKeepShort1
endif
ENDIF
IF breakevenLevel > 0 THEN
exitshort AT breakevenLevel STOP
ENDIF

Annotation 2020-06-12 233422.jpg


En regardant la courbe de perf de cette version(grise et noire), on s'apperçoit que les résultats augementent encore un peu par escalier, elle est moins lissé que la version originale mais fonctionne également moins par palier que la version suroptimisé 80*18. Les gains totaux sont améliorés par rapport à la stratégie originale, elle a performé également pendant la période de volatilité, mais moins que la version suroptimisé 80*18.

C'est un peu la version 4*4 de toutes les versions.

C'est celle qui propse le plus de trade gagnant (86/152), le nombre de position gagnantes est très légèrement augmenté par rapport à la version originale, et la ratio gain/perte est quasiment identique, l'amélioration réside sans le fait d'un TP plus important que la version originale.
Par contre le drawdown augmente encore par rapport à la version suroptimisé 80*18.

Voilà.

Libre à chacun d'utilisé ,pour ceux qui le désire, la version qu'ils désirent et peut être de passer de l'une aux autres de ces versions en fonction des configurations de marché.
Sur compte démo bien sûr! ;)
TWITTER: @DonTonyDaSilva1
Avatar de l’utilisateur
DonTony
7
7
 
Messages: 1714
Inscription: 24 Oct 2019, 15:14
Localisation: Saône & Loire/Bourgogne

PrécédenteSuivante

Retourner vers Vos techniques ichimoku

Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 0 invités

cron