// Définition des paramètres du code
DEFPARAM CumulateOrders = False // Cumul des positions désactivé
// Annule tous les ordres en attente et ferme toutes les positions à 0:00, puis empêche toute création d'ordre avant l'heure "FLATBEFORE".
DEFPARAM FLATBEFORE = 000000
// Annule tous les ordres en attente et ferme toutes les positions à l'heure "FLATAFTER"
DEFPARAM FLATAFTER = 214500
//TIMEFRAME(15 minute) // Unité de Temps (15 minute)
//-----------------------------------------------------------------------------------------------------------------------------------------
IF dayofweek <> 1 THEN
Ht = DHigh(1)
Bs = DLow(1)
C = DClose(1)
ENDIF
if dayofweek=5 then
Htfriday=Dhigh(0)
BsFriday=Dlow(0)
CFriday=Dclose(0)
endif
if dayofweek=1 then
Ht = Htfriday
Bs = BsFriday
C = CFriday
endif
Pivot = (Ht + Bs + C) / 3
Res3 = Pivot + ((Ht - Bs)*2)
ResM3 = Ht+3*((Pivot)-Bs)/2
Res2 = Pivot + Ht - Bs
ResM2 = 3*((Pivot)+Ht)/2-Bs
Res1 = (2 * Pivot) - Bs
ResM1 = (3*(Pivot)-Bs)/2
//SupM1 = (3*(Pivot)-Ht)/2
//Sup1 = (2 * Pivot) - Ht
//SupM2 = 3*((Pivot)-Bs)/2-Ht
//Sup2 = Pivot - (Ht - Bs)
//SupM3 = Bs+3*((Pivot)-Ht)/2
//Sup3 = Pivot - ((Ht - Bs)*2)
//----------------------------------------------------------------------------------------------------------------------------------------
MME = ExponentialAverage[200](close) // moyenne mobile exponentielle (long terme)
MME1 = ExponentialAverage[21](close) // moyenne mobile exponentielle (court terme)
MME2 = ExponentialAverage[73](close) // moyenne mobile exponentielle (moyen terme)
//************************************************************************
// Condition pour ouverture
C1 = (close >= ResM1 AND close[1] < ResM1) // si le prix de cloture est au-dessus de la ResM1 & le prix de la bougie precédante est au-dessous de la ResM1
C2 = (close > MME) // Détection tendance à la Hausse (si le prix est au-dessus de la MME 200)
C3 = (MME1 > MME2) // Si la moyenne mobile est superieure à la moyenne mobile moyen terme
// Condition pour fermeture
niveau1 = ABS(Res1) // 10581.80 niveau du 18 mai 20
niveau2 = ABS(ResM2) // 10617.30 niveau du 18 mai 20
niveau3 = ABS(Res2) // 10652.80 niveau du 18 mai 20
niveau4 = ABS(ResM3) // 10705.45 niveau du 18 mai 20
//niveau5 = ABS(Res3) // 10758.10 niveau du 18 mai 20
//C30 = (close >= Res1)
//C32 = (close >= ResM2)
C31 = (close <= MME2)
//************************************************************************
// Conditions pour OUVRIR une position acheteuse
IF C1 AND C2 AND C3 THEN // Détection tendance à la Haussiere (si le prix est au-dessus de la MME 200)
BUY 0.6 CONTRACT AT MARKET // Lancer le trade à l'achat
SET STOP PLOSS 35 // Stop loss au nombre de point
//SET TARGET pPROFIT 70
ENDIF
//************************************************************************
// Condition en cas de Gap
//C4 = (low - high[1] > 0.0001)
IF open>=ResM1 and open<Res1 and time >= 000000 and time <= 001500 THEN
BUY 0.6 CONTRACT AT MARKET // Lancer le trade à l'achat
SET STOP PLOSS 35 // Stop loss au nombre de point
ENDIF
// Conditions pour FERMER une position acheteuse
IF C31 THEN
SELL AT MARKET
ENDIF
//trailing stop function
trailingstart = 27 //trailing will start @trailinstart points profit
trailingstep = 19 //trailing step to move the "stoploss"
//reset the stoploss value
IF NOT ONMARKET THEN
newSL=0
ENDIF
//manage long positions
IF LONGONMARKET THEN
//first move (breakeven)
IF newSL=0 AND close-tradeprice(1)>=trailingstart*pipsize THEN
newSL = tradeprice(1)+trailingstep*pipsize
ENDIF
IF CLOSE >= ResM2 AND CLOSE < Res2 THEN
newSL = niveau1
ENDIF
IF CLOSE >= Res2 AND CLOSE < ResM3 THEN
newSL = niveau2
ENDIF
IF CLOSE >= ResM3 AND CLOSE < Res3 THEN
newSL = niveau3
ENDIF
IF CLOSE >= Res3 THEN
newSL = niveau4
ENDIF
ENDIF
//stop order to exit the positions
IF newSL>0 THEN
SELL AT newSL STOP
EXITSHORT AT newSL STOP
ENDIF
GRAPH newSL as "trailing"