Stop Profit à X en fonction d'un gain à Y

Forum dédié à ProRealTime : les questions sur P, les trucs et astuces sur l'interface de trading...
Avatar du membre
Toto le Héros
Chevalier Jedi
Messages : 2425
Enregistré le : 07 oct. 2016 10:51

Re: Stop Profit à X en fonction d'un gain à Y

Message non lu par Toto le Héros »

Une petite remarque concernant le cas monté à 11.4 (avec seuil à10), mais clôture en dessous de 10.
Tu peux (si tu veux) modifier dans le programme pour que la condition de comparaison au seuil ne se fasse pas sur la valeur "close" mais sur la valeur "high" (cas LONG) ou "low" (cas short).
Cette condition sera en revanche forcément lue à la cloture de la Bougie de l'ut de ton algo (çà, çà ne change jamais).

Je ne recommande pas (généralement) de faire çà.
Certes dans "la plupart des cas", tu vas permettre le déclenchement du "relevage de ton stop de protection"...
Mais dans quelques cas, la distance de STOP mini ne sera plus respectée (par exemple dans le cas du DAX si tu passes par 11.4 mais que tu clôtures à moins de 5)... et là le programme ne peut placer le STOP et tu rentres dans un espèce de trou noir où tu as perdu le contrôle de ton robot qui risque de : ne plus avoir de STOP du tout ou de s'arrêter sur une erreur "impossible de placer ordre" etc...

Voilà, pour info donc...
Avatar du membre
fxbravo
Membre du Conseil Jedi
Messages : 8273
Enregistré le : 18 févr. 2016 09:38

Re: Stop Profit à X en fonction d'un gain à Y

Message non lu par fxbravo »

Merci pour les explications Toto :top:

Sinon, nouvelle question de débutant en trading auto:
J'ai une position qui s'est ouverte, le SL s'est transformé comme prévu en StopProfit, puis le cours est venu le toucher. Je suis donc sorti en positif, c'est cool.
Ma question est la suivante: ProOrder ne relance pas la stratégie si le cours retouche le même niveau?

Car je viens de vérifier, il n'y a pas de nouvel ordre de créer suite à la clôture.

Est-ce un paramètre à modifier, ou tout simplement ce n'est pas possible?

Merci d'avance pour ton retour :top:
Avatar du membre
fxbravo
Membre du Conseil Jedi
Messages : 8273
Enregistré le : 18 févr. 2016 09:38

Re: Stop Profit à X en fonction d'un gain à Y

Message non lu par fxbravo »

Toto le Héros a écrit :De ce fait, le code est conçu pour ne prendre qu'UNE et UNE SEULE POSITION. C'est à dire que quand une clôture de position a eu lieu, il n'en reprendra pas sans que tu STOP la stratégie (bouton évoqué juste avant, mais là tu le fais alors que le programme ne tourne pas... Il te faudra ensuite mettre la stratégie à la corbeille (icône de poubelle à côté du STOP) et la recharger...
Bon, en relisant, j'ai ma réponse ;)
Avatar du membre
Toto le Héros
Chevalier Jedi
Messages : 2425
Enregistré le : 07 oct. 2016 10:51

Re: Stop Profit à X en fonction d'un gain à Y

Message non lu par Toto le Héros »

En pratique c'est possible. J'ai bloqué la possibilité dans le programme avec la dernière condition "if strategyprofit=0" qui théoriquement n'arrive jamais alors qu'une position a été prise (sauf dans le cas où le système parfaitement flat en fin de journée... mais dans ce cas tu as jusqu'au lendemain matin pour l'arrêter manuellement et redémarrer un nouveau programme avec une nouvelle cible d'entrée).
Tu peux la retirer (la condition strategyprofit=0) si tu le souhaites et le programme reprendra une position dès que les conditions seront de nouveau réunies (ENTREE).
Avatar du membre
fxbravo
Membre du Conseil Jedi
Messages : 8273
Enregistré le : 18 févr. 2016 09:38

Re: Stop Profit à X en fonction d'un gain à Y

Message non lu par fxbravo »

Merci pour tes explications Toto :top:

Je teste ça et te fais un retour.
Avatar du membre
fxbravo
Membre du Conseil Jedi
Messages : 8273
Enregistré le : 18 févr. 2016 09:38

Re: Stop Profit à X en fonction d'un gain à Y

Message non lu par fxbravo »

Salut Toto,

Pour le moment, tout roule :top:

Sinon, je me demandais s'il était possible, une fois le Stop profit enclenché, de rajouter un trailing stop qui se met à XX% du gain en cours (ou a la cloture de la Bougie)

En gros, ma position en cours est à +50 points. Mon SL est passé en StopProfit à +1. Donc au pire je sors à 0 (cout du SLG de 1).

Mais je me suis dit, c'est dommage de ne pas optimiser la chose ;)

Donc, dans mon exemple ci-dessus, sur une stratégie basée sur UT1min, je passe à +50 (Oui, gros break out :lol:). Je souhaiterais, si c'est possible, mettre en place le fameux %TrailingStop: ce qui me donnerai un Stop Profit à +10 (20% de 50 points). Et qui ne peut que monter, of course ;). Donc si à la Bougie d'après on descend à +30, le SP reste à +10. Mais si ca remonte à +100, le SP se met à +20, etc.....

Penses-tu que cela soit possible à coder?
Avatar du membre
Toto le Héros
Chevalier Jedi
Messages : 2425
Enregistré le : 07 oct. 2016 10:51

Re: Stop Profit à X en fonction d'un gain à Y

Message non lu par Toto le Héros »

Salut FX,
Oui bien sûr, il y a des codes assez basiques pour faire du trailing stop dans un sens ou l'autre.
Je peux jeter un oeil là-dessus demain soir au + tard je pense et reviendrai vers toi avec un code amélioré.
J'ai aussi pensé à une petite astuce MTF qui pourrait améliorer le code (de manière optionnelle). Je verrai si j'ai le temps d'implémeter çà aussi.
Avatar du membre
fxbravo
Membre du Conseil Jedi
Messages : 8273
Enregistré le : 18 févr. 2016 09:38

Re: Stop Profit à X en fonction d'un gain à Y

Message non lu par fxbravo »

Super Toto, merci beaucoup pour ton aide :top:

J'allais justement te demander si tu pouvais faire un petit cours sur le MTF ;)

Sinon, petit retour de l'algo: testé en réel avant 15h, le trade s'enclenche impeccablement, mais en regardant de plus près je vois que le SL est à -58.8 au lieu des -30 paramétré! gross stress :lol:
En fait, c'était la distance mini du SL imposé par ig pour cause de BCE ;)
Du coup, y-a-t-il un moyen d'annuler le système si le SL imposé par ig est supérieur à celui défini par le système?

Merci encore pour ton aide, j'apprends beaucoup (et je me suis mis à regarder les vidéos de prorealcode pour me former ;))
Avatar du membre
Toto le Héros
Chevalier Jedi
Messages : 2425
Enregistré le : 07 oct. 2016 10:51

Re: Stop Profit à X en fonction d'un gain à Y

Message non lu par Toto le Héros »

Salut FX,
Je suis en cours de test sur la version TS (trailing stop).
Je reviens vers toi dès que ok.
J'ai pas fait encore mon mini journalier ce matin en manuel, donc j'aurai peut-être un peu moins de temps que prévu ; mais çà devrait aller. Je te tiens au jus.

Concernant l'incident d'hier, effectivement c'est chaud et çà ne doit jamais arriver.
Je suis d'ailleurs très surpris que çà arrive en fait.
(Ça ne m'est jamais arrivé en + d'1 an de trading automatique... cela dit, je en trade pas sur des UTs aussi courtes. Mon plus bas étant 5' à date avec des SLs plus éloignés)

Normalement, le robot devrait se mettre en défaut sur un cas comme celui-ci.
La seule explication que je vois est que le SL n'est pas strictement programmé avec l'instruction "Stop Loss". C'est dû au fait qu'on souhaite déplacer le SL régulièrement, mais je pourrais pour la prise de position programmer un peu différemment.
En attendant, ce serait bien que tu fasses remonter l'info à prt parce que c'est de fait un bug et que ce sera utile à d'autres d'améliorer. J'essaierai de reproduire le bug en DEMO (lors de la prochaine BCE).

A+
Avatar du membre
fxbravo
Membre du Conseil Jedi
Messages : 8273
Enregistré le : 18 févr. 2016 09:38

Re: Stop Profit à X en fonction d'un gain à Y

Message non lu par fxbravo »

Salut Toto,

Merci pour ton retour. Prends ton temps, priorité à ton trading :top:

J’ai fait remonter le bug à prt, ils investiguent depuis hier ;)

Excellente fin de semaine à toi!
Avatar du membre
Toto le Héros
Chevalier Jedi
Messages : 2425
Enregistré le : 07 oct. 2016 10:51

Re: Stop Profit à X en fonction d'un gain à Y

Message non lu par Toto le Héros »

Bon j'ai profité de la pause de midi pour coder le trailing stop % pour ton cas.
Le code ne change pas beaucoup en fait. La variable protect à 1 est remplacé par 0.2 (20%) et devient un % de gain acquis à sauver.
Cerise sur le gâteau, je te fais suivre un 3è code en plus du LONG et du short, il s'agit d'un code qui combine les 2 et qui les "arbitre" en MTF. En clair, une section au départ du code est dans le time frame daily (çà pourrait être autre chose) et calcule un filtre de tendance (BUILL or bear) très basique pour l'exercice (EMA50). La suite du code dans l'unité "default" (pour le coup, ce sera l'ut dans laquelle tu appelles ton programme - 1 minutes ou x scondes dans ton cas je crois) utilise le résultat de ce filtre pour plasser l'ordre stop (vente ou achat). Voilà... Pour l'exemple donc... mais on comprend bien à partir de là, la puissance du MTF !
Avatar du membre
Toto le Héros
Chevalier Jedi
Messages : 2425
Enregistré le : 07 oct. 2016 10:51

Re: Stop Profit à X en fonction d'un gain à Y

Message non lu par Toto le Héros »

//-------------------------------------------------------------------------
// Code principal : FXB short ts
//-------------------------------------------------------------------------
//-------------------------------------------------------------------------
// Main code : fxb short TS
//-------------------------------------------------------------------------

// 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 à l'heure "FLATAFTER"
DEFPARAM FLATAFTER = 213000

// 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 = 090000
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 = 173000
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

//Variables
ENTREE=12095//Seuil de déclenchement pour entrer à la vente sur le marché
SEUIL=10//Gain minimum déclenchant la protection de la position
SL=10//Stop Loss INITIAL
TP=20//Target Profit
PROTECT=0.20//Nouveau Stop correspondant au % de gain acquis à sauver
once lock=0//lock bloquera le stop de protection
once TOBESAVED=0

// Conditions pour ouvrir une position vendeuse
IF close>ENTREE and NOT shortonmarket and timeEnterBefore AND timeEnterAfter AND not daysForbiddenEntry and STRATEGYPROFIT=0 THEN
SELLSHORT 1 CONTRACT AT ENTREE STOP
EXITSHORT AT ENTREE-TP LIMIT
EXITSHORT AT ENTREE+SL STOP
ENDIF

IF shortonmarket then
EXITSHORT AT TRADEPRICE-TP LIMIT
if close<=(TRADEPRICE-SEUIL) or lock=1 then
lock=1
TOBESAVED=(TRADEPRICE-CLOSE)*PROTECT
if TOBESAVED<TOBESAVED[1] then
TOBESAVED=TOBESAVED[1]
endif
EXITSHORT AT TRADEPRICE-(TOBESAVED) STOP
else
EXITSHORT AT TRADEPRICE+SL STOP
ENDIF
endif
Avatar du membre
Toto le Héros
Chevalier Jedi
Messages : 2425
Enregistré le : 07 oct. 2016 10:51

Re: Stop Profit à X en fonction d'un gain à Y

Message non lu par Toto le Héros »

//-------------------------------------------------------------------------
// Code principal : FXB LONG ts
//-------------------------------------------------------------------------
//-------------------------------------------------------------------------
// Main code : fxb long ts
//-------------------------------------------------------------------------

// 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 à l'heure "FLATAFTER"
DEFPARAM FLATAFTER = 213000

// 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 = 090000
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 = 173000
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

//Variables
ENTREE=12090//Seuil de déclenchement pour entrer à l'achat sur le marché
SEUIL=10//Gain minimum déclenchant la protection de la position
SL=10//Stop Loss INITIAL
TP=20//Target Profit
PROTECT=0.20//Nouveau Stop correspondant au % de gain acquis à sauver
once lock=0//lock bloquera le stop de protection
once TOBESAVED=0

// Conditions pour ouvrir une position acheteuse
IF close<ENTREE and NOT longonmarket and timeEnterBefore AND timeEnterAfter AND not daysForbiddenEntry and STRATEGYPROFIT=0 THEN
BUY 1 CONTRACT AT ENTREE STOP
SELL AT ENTREE+TP LIMIT
SELL AT ENTREE-SL STOP
ENDIF

IF longonmarket then
SELL AT TRADEPRICE+TP LIMIT
if close>=(TRADEPRICE+SEUIL) or lock=1 then
lock=1
TOBESAVED=(CLOSE-TRADEPRICE)*PROTECT
if TOBESAVED<TOBESAVED[1] then
TOBESAVED=TOBESAVED[1]
endif
SELL AT TRADEPRICE+TOBESAVED STOP
else
SELL AT TRADEPRICE-SL STOP
ENDIF
endif
Avatar du membre
Toto le Héros
Chevalier Jedi
Messages : 2425
Enregistré le : 07 oct. 2016 10:51

Re: Stop Profit à X en fonction d'un gain à Y

Message non lu par Toto le Héros »

Cherry on the cake ;)
//-------------------------------------------------------------------------
// Code principal : FXB dailyMTF ts
//-------------------------------------------------------------------------
//-------------------------------------------------------------------------
// Main code : fxb short TS
//-------------------------------------------------------------------------

// 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 à l'heure "FLATAFTER"
DEFPARAM FLATAFTER = 213000

// 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 = 090000
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 = 173000
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

//Variables
ENTREELONG=12090//Seuil de déclenchement pour entrer à l'achat sur le marché
ENTREESHORT=12080//Seuil de déclenchement pour entrer à la vente sur le marché
SEUIL=10//Gain minimum déclenchant la protection de la position
SL=10//Stop Loss INITIAL
TP=20//Target Profit
PROTECT=0.20//Nouveau Stop correspondant au % de gain acquis à sauver
once lock=0//lock bloquera le stop de protection
once TOBESAVED=0

//1 day TF (get the trend of the daily chart)
timeframe(daily,updateonclose)//could be "1 hour", "15 minutes"...
MOYENNE=ExponentialAverage[50](close)
BULLTREND=close>MOYENNE
BEARTREND=close<MOYENNE

//"default" timeframe (the timeframe you will lauch/"drive" the strategy on)
timeframe(default)

// Conditions pour ouvrir une position acheteuse
IF BULLTREND and close<ENTREELONG and NOT longonmarket and timeEnterBefore AND timeEnterAfter AND not daysForbiddenEntry and STRATEGYPROFIT=0 THEN
BUY 1 CONTRACT AT ENTREELONG STOP
SELL AT ENTREELONG+TP LIMIT
SELL AT ENTREELONG-SL STOP
ENDIF

IF longonmarket then
SELL AT TRADEPRICE+TP LIMIT
if close>=(TRADEPRICE+SEUIL) or lock=1 then
lock=1
TOBESAVED=(CLOSE-TRADEPRICE)*PROTECT
if TOBESAVED<TOBESAVED[1] then
TOBESAVED=TOBESAVED[1]
endif
SELL AT TRADEPRICE+TOBESAVED STOP
else
SELL AT TRADEPRICE-SL STOP
ENDIF
endif

// Conditions pour ouvrir une position vendeuse
IF BEARTREND and close>ENTREESHORT and NOT shortonmarket and timeEnterBefore AND timeEnterAfter AND not daysForbiddenEntry and STRATEGYPROFIT=0 THEN
SELLSHORT 1 CONTRACT AT ENTREESHORT STOP
EXITSHORT AT ENTREESHORT-TP LIMIT
EXITSHORT AT ENTREESHORT+SL STOP
ENDIF

IF shortonmarket then
EXITSHORT AT TRADEPRICE-TP LIMIT
if close<=(TRADEPRICE-SEUIL) or lock=1 then
lock=1
TOBESAVED=(TRADEPRICE-CLOSE)*PROTECT
if TOBESAVED<TOBESAVED[1] then
TOBESAVED=TOBESAVED[1]
endif
EXITSHORT AT TRADEPRICE-(TOBESAVED) STOP
else
EXITSHORT AT TRADEPRICE+SL STOP
ENDIF
endif
Avatar du membre
Toto le Héros
Chevalier Jedi
Messages : 2425
Enregistré le : 07 oct. 2016 10:51

Re: Stop Profit à X en fonction d'un gain à Y

Message non lu par Toto le Héros »

Prends bien le temps de tester bien entendu, mais a priori çà fonctionne
Avatar du membre
fxbravo
Membre du Conseil Jedi
Messages : 8273
Enregistré le : 18 févr. 2016 09:38

Re: Stop Profit à X en fonction d'un gain à Y

Message non lu par fxbravo »

Merci beaucoup Toto! C’est topissime :top:

Je teste ça semaine prochaine et te ferai mon retour d’expérience (et les quelques questions qui vont venir ;))

Je te souhaite un excellent week-end.
Avatar du membre
Toto le Héros
Chevalier Jedi
Messages : 2425
Enregistré le : 07 oct. 2016 10:51

Re: Stop Profit à X en fonction d'un gain à Y

Message non lu par Toto le Héros »

Bon WE également.
Ravi d'avoir à répondre à des questions (pertinentes ;))
Avatar du membre
Toto le Héros
Chevalier Jedi
Messages : 2425
Enregistré le : 07 oct. 2016 10:51

Re: Stop Profit à X en fonction d'un gain à Y

Message non lu par Toto le Héros »

Pour salon demain je devrais être là dès l'ouverture. (Je porterai sans doute un T-Shirt noir "Fender" ;) )
J'ai prévu d'assister dès 9h30.
J'ai un trou dans mon planning vers 15h si çà te va. Je trainerai du côté du bar (pas sûr qu'il y ait de la bière... mais un café ira très bien ;)
A deux mains ;)
Avatar du membre
fxbravo
Membre du Conseil Jedi
Messages : 8273
Enregistré le : 18 févr. 2016 09:38

Re: Stop Profit à X en fonction d'un gain à Y

Message non lu par fxbravo »

:top:

Je passerai vers 15h vers le bar ;)

A demain
Avatar du membre
fxbravo
Membre du Conseil Jedi
Messages : 8273
Enregistré le : 18 févr. 2016 09:38

Re: Stop Profit à X en fonction d'un gain à Y

Message non lu par fxbravo »

Ravi d’avoir pu échanger (rapidement) au salon. Je continue de tester semaine prochaine et de bien comprendre le MTF afin de te soumettre quelques questions ;)

Excellent week-end Toto :top: