Le backtest est composé d'un indicateur RSboll, puis du bactest à proprement parlé.
Indicateur RSBoll_Seuil (le nom du programme est important parce qu'il est appelé dans le bactest) :
Code : #
//RSBoll 9/25/75
//falex - 2013
//Variables
once rsiperiode = 9
r = RSI[rsiperiode](close) // RSI
bs = BollingerUp[20](close) //Bollinger Superieur
bi = BollingerDown[20](close) //Bollinger Inferieur
once indicateur = 0
//Valeur de seuil du RSI
once rsup = 75
once rinf = 25
c1 = (r >= rsup) and (high > bs)
c2 = (r <= rinf) and (low < bi)
heure = (time > 00000) and (time<235900)
if c1 and heure then
indicateur =1
elsif c2 and heure then
indicateur = -1
else
indicateur = 0
endif
//calcul du seuil 00/25/50/75 le plus proche
if indicateur = 1 then
seuil = round(close) + (25 - (round(close) mod 25))
elsif indicateur = -1 then
seuil = round(close) - (round(close) mod 25)
endif
//La valeur de l'indicateur est égal à la valeur du seuil à atteindre.
indicateur = indicateur + seuil
return indicateur as "RSBoll"
Code : #
//backtest du RSBoll avec entrée sur seuille 00/25/50/75
//Variables
once SW = 11 //Stop win
once SL = 10 //Stop Loose
once prevmyRSboll = 0
once prevClose = 0
once sens = 0 //Sens du mouvement des prix
//Entrée sur signal passant de 0 à +/- x, contrariant
myRSBoll = CALL "RSBoll_Seuil"
heure = (time >=80000) and (time <162900)
//Entrée
//1) Recuperation de la valeur du seuil lorsqu'elle change
if myRSBoll <> prevmyRSboll then
prevmyRSboll = myRSboll
prevClose = close
if prevmyRSboll > prevClose then
sens = 1
elsif prevmyRSboll < prevClose then
sens = -1
endif
endif
//Si time alors on place des ordres pour entrer dans le marché
if heure then // and myRSBoll = 0 then
If sens = 1 then
sellshort 1 share at myRSBoll Limit
elsif sens = -1 then
buy 1 share at myRSBoll Limit
endif
endif
//Sortie
if onmarket then
sell countofposition share at (entryquote + SW) LIMIT
sell countofposition share at (entryquote - SL) STOP
exitshort countofposition share at (entryquote - SW) LIMIT
exitshort countofposition share at (entryquote + SL) STOP
endif
//stop sur la barre de 16h30
If time = 162900 then
sell countofposition share at market thisbaronclose
exitshort countofposition share at market thisbaronclose
endif