Bonjour,
J’ai crée des indicateurs binaires qui correspondent parfaitement à mes codes (backtests). En dehors du marché l’indicateur est à “0”, lorsque je dois entrer sur le marché mon indicateur passe à “1” et sortie il repasse à “0”.
J’aurais souhaité programmer mes indicateurs afin qu’ils puissent passer à “0” lorsque mon backtest déclanche au StopLoss. Je n’y arrive pas et c’est sur ce point que j’aurais besoin de votre aide.
Mes codes sont en “daily” ou “hebdo”, mes stop loss sont en moyenne à 7% de mon prix d’entrée. Sachant que lorsque mon indicateur passe à “1”, je rentre sur le marché à l’ouverture de la barre suivante. Idem pour la sortie (sauf pour le StopLoss qui déclanche instantanément bien sûr).
Je vous remercie par avance pour votre aide. N’hésitez pas à me recontacter si vous avez besoin de plus de renseignements.
Bien cordialement
Bonjour,
sans code, ni même la nature du stop loss (stop fixe avec commande set stop loss? en points? pending order de type “sell at stop” avec jeu simple ou complexe de condition(s)? avec ou sans arborescence faisant intervenir des choix de stops différents?), la requête est plutôt vague… La probabilité d’obtenir une réponse augmenterait en fournissant, pas forcément tous les codes en entier, mais a minima les lignes de code de backtest relatives au stop, ainsi que ce que tu as déjà tenté pour la partie indicateur qui n’a pas fonctionné, pour y déceler ce qui ne va pas. Au moins pour un des backtests à défaut de tous, si ça peut suffire à t’inspirer des solutions pour les autres. Si ça se trouve tu as déjà presque fini et il n’y a qu’une toute petite modification à apporter au travail déjà fourni…
Bonjour,
Je comprends le manque de précision de ma demande. Ci joint le code et l’indicateur correspondant.
Merci par avance
code:
REM Achat
indicator3 = Average[2](close)
indicator4 = Average[200](close)
c6 = (indicator3 > indicator4) and adx[6] > 20
c7 = (HistoricVolatility[16](close) > 0.12)
c8 = (HistoricVolatility[255](close) > 0.14)
c9 = (RSI[2](close) crosses under 5)
c10 = (close > Average[190])
IF not longonmarket and c6 and c7 and c8 and c9 and c10 THEN
BUY 1 shares AT MARKET
ENDIF
// Vente
c11 = (RSI[2](close) crosses over 94)
IF c11 THEN
SELL AT MARKET
ENDIF
SET STOP%LOSS 7
Indicateur:
//ACHAT
indicator1 = average[2](close)
indicator2 = average[200](close)
c1 = (indicator1 > indicator2) and adx[6] > 20
c2 = (HistoricVolatility[16](close) > 0.12)
c3 = (RSI[2](close) crosses under 5)
c4 = (HistoricVolatility[255](close) > 0.14)
c5 = (close > Average[190](close))
longok = (c1 and c2 and c3 and c4 and c5)
if longok then
flag = 1
ENDIF
//Vente
out = RSI[2](close)
outok2= out crosses over 94
IF outok2 and flag=1 THEN
flag=0
ENDIF
return flag
Un indicateur ne peut pas récupérer les infos d’une stratégie, ou alors j’ai mal compris la question ?
Dans l’idée, je pense qu’il faudrait donc modifier le code de ton indicateur pour qu’il passe à 0 si le prix a retracer de 6% (soit la valeur de ton stoploss) depuis qu’il est passé à 1, non ?
Bonjour,
Parfaitement, je souhaite rajouter une “condition” au code de l’indicateur afin qu’il passe à “0” si le prix descends de 7% au dessous du prix d’entrée (idem Stop%loss 7 du backtest)
Bonsoir, a priori on peut tester ainsi: définir un niveau simulé d’entrée à l’open qui suit la bougie du signal, et tester si un low passe sous les 7% de ce niveau, j’ai mis le flag à -1 pour le cas du stop touché à 7% (sans tenir compte d’éventuels spreads selon l’actif traité) afin de mieux voir quand ça arrive, mais on peut tout aussi bien le mettre à 0 comme dans le cas de la vente, c’est juste pour mieux voir.
(NB: les lignes ajoutées sont 23 et 26 à 31)
indicator1 = average[2](close)
indicator2 = average[200](close)
c1 = (indicator1 > indicator2) and adx[6] > 20
c2 = (HistoricVolatility[16](close) > 0.12)
c3 = (RSI[2](close) crosses under 5)
c4 = (HistoricVolatility[255](close) > 0.14)
c5 = (close > Average[190](close))
longok = (c1 and c2 and c3 and c4 and c5)
if longok then
flag = 1
ENDIF
//Vente
out = RSI[2](close)
outok2= out crosses over 94
IF outok2 and flag=1 THEN
flag=0
myentry=0
ENDIF
if flag[1]=1 and flag[2]=0 then
myentry=open
endif
if flag=1 and low<0.93*myentry then
flag=-1
endif
return flag
Merci pour ton aide. Je m’excuse de ne pas avoir pu te remercier plus tôt.
J’ai fais quelques modifications sur le code que tu m’as adressé. Ainsi mon indicateur repasse à 0 quand le StopLoss est activé dans tous les cas.
Bien cordialement.
//ACHAT
indicator1 = average[2](close)
indicator2 = average[200](close)
c1 = (indicator1 > indicator2) and adx[6] > 20
c2 = (HistoricVolatility[16](close) > 0.12)
c3 = (RSI[2](close) crosses under 5)
c4 = (HistoricVolatility[255](close) > 0.14)
c5 = (close > Average[190](close))
longok = (c1 and c2 and c3 and c4 and c5)
if longok then
flag = 1
ENDIF
if flag=0 THEN
myentry=0
ENDIF
If flag[1]=1 and flag[2]=0 THEN
myentry=open
endif
//Vente
out = RSI[2](close)
outok2= out crosses over 94
IF outok2 and flag=1 THEN
flag=0
ENDIF
If flag=1 and low<0.93*myentry THEN
flag=0
ENDIF
return flag