Bonjour à tous,
Je me permets de solliciter votre aide, j’apprends à coder sur la plateforme PRT.
J’ai lu plusieurs posts dont celui de Nicolas sur chatgpt & le trading.
J’ai essayé de créer le code ci-dessous (qui n’a pas vraiment de sens mais qui mixent plusieurs notions), cependant ca ne marche pas du tout
Pourriez vous m’indiquer ce que je dois changer.
STratégie :
Si le prix cloture au-dessus du ST [3,10] alors prendre une position longue
Si le prix cloture en-dessus du ST [3,10] alors prendre une position short
Autres criteres sont :
Stoploss de 100
Taille de contrat 1
Targetprofit est determiné par la taille de la bougie au moment de la cloture ; le TP est compris entre 10 et 15
Si jamais une position était déjà en cours , sans atteinte du SL ni du TP , mais que le prix à la cloture croise le ST dans l’autre sens, alors fermer la position actuelle et rouvrir une autre
J’ai reussi à taper ca, si qqun trouve une erreur je suis reconnaissant
SET STOP pLOSS 100.0
// Définir la valeur de stop loss
stopLossValue = 100
// Variables pour le suivi des positions et du profit
inLongPosition = 0
inShortPosition = 0
currentrange = 0
// Taille de la bougie
currentrange = Range
// Logique principale de la stratégie
if close crosses under Supertrend[3,10] and not inShortPosition then
// Vérifier la plage de take profit
if currentrange >= 10 and currentrange <= 15 then
// Fermer la position acheteuse si en position acheteuse
SELLSHORT AT MARKET
// Acheter une position vendeuse
SELLSHORT AT MARKET
inShortPosition = 1
inLongPosition = 0
endif
endif
if close crosses over Supertrend[3,10] and not inLongPosition then
// Vérifier la plage de take profit
if currentrange >= 10 and currentrange <= 154 then
// Fermer la position vendeuse si en position vendeuse
BUY AT MARKET
// Acheter une position acheteuse
BUY AT MARKET
inLongPosition = 1
inShortPosition = 0
endif
endif
// Vérifier les conditions de stop loss
if inLongPosition and low <= (positionprice - stopLossValue) then
// Fermer la position acheteuse si le stop loss est atteint
SELL AT MARKET
inLongPosition = 0
endif
if inShortPosition and high >= (positionprice + stopLossValue) then
// Fermer la position vendeuse si le stop loss est atteint
BUY AT MARKET
inShortPosition = 0
endif
// Vérifier les conditions de take profit
if inLongPosition and high >= (positionprice + currentrange) then
// Fermer la position acheteuse si le take profit est atteint
SELL AT MARKET
inLongPosition = 0
endif
if inShortPosition and low <= (positionprice - currentrange) then
// Fermer la position vendeuse si le take profit est atteint
BUY AT MARKET
inShortPosition = 0
endif
Je crois que mon problème vient de la fonction que j appele pour calculer la taille de la bougie.
J utilise range, car candlesize ne fonctionne pas
Ou peut etre est ce ma facon dd manager la position dans le code+
J’ai tenté de mofidier mon code :
En modifiant la facon de calculer la taille de la bougie
En mdifiant les conditions de sorties des positons
Pour autant, cela ne marche toujours par
Exemple, dans l’image en pj, j’ai un signal de 10 points à 09h00 mais rien ne se declenche
SET STOP pLOSS 100.0
// Définir la valeur de stop loss
stopLossValue = 100
// Variables pour le suivi des positions et du profit
inLongPosition = 0
inShortPosition = 0
currentrange = 0
// Taille de la bougie
currentrange = close-Open
// Logique principale de la stratégie
if close crosses under Supertrend[3,10] and not inShortPosition then
// Vérifier la plage de take profit
if currentrange >= 0.5 and currentrange <= 20 then
// Fermer la position acheteuse si en position acheteuse
SELL AT MARKET
// Acheter une position vendeuse
SELLSHORT AT MARKET
inShortPosition = 1
inLongPosition = 0
endif
endif
if close crosses over Supertrend[3,10] and not inLongPosition then
// Vérifier la plage de take profit
if currentrange >= 0.5 and currentrange <= 20 then
// Fermer la position vendeuse si en position vendeuse
EXITSHORT AT MARKET
// Acheter une position acheteuse
BUY AT MARKET
inLongPosition = 1
inShortPosition = 0
endif
endif
// Vérifier les conditions de stop loss
if inLongPosition and low <= (positionprice - stopLossValue) then
// Fermer la position acheteuse si le stop loss est atteint
SELL AT MARKET
inLongPosition = 0
endif
if inShortPosition and high >= (positionprice + stopLossValue) then
// Fermer la position vendeuse si le stop loss est atteint
BUY AT MARKET
inShortPosition = 0
endif
// Vérifier les conditions de take profit
if inLongPosition and high >= (positionprice + currentrange) then
// Fermer la position acheteuse si le take profit est atteint
SELL AT MARKET
inLongPosition = 0
endif
if inShortPosition and low <= (positionprice - currentrange) then
// Fermer la position vendeuse si le take profit est atteint
BUY AT MARKET
inShortPosition = 0
endif
Ce que tu cherches à coder peut être fait plus simplement, je n’ai cependant pas bien saisi ton message sur: “le TP est compris entre 10 et 15”, j’ai donc simplement utilisé un takeprofit de 15 points:
// Paramètres du Supertrend
Periode = 10 // Période du Supertrend
Multiplicateur = 3 // Multiplicateur du Supertrend
// Calcul du Supertrend
Supertrend = Supertrend[Periode, Multiplicateur]
// Conditions d'entrée
Achat = close crosses over Supertrend
Vente = close crosses under Supertrend
// Exécution des ordres
if Achat then
buy 1 contract at market
set stop ploss 100
set target pprofit 15
endif
if Vente then
sellshort 1 contract at market
set stop ploss 100
set target pprofit 15
endif
Cette stratégie achète (position longue) lorsque le prix croise au-dessus du Supertrend et vend à découvert (position courte) lorsque le prix croise en dessous du Supertrend. Pour chaque position, un stop loss est fixé à 100 points et un take profit à 15 points.
Bonjour
Merci pour ta réponse
En fait, le targetprofit est determiné par la taille de la bougie qui clos en dessous ou au dessus du supetrend ; et donc si la taille de la bougie est compris entre 10 & 15 alors je rentre en position.
Egalement, les conditions de sorties sont
Atteinte du stoploss de 100 pts
Supertrend renversé (je suis par exemple en position acheteuse, le TP et le SL de 100 points ne sont pas touchés mais le Supertrend passe en dessous du prix à la cloture de la bougie , je dois donc fermer la position existante et ouvrir une nouvelle position acheteuse)
J’ai essayé de reproduire cela dans mon code , mais cela ne fonctionne pas
Par exemple, imaginons sur une paire de devise EURJPY
Bougie qui commence à 09 h 30 , clos à 10h00: La bougie clos en dessous du SUpertrend, aucune position ouverte , la bougie a une taille de 13 –> J’entre en position vendeuse avec un TP de 13 points et un SL 100 pts
Entre 09h30 & 12h30 les prix évoluent faiblement sans toucher le TP ni le SL
Bougie de 12h30 – 13h00 , la bougie clos au dessus du ST avec une taille de 14 , dans ce cas , je ferme la position vendeuse actuelle, j’ouvre une position acheteuse avec un TP de 14
MErci par avance pour l’aide
Pour adapter le code selon ta demande, il faut intégrer les conditions de taille de bougie et la gestion du stoploss et de l’ouverture d’une nouvelle position quand le Supertrend se renverse. Voici le code adapté :
// Paramètres du Supertrend
Periode = 10
Multiplicateur = 3
// Calcul du Supertrend
St = Supertrend[Periode, Multiplicateur]
// Calcul de la taille de la bougie
TailleBougie = abs(high-low)
// Conditions d'entrée
Achat = close crosses over st and TailleBougie >= 10*pointsize and TailleBougie <= 15*pointsize
Vente = close crosses under st and TailleBougie >= 10*pointsize and TailleBougie <= 15*pointsize
// Exécution des ordres et gestion du stoploss et du renversement du Supertrend
if Achat then
buy 1 contract at market
set stop ploss 100
set target pprofit TailleBougie
endif
if Vente then
sellshort 1 contract at market
set stop ploss 100
set target pprofit TailleBougie
endif
// Gestion de la fermeture de la position en cas de renversement du Supertrend
if longonmarket and close crosses under st then
sell at market
if Vente then
sellshort 1 contract at market
set stop ploss 100
set target pprofit TailleBougie
endif
endif
if shortonmarket and close crosses over st then
exitshort at market
if Achat then
buy 1 contract at market
set stop ploss 100
set target pprofit TailleBougie
endif
endif
Ce code prend en compte la taille de la bougie pour définir le target profit, et aussi gère la fermeture et l’ouverture d’une nouvelle position quand le Supertrend se renverse, sans atteindre le stoploss ou le target profit initial.
Bonjour
Meci beaucoup pour ton aide
Pas mal d’erreur dans mon code, j’y ai pourtant passé du temps mais je débute
Encore merci
Je reviens vers vous :
J’ai testé le code, et en backtest et en réel il ne se lance pas.
Je m’explique, je prends le NZDUSD 30 minutes aujourd’hui, la bougie de 15h30 cloture au dessus du ST avec une taille de bougie de 12.3
Ouverture 0.60977
Fermeture 0.61089
Normalement, cela devrait ouvrir une position acheteuse mais rien ne s’est passé
J’ai vérifié , le systeme etait bien lancé.
Est ce qu’ily a une subtilité qui m’échappe?
Merci par avance
Nicolas , j’essaye de trouver
Ne serait ce pas dans le code à cet endroit qu’il y a une inversion Periode, Multiplicateur
J’essaye de comprendre par moi-m$eme, mais je suis d”butant
Merci par avance
// Paramètres du Supertrend
Periode = 10
Multiplicateur = 3
// Calcul du Supertrend
St = Supertrend[Periode, Multiplicateur]
J’ai reussi à trouver
Dernier élément : le TP se calcule sur la 5eme decimale.
Je suppose que je dois modifier cette ligne
// Calcul de la taille de la bougie
TailleBougie = abs(high-low)
et la remplacer par
// Calcul de la taille de la bougie
TailleBougie = abs(high-low)*10
Pour précision, j’utilise des lots “mini” dans IG PRT
C’est bon, j’ai trouvé comment faire!;)
Finalement, ma méthode de contournement ne marche pas.
J’ai essayé de
Modifier le take profit en faisant taillebougie*10
Modifier le calcul de taille de la bougie
Utiliser pipsize en lieu de pointsize
Cela ne fonctionne pas, en fait, lorsque je trouve 10 pips par exemple entre
1.07562 & 1.07463
Mais le code dans le cadre d’une position short va me generer un objectif à 1.07462 alors que je m’attends à 1.07362
Merci par avance pour votre aide
Bonjour à tous
Je me permet desolliciter votre aide de nouveau
J’essaye toujours d’apprendre avec le code ;ici, je remarque que le code sur ce bloc
- La position va bien se fermer
- La nouvelle position ne s(ouvre pas et je ne comprends aps pourquoi ; j’ai joué sur les parametres pour mettre plusieurs contrtats ouverts en même temps mais rien n’y faitSi qqun aurait une solution je suis preneurMErci par avance
// Gestion de la fermeture de la position en cas de renversement du Supertrend
if longonmarket and close crosses under st then
sell at market
if Vente then
sellshort 1 contract at market
set stop ploss 100
set target pprofit TailleBougie
endif
endif
if shortonmarket and close crosses over st then
exitshort at market
if Achat then
buy 1 contract at market
set stop ploss 100
set target pprofit TailleBougie
endif
endif