Bonjour,
J’aurais besoin d’un coup de pouce sur ce concept de code svp.
Il s’agit de sécuriser une partie des gains réalisés lorsque le système a généré au moins une partie du chemin vers le gain cible.
Mon problème dans mon code est que je ne parviens pas à ce que mon STOP soit placé en même temps que mon ordre (il se passe 1 barre “sans filet” avant que le stop ne soit placé) et je ne parviens pas à faire autrement…
La prise de position basée sur le RSI est juste là pour prendre des positions afin de tester le code. Ce qui m’importe c’est bien que si j’ai un target profit à 10, dès que 5 est atteint, je sécurise au moins 0.5 (je ne peux pas repasser négatif).
D’avance merci.
// 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 = 090000
// Annule tous les ordres en attente et ferme toutes les positions à l'heure "FLATAFTER"
DEFPARAM FLATAFTER = 173000
// Empêche le système de placer des ordres pour entrer sur le marché ou augmenter la taille d'une position avant l'heure spécifiée
noEntryBeforeTime = 090500
timeEnterBefore = time >= noEntryBeforeTime
// 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 = 172500
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
//Définition des variables
FILETSECURITE=10
SEUIL=5
RESERVE=2
// Conditions pour ouvrir une position acheteuse
IF NOT LongOnMarket AND RSI>60 AND RSI<70 AND timeEnterBefore AND timeEnterAfter AND not daysForbiddenEntry THEN
BUY 1 CONTRACTS AT MARKET
A=0
ENDIF
// Conditions pour ouvrir une position en vente à découvert
IF NOT ShortOnMarket AND RSI<40 AND RSI>30 AND timeEnterBefore AND timeEnterAfter AND not daysForbiddenEntry THEN
SELLSHORT 1 CONTRACTS AT MARKET
B=0
ENDIF
//Conditions pour fermer une position acheteuse
If LongOnMarket THEN
If (positionperf*positionprice)<SEUIL AND A=0 THEN
SELL AT positionprice-FILETSECURITE stop
ELSE
SELL AT positionprice+RESERVE stop
A=1
ENDIF
ENDIF
//Conditions pour fermer une position en vente à découvert
IF ShortOnMarket THEN
If (positionperf*positionprice)<SEUIL AND B=0 THEN
EXITSHORT AT positionprice+FILETSECURITE stop
ELSE
EXITSHORT AT positionprice-RESERVE stop
B=1
ENDIF
ENDIF
//Target profit
Set target profit 10
Ce qui m’importe c’est bien que si j’ai un target profit à 10, dès que 5 est atteint, je sécurise au moins 2 (je ne peux pas repasser négatif).
Bonjour Toto,
N’est-ce pas le principe du stop suiveur ? 🙂
Ton problem ne viendrait-il pas de PositionPerf qui , si je ne me trompe pas, concerne la performance d’une position cloturée.
Or, pour ton cas, il te faudrait la performance en cours (que tu devrait donc plutot calculer entre ton prix de revient et cours actuel).
Merci de ta proposition de réponse.
Je ne pense pas que ce soit le problème puisque comme je l’ai écrit, le stop est bien posé mais pas sur la barre du trade d’ouverture, mais sur la barre suivante (“(il se passe 1 barre “sans filet” avant que le stop ne soit placé”).