ProRealTime
Pour discuter sur l’interface de ProRealTime Software, nos configurations graphiques...

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

par fxbravo » 26 sept. 2018 15:14

Salut Toto,

Petite question sur ton code: A quoi correspond la variable "TOBESAVED=0"?

Pour ma mémoire: je dois toujours laisser "lock=0"?

Merci d'avance pour ton retour :top:

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

par fxbravo » 26 sept. 2018 15:27

Et en prime je rajoute une autre question concernant le MTF:

Comment aurais-tu écrit le code si on devait tester les conditions sur 3 TF (genre la TF par défaut + TF15min +TF1H)?

Merci d'avance pour ton retour ;)

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

par Toto le Héros » 28 sept. 2018 10:23

Salut FX,
Tobesaved et lock sont =0 pour la phase d'initialisation des variables. (instruction : "once") Il faut laisser tel quel en effet.
Tobesaved retournera ensuite dans le programme la valeur des gains à conserver (avec PROTECT qui définit le % à conserver).
Pour le MTF, à ma connaissance, on ne peut travailler qu'avec 2 UTs simultanément.
A+

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

par fxbravo » 28 sept. 2018 11:15

Super! Merci beaucoup Toto pour tes réponse :top:

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

par fxbravo » 28 sept. 2018 15:30

Salut Toto,

Petite question en passant (postée aussi sur prorealcode):

J’ai une stratégie basée sur un indicateur sur UT 4H, avec un SL à 35 points et un TP à 100 points.

La position se ferme par 3 critères:

SL touché
TP touché
Next Bougie 4H qui ne respecte pas l’indicateur (sortie AT MARKET)
Ma demande est la suivante:

Je souhaiterais que si la position est en gain de X points (20 par exemple), le SL remonte automatiquement à +Y points (+3 points par exemple).

Est-il possible de le faire tel quel dans l’UT 4H, où bien est-il possible de se baser sur une autre UT (MTF inside ;)) comme l’UT 15min par exemple, pour exécuter cette condition (du style, IF UT15 = +20 points Then SL=+3)?

Ci-dessous le code que j’utilise:

Code UT H4:

==================

indicator1 = CALL "Signal"(close)
c1 = (indicator1 = 1)

IF c1 AND timeEnterBefore AND timeEnterAfter AND not daysForbiddenEntry THEN
BUY 1 CONTRACT AT MARKET
ENDIF


// Conditions pour ouvrir une position en vente à découvert
indicator3 = CALL "Signal"(close)
c2 = (indicator3 = -1)

IF c2 AND timeEnterBefore AND timeEnterAfter AND not daysForbiddenEntry THEN
SELLSHORT 1 CONTRACT AT MARKET
ENDIF


SET stop ploss 35
set target pprofit 100

=================


Merci d’avance pour ton retour ;)


Excellente journée et surtout excellent weekend :top:

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

par fxbravo » 01 oct. 2018 13:39

Réponse de Nicolas, l'admin de ProRealCode:

En effet, on peut le faire dans un timeframe plus petit, pour éviter d’attendre la fin de la bougie de 4 heures pour le faire. Dans ce cas, il faudra lancer la stratégie dans le timeframe le plus petit, ci-dessous le code de ta stratégie modifiée, incluant le breakeven (non testé).

Code : #

timeframe(4 hours,updateonclose)
indicator1 = CALL "Signal"(close)
c1 = (indicator1 = 1)
 
IF c1 AND timeEnterBefore AND timeEnterAfter AND not daysForbiddenEntry THEN
BUY 1 CONTRACT AT MARKET
ENDIF
 
 
// Conditions pour ouvrir une position en vente à découvert
indicator3 = CALL "Signal"(close)
c2 = (indicator3 = -1)
 
IF c2 AND timeEnterBefore AND timeEnterAfter AND not daysForbiddenEntry THEN
SELLSHORT 1 CONTRACT AT MARKET
ENDIF
 
 
SET stop ploss 35
set target pprofit 100
 
timeframe(1 minute)
startBreakeven = 20 //how much pips/points in gain to activate the breakeven function?
PointsToKeep = 3 //how much pips/points to keep in profit above of below our entry price when the breakeven is activated (beware of spread)
 
//reset the breakevenLevel when no trade are on market
IF NOT ONMARKET THEN
breakevenLevel=0
ENDIF
 
// --- BUY SIDE ---
//test if the price have moved favourably of "startBreakeven" points already
IF LONGONMARKET AND close-tradeprice(1)>=startBreakeven*pipsize THEN
//calculate the breakevenLevel
breakevenLevel = tradeprice(1)+PointsToKeep*pipsize
ENDIF
 
//place the new stop orders on market at breakevenLevel
IF breakevenLevel>0 THEN
SELL AT breakevenLevel STOP
ENDIF
// --- end of BUY SIDE ---
 
// --- SELL SIDE ---
//test if the price have moved favourably of "startBreakeven" points already
IF SHORTONMARKET AND tradeprice(1)-close>=startBreakeven*pipsize THEN
//calculate the breakevenLevel
breakevenLevel = tradeprice(1)-PointsToKeep*pipsize
ENDIF
 
//place the new stop orders on market at breakevenLevel
IF breakevenLevel>0 THEN
EXITSHORT AT breakevenLevel STOP
ENDIF
// --- end of SELL SIDE ---

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

par pierrep » 30 nov. 2018 17:17

Bonjour Toto,

J'avais en tête une stratégie de protection de la position à parti d'un code définissant le niveau d'entré, et j'ai vu ce que tu as proposé a FX au niveau de codage. Je m'en suis inspiré pour écrire le code et je t'en remercie :merci: . Mais je butte sur un problème. Je te l'expose.

D'abord, j'ai défini d'autres critères de protection de la position prise; en gros, je détermine deux (ce sera 5 mais ici je simplifie) seuils de protection après la prise de position. Exemple:

On va dire achat 11200. L'achat est déterminé par un algo qui donne le niveau d'achat. UT = 1 min
SL=20
TP =50

si seuil 1 =+X dépassé alors vente si gain sécurisé de n point
si seuil 2= +XX dépassé alors vente si gain sécurisé de m points
protect1= n
pretect2=m

Je me suis fortement inspiré de tes codes. Mais j'ai un problème en backtest, dès que la première position est prise et qu'elle est clôturée en fonctionnant parfaitement (TP ou SL atteint ou déclenchement d'un des seuils), les positions suivantes sont mal gérées: clôture en avance de phase hors des niveau définis, etc...
Enfin c'est ce qu'il me semblait par ce qu'en relançant les test j'ai l'impression que ça ne marche plus du tout.... :(

j'ai bien sûr pas mis de strategyprofit=0 dans le code car je veux pouvoir prendre position a chaque fois que l'algo me donne l'opportunité dans la journée.


le code que j'ai rentré:

Code : #


DEFPARAM CumulateOrders = False 
DEFPARAM FLATAFTER = 173000

noEntryBeforeTime = 090000
timeEnterBefore = time >= noEntryBeforeTime

noEntryAfterTime = 170000
timeEnterAfter = time < noEntryAfterTime

ENTREE=11138 //Seuil de déclenchement pour entrer à l'achat sur le marché

//seuils déclenchant les protections de la position
Seuil1=6
seuil2=7

SL=20   //Stop Loss INITIAL
TP=50    //Target Profit

//gains minimums protégés
protect1=1  
protect2 = 4

once lock1=0
once lock2 = 0

// Conditions pour ouvrir une position acheteuse
IF close<ENTREE and NOT longonmarket and timeEnterBefore AND timeEnterAfter 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
SELL AT TRADEPRICE-SL STOP
if close>=(TRADEPRICE+SEUIL1) or lock1=1 then
lock1=1
SELL AT TRADEPRICE+protect1 STOP
endif
if close>=(TRADEPRICE+SEUIL2) or lock2=1 then
lock2=1
lock1=0
SELL AT TRADEPRICE+protect2 STOP
endif

ENDIF

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

par Toto le Héros » 30 nov. 2018 17:54

De mémoire c'est normal car le robot était sensé être arrêté, puis redémarré.
Mais je peux revérifier çà dans la journée de lundi je pense.
Je te tiens au jus lundi après-midi.

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

par pierrep » 30 nov. 2018 18:53

Merci Toto :top:
Bon week end

Pierre

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

par Toto le Héros » 03 déc. 2018 11:53

@pierrep :
Spontanément, je dirais ceci.
Le problème vient certainement des "locks" qui ne peuvent pas être remis à 0 systématiquement ; et qui doivent l'être pour que le programme comprenne qu'il doit attendre le franchissement d'un seuil avant de remonter le SL initial.
Il me semblait que ceci n'était en fait pas un problème puisque de toute façon, il fallait changer le niveau du seuil d'entrée (11 138 dans ton programme) après chaque exécution ; puisque le trade suivant n'avait généralement pas le même niveau d'entrée cible.
(L'instruction once lock1=0 et once lock2=0 permettent d'initialiser à 0 les locks à chaque redémarrage du programme)

Pour pallier au problème, (si tu souhaites répèter des entrées sur le même niveau, c'est à dire sans arrêt manuel du programme après chaque sortie de position) tu peux essayer d'intercaler les lignes de code suivantes dans ton programme (avant //Conditions pour ouvrir une position acheteuse) :
if not on market then
lock1=0
lock2=0
endif

Cela va réinitialiser les protections dès qu'il n'y a pas de position ouverte.
(NB : par ailleurs, si lock2>lock1, je t'encourage à ne pas repasser lock1 à 0 (après lock2=1 dans ton programme). C'est une ligne de code inutile et si tu as 5 niveaux tu vas taper pas mal de lignes inutiles... et rendre le programme moins lisible.)
Si la fonction des "lock" n'est pas claire, n'hésite pas à me redemander.

En espèrant que çà fonctionne. Tu me diras et si ce n'est pas le cas, j’approfondirai.
A+

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

par pierrep » 03 déc. 2018 20:39

Bonsoir Toto

Merci pour le retour, je vais tester cela dès que j'aurai un peu de temps. Là ça tombe mal, j'ai commencé un nouveau boulot depuis ce matin, donc en semaine plus trop de dispo.

Je te tiendrai au courant.
Et un grand merci encore.
Pierre
Pierre

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

par pierrep » 04 déc. 2018 22:10

Bonsoir Toto,

je viens de tester avec tes modifications. C'est nickel, ça marche.
Merci beaucoup. :merci:

J'ai une question supplémentaire;


J'ai l'algo qui détermine mon niveau d'achat P1.
Je veux qu'à ce niveau P1 je ne puisse prendre qu'une seule fois une position, avant que l'algo ne détermine un nouveau niveau P2.
Si je veux faire cela, il faut ?
1) que je mette un compteur "pos" qui passe à 1 lorsque P1 est déterminé.
2) que je rajoute dans les conditions pour ouvrir une positions acheteuse la condition pos =1
3) une remise de pos à 0 lorsque une position est prise.

Tu trouve cela correct?


Pierre

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

par Toto le Héros » 05 déc. 2018 12:17

@pierrep :
Salut,
Super si çà marche.
Oui, je ferais comme tu le suggères.
Avec un once compteur=0 comme initialisation.
A+

Sujets similaires
Adaptation des Take-Profit/SL en fonction des Points-Pivots
par Elliott » 19 août 2019 15:43 (4 Réponses)
HELP [PRT - STREAM DECK] Stop profit déclenche un ordre stop
Fichier(s) joint(s) par JPM55 » 27 juin 2022 07:38 (11 Réponses)
Gain de 1pt avec quel stop ?
par Valentino » 31 août 2015 16:29 (14 Réponses)
PRT: affichage préalable du stop gain et perte
Fichier(s) joint(s) par max38250 » 22 sept. 2020 14:53 (6 Réponses)
stop et take profit à chaque trade?
par GDX23 » 27 oct. 2012 09:56 (8 Réponses)
Transformer un take profit en stop suiveur
par finplus » 08 mai 2016 17:17 (6 Réponses)
ratio [ target profit / stop loss ] scalping
Fichier(s) joint(s) par chrono » 30 sept. 2016 14:58 (5 Réponses)
Stop loss / take profit et volatilité ?
par TDTrading » 02 juin 2018 09:29 (4 Réponses)
Stop profit sur prt ig
par tradanto » 14 juil. 2018 02:02 (3 Réponses)
Mettre un stop profit sur un compte à risque limité
par thomas88 » 24 août 2018 10:27 (22 Réponses)