Bonjour Nicolas,
De la même manière qu’avec le Canal de Donchian avec filtre, on adapte cela au Canal RSI. Les niveaux sont plus rares et donnent de bonnes zones de prix.
//////////////////////////////////////////////////
//_RSI_LEVELS_
ONCE RSI70 = UNDEFINED
ONCE RSI30 = UNDEFINED
RSIORI = RSI[14](CLOSE)
UPORI = MAX(0,CLOSE-CLOSE[1])
DOWNORI = MAX(0,CLOSE[1]-CLOSE)
UPMAORI = WILDERAVERAGE[14](UPORI)
DOWNMAORI = WILDERAVERAGE[14](DOWNORI)
RSREV = (100/((-1*70)+100)) - 1
IF 70 < RSIORI THEN
UPMAREV = UPMAORI * (1-(1/14))
DOWNMAREV = UPMAREV / RSREV
DOWNREV = (DOWNMAREV-(DOWNMAORI*(1-(1/14))))/(1/14)
RSI70 = CLOSE - DOWNREV
ELSIF 70 > RSIORI THEN
DOWNMAREV = DOWNMAORI * (1-(1/14))
UPMAREV = DOWNMAREV * RSREV
UPREV = (UPMAREV-(UPMAORI*(1-(1/14))))/(1/14)
RSI70 = CLOSE + UPREV
ENDIF
RSI50 = WILDERAVERAGE[14](CLOSE)
RSIORI2 = RSI[14](CLOSE)
UPORI2 = MAX(0,CLOSE-CLOSE[1])
DOWNORI2 = MAX(0,CLOSE[1]-CLOSE)
UPMAORI2 = WILDERAVERAGE[14](UPORI2)
DOWNMAORI2 = WILDERAVERAGE[14](DOWNORI2)
RSREV2 = (100/((-1*30)+100)) - 1
IF 30 < RSIORI2 THEN
UPMAREV2 = UPMAORI2 * (1-(1/14))
DOWNMAREV2 = UPMAREV2 / RSREV2
DOWNREV2 = (DOWNMAREV2-(DOWNMAORI2*(1-(1/14))))/(1/14)
RSI30 = CLOSE - DOWNREV2
ELSIF 30 > RSIORI2 THEN
DOWNMAREV2 = DOWNMAORI2 * (1-(1/14))
UPMAREV2 = DOWNMAREV2 * RSREV2
UPREV2 = (UPMAREV2-(UPMAORI2*(1-(1/14))))/(1/14)
RSI30 = CLOSE + UPREV2
ENDIF
if high crosses over RSI50 then
hhstart=barindex
lllevel=0
endif
if low crosses under RSI50 then
llstart=barindex
hhlevel=0
endif
if high crosses over RSI70[1] and barindex>hhstart and hhlevel=0 then
hhlevel=RSI70[1]
endif
if low crosses under RSI30[1] and barindex>llstart and lllevel=0 then
lllevel=RSI30[1]
endif
RETURN RSI70 COLOURED (0,0,0) STYLE (LINE,3) AS "_DAILY_RSI_70%_", RSI50 COLOURED (153,0,153) STYLE (LINE,3) AS "_DAILY_RSI_50%_", RSI30 COLOURED (0,0,0) STYLE (LINE,3) AS "_DAILY_RSI_30%_", hhlevel coloured(0,200,0) style(point,4),lllevel coloured(200,50,0) style(point,4)
Mais j’ai deux questions, déjà évoquées dans le précédent indicateur :
- Lors d’une cassure sur la même bougie du canal RSI et du filtre avec un GAP d’ouverture (voire capture, je n’ai pas trouvé d’exemple sur le Canal RSI), est-il possible de coder cette exception afin de prendre en compte ce GAP et tracer le niveau malgré tout ?
- Est-ce possible de prolonger les niveaux jusqu’au prochain niveau comme sur la capture (je suppose qu’en code c’est peu évident à faire) ?
Merci pour ces précisions. 🙂
Tout est possible si on le souhaite très fort. Évitons les dédoublement de topic svp, ça n’est pas parcque je ne réponds pas le jour même que je ne répondrai pas 😉
Je le souhaite très très fort oui !
Oui je sais bien, mais tu as tellement de demandes de codages qu’il doit être difficile de s’y retrouver. 😮
Merci ! 😉
Je pense avoir réglé le problème des gaps avec cette version et est également créé une nouvelle variable “iline” permettant la continuité de la ligne de breakout :
//////////////////////////////////////////////////
//_RSI_LEVELS_
ONCE RSI70 = UNDEFINED
ONCE RSI30 = UNDEFINED
RSIORI = RSI[14](CLOSE)
UPORI = MAX(0,CLOSE-CLOSE[1])
DOWNORI = MAX(0,CLOSE[1]-CLOSE)
UPMAORI = WILDERAVERAGE[14](UPORI)
DOWNMAORI = WILDERAVERAGE[14](DOWNORI)
RSREV = (100/((-1*70)+100)) - 1
IF 70 < RSIORI THEN
UPMAREV = UPMAORI * (1-(1/14))
DOWNMAREV = UPMAREV / RSREV
DOWNREV = (DOWNMAREV-(DOWNMAORI*(1-(1/14))))/(1/14)
RSI70 = CLOSE - DOWNREV
ELSIF 70 > RSIORI THEN
DOWNMAREV = DOWNMAORI * (1-(1/14))
UPMAREV = DOWNMAREV * RSREV
UPREV = (UPMAREV-(UPMAORI*(1-(1/14))))/(1/14)
RSI70 = CLOSE + UPREV
ENDIF
RSI50 = WILDERAVERAGE[14](CLOSE)
RSIORI2 = RSI[14](CLOSE)
UPORI2 = MAX(0,CLOSE-CLOSE[1])
DOWNORI2 = MAX(0,CLOSE[1]-CLOSE)
UPMAORI2 = WILDERAVERAGE[14](UPORI2)
DOWNMAORI2 = WILDERAVERAGE[14](DOWNORI2)
RSREV2 = (100/((-1*30)+100)) - 1
IF 30 < RSIORI2 THEN
UPMAREV2 = UPMAORI2 * (1-(1/14))
DOWNMAREV2 = UPMAREV2 / RSREV2
DOWNREV2 = (DOWNMAREV2-(DOWNMAORI2*(1-(1/14))))/(1/14)
RSI30 = CLOSE - DOWNREV2
ELSIF 30 > RSIORI2 THEN
DOWNMAREV2 = DOWNMAORI2 * (1-(1/14))
UPMAREV2 = DOWNMAREV2 * RSREV2
UPREV2 = (UPMAREV2-(UPMAORI2*(1-(1/14))))/(1/14)
RSI30 = CLOSE + UPREV2
ENDIF
if high crosses over RSI50 then
hhstart=barindex
lllevel=0
endif
if low crosses under RSI50 then
//if low<rsi50 and low[1]>rsi50[1] then
llstart=barindex
hhlevel=0
endif
if high crosses over RSI70[1] and barindex>=hhstart and hhlevel=0 then
hhlevel=RSI70[1]
endif
if low crosses under RSI30[1] and barindex>=llstart and lllevel=0 then
//if low < RSI30[1] and low[1]>RSI30[2] and barindex>llstart and lllevel=0 then
lllevel=RSI30[1]
endif
if (hhlevel>0 and hhlevel[1]=0) or (lllevel>0 and lllevel[1]=0) then
iline=max(hhlevel,lllevel)
endif
RETURN iline, RSI70 COLOURED (0,0,0) STYLE (LINE,3) AS "_DAILY_RSI_70%_", RSI50 COLOURED (153,0,153) STYLE (LINE,3) AS "_DAILY_RSI_50%_", RSI30 COLOURED (0,0,0) STYLE (LINE,3) AS "_DAILY_RSI_30%_", hhlevel coloured(0,200,0) style(point,4),lllevel coloured(200,50,0) style(point,4)
Salut Nicolas,
C’est vraiment génial, je ne pensais pas que ça serait possible, merci !
Cette variable “iline” c’est nouveau ? Sinon pour les Gaps ça ne marche pas.
Merci encore Nicolas.
Merci de m’indiquer date, heure et nom de l’instrument de ton exemple, sur mes graphiques les gaps sont détectés, sauf erreur de ma part.
Yep,
Donc c’est Allemange 30, du 23 au 24 juin en daily.
(Pour iline, j’ai pris ça pour une nouvelle fonction alors que c’est simplement un bout de code)
23 au 24 de l’année 2016, désolé.
Donc c’est Allemange 30
Index, Futures ou cfd ? Une copie d’écran complète ça m’aiderait beaucoup, merci.
Oui en effet. CFD’s. Année 2016.
Tu sembles ne pas avoir les données du week-end affichées, il faudrait les activer.
Egalement as-tu changé la timezone et/ou définit des horaires personnalisés ?
Non en fait pas de données week-end, j’utilise les données CFD’s avec les horaires du FDAX, donc 8h/22h du lundi au vendredi, horaires personnalisés en effet.
Je vais essayer avec les données du week-end.
Si je mets les données en continue, je suppose que j’aurais bien la cassure puisque le prix franchira nécessairement le filtre, sauf en cas de GAP intraday lors d’un flash crack ou problème de cotations divers, mais le problème c’est que tous mes indicateurs à côté auront de mauvaises données basées sur le FDAX 8h/22h…
Il y a bien cassure étant donné les horaires sont à présent 24h/24, donc plus de gap.
Mais il y a quand même le soucy de la non prise en compte de la cassure du filtre quand il y a sur la même bougie cassure filtre et cassure donchian. Mais ça à part descendre en UT, il n’y a peut-être pas de solutions ?
Ma capture n’a pas été prise en compte dans mon précédent post, voici :