Bonjour à la communauté
Je suis débutant en codage et grâce à ProRealCode j’ai pu composer ce petit bout de code. il fonctionne mais j’aimerais améliorer car je suis bloqué sur la modification du code de Nicolas trailing stop.
J’ai un compte IG à risque limité.
De la ligne 105 à 116, à pour but de déplacer le stop loss vers les niveaux de prix qui correspond aux différents résistance pivot.
Pour mieux expliquer mon problème je vous invite à aller sur la journée du 18 mai 2020.
Après multitude de recherche, je ne comprends pas pourquoi le niveau 2 s’élève à 21164, 80.
En testant de nouveau sans le niveau 2. Le niveau 3 fonctionne correctement et le niveau 4 ne s’enclenche qu’après la 15ème période de son déclenchement prévu.
Quelqu’un peut-il m’aider à résoudre ce problème.
Merci par avance
Ps: comment mettre le cite ProRealCode en français SVP
// 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"
Point pivot du Lundi (le 18/05), voir si données du Dimanche inclut ou non.