Take profit à distance du dernier plus bas
Forums › ProRealTime forum Français › Support ProOrder › Take profit à distance du dernier plus bas
- This topic has 7 replies, 2 voices, and was last updated 4 years ago by Stef1618.
-
-
06/01/2020 at 11:44 PM #134125
Bonjour,
Je cherche à définir un take profit à une distance en point égale au dernier plus bas pour un achat long.
J’ai essayé les 2 codes suivants et à chaque fois le take profit est placé bien plus loin que la valeur attendue:
12345678910once tp1 = 12000 //valeur fixée arbitrairement comme point de départif rsi[14] < 50 thentp1 = min(tp1,close)endifif tp1 < 12000 and rsi[14] crosses over 50 thenbuy X contracts at marketset target pprofit (close - tp1)endif12345678if rsi[14] < 50 and close < close[1] thentp1 = closeendifif rsi[14] crosses over 50 thenbuy X contracts at marketset target pprofit (close - tp1)endifAuriez-vous une idée de codage valide?
Merci,
06/02/2020 at 8:00 AM #134143Je pense que ta deuxième version est meilleure, mais je modifierai le pprofit en profit pour être en version prix et non en points, si le pointsize n’est pas égal à 1, cela pourrait poser problème.
1set target profit (close - tp1)Par ailleurs, il est possible que parfois cette soustraction donne une valeur négative ? à tester avec un GRAPH close-tp1
06/09/2020 at 5:31 PM #135340Bonjour,
J’avais posté une réponse il y a quelques jours mais je vois qu’elle n’est pas parue. L’ayant fait depuis mon smartphone il y a du avoir un soucis.
Juste pour dire que je suis effectivement arrivé à mes fin en utilisant la deuxième version et “profit” au lieu de “pprofit”.
Merci encore Nicolas
06/09/2020 at 6:06 PM #135345Du coup pour aller plus loin, j’utilise ce code en semi-automatique, c’est-à-dire que je lance le code seulement quand je repère une potentielle opportunité et n’est pas destiné à tourner tout seul tout le temps.
Dans l’idée je souhaite acheter quand le MACD passe 0, mais je ne souhaite pas forcément que la position soit prise au premier croisement mais à un croisement ultérieur.
Par exemple sur l’image je lance le robot au niveau de la flèche rouge et je souhaite que l’ordre soit pris à la flèche verte, et non la bleue, soit au deuxième croisement du macd au dessus de 0.
En utilisant le code suivant la position s’ouvre au premier croisement alors que j’ai ajouté la variable m comme déclencheur.
1234567891011121314151617181920212223242526272829303132defparam cumulateorders = falseif strategyprofit <> 0 thenquitendifX = 0.5i1 = monmacdonce m = 0if i1 crosses under 0 thentp = closem = 1endifif i1 < 0 and not onmarket and close < close[1] thentp = closeendifif m = 1 and i1 crosses over 0 thenbuy X contracts at marketset target pprofit (close - tp)endifif onmarket and i1 crosses under 0 thensell at marketendifset stop ploss 150Quelle modification puis-je apporter?
06/10/2020 at 8:37 AM #135376Logique puisque ta condition ‘if m = 1’ est juste en dessous de ‘m=1’ (ligne 15), donc le code fera ce que tu lui demandes, à la ligne 22 la variable m est bien égale à 1.
Le code est lu de haut en bas.
Soit tu fais un incrément de m :
m = m+1
et à la ligne 15 tu testes si m>1
Soit tu inverses la position des lignes pour que ta ligne 15 soit lu aux bougies après celle ou tu donnes à m la valeur 1.
06/10/2020 at 11:25 PM #13552006/11/2020 at 8:06 AM #135540La variable prend une valeur à 1 peut être avant le backtest lors de la lecture de l’historique, dans ce cas faire un
1defparam prealoadbars=0en tête du code de la stratégie.
Quand on veut tester la valeur d’une variable on peut utilise GRAPH, soit ici :
1GRAPH mce qui pourrait t’aider à comprendre pourquoi “m” change d’état, et quand !
06/11/2020 at 8:43 AM #135547 -
AuthorPosts
Find exclusive trading pro-tools on