Bonjour à tous,
je suis à la recherche d’aide pour finir mon code, je l’explique:
je souhaiterai coder une stratégie sur le gold: j’aimerai tracer le plus haut et le plus bas de la bougie M30 de 15h qui clôture à 15h30 qui deviendra donc mon RANGE M30
Une fois le plus haut et le plus bas de dessiner nous aurons 2 cas de figure :
- lorsqu’une bougie en m5 clôture avec le corps (pas avec la mèche) bien avec le corps au dessus du plus haut du range M30 et que le RSI en période 14 est en dessous de 70 alors je prend une position en achat avec un sl sous la bougie m5 qui casse le haut du range M30 et je vise 2r s
- deuxième cas de figure si une bougie M5 casse avec le corps le bas du range M30 et que le rsi en période 14 est au dessus de 30 alors je prend une vente au marché avec un sl au dessus de la bougie M5 qui casse le range
Je veux que cela reprenne une autre position si le prix réintègre le range et recasse le range en respectant les conditions de corps et de RSI
J’ai deja fait un code, mais la position est prise sur la deuxième bougie après que la première est cassée le range, hors je veux que la position soit prise au marché dès que la cloture M5 cloture au dessue ou au dessous du range.
et des fois la position est prise alors que le range M30 n’est pas cassée
Une personne peut elle m’aider? merci par avance.
Voici le code:
DEFPARAM CumulateOrders = False
// Initialisation
ONCE rangeHigh = 0
ONCE rangeLow = 0
ONCE buildRange = 0
ONCE tradeDone = 0
ONCE longDone = 0
ONCE shortDone = 0
ONCE dayRef = 0
ONCE bias = 0
ONCE rangeReady = 0
// Nouveau jour
IF DayOfWeek <> dayRef THEN
dayRef = DayOfWeek
tradeDone = 0
longDone = 0
shortDone = 0
bias = 0
rangeReady = 0
buildRange = 1
rangeHigh = 0
rangeLow = 999999 // valeur très haute pour trouver le vrai low
ENDIF
// Construction manuelle du range entre 15h00 et 15h25
IF Time >= 150000 AND Time < 153000 THEN
IF buildRange = 1 THEN
rangeHigh = MAX(rangeHigh, High)
rangeLow = MIN(rangeLow, Low)
ENDIF
ENDIF
// Clôture du range à 15h30
IF Time = 153000 THEN
buildRange = 0
rangeReady = 1
ENDIF
// RSI et cassures
myRSI = RSI[14](close)
canTradeNow = (Time >= 153500 AND Time <= 170000)
// — Achat : cassure du haut du range par le corps —
IF rangeReady = 1 AND canTradeNow AND tradeDone < 2 AND longDone = 0 THEN
IF open > rangeHigh AND close > rangeHigh AND myRSI < 70 AND (bias = 0 OR bias = 1) THEN
sl = low
risk = close – sl
tp = close + 2 * risk
BUY 1 SHARES AT MARKET
SET STOP PRICE sl
SET TARGET PRICE tp
tradeDone = tradeDone + 1
longDone = 1
bias = 1
ENDIF
ENDIF
// — Vente : cassure du bas du range par le corps —
IF rangeReady = 1 AND canTradeNow AND tradeDone < 2 AND shortDone = 0 THEN
IF open < rangeLow AND close < rangeLow AND myRSI > 30 AND (bias = 0 OR bias = -1) THEN
sl = high
risk = sl – close
tp = close – 2 * risk
SELLSHORT 1 SHARES AT MARKET
SET STOP PRICE sl
SET TARGET PRICE tp
tradeDone = tradeDone + 1
shortDone = 1
bias = -1
ENDIF
ENDIF