cassure range M30 en M5
Forums › ProRealTime forum Français › Support ProOrder › cassure range M30 en M5
- This topic has 6 replies, 3 voices, and was last updated 4 days ago by
JS.
-
-
08/01/2025 at 4:57 PM #249250
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 * riskBUY 1 SHARES AT MARKET
SET STOP PRICE sl
SET TARGET PRICE tptradeDone = 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 * riskSELLSHORT 1 SHARES AT MARKET
SET STOP PRICE sl
SET TARGET PRICE tptradeDone = tradeDone + 1
shortDone = 1
bias = -1
ENDIF
ENDIF08/02/2025 at 10:32 AM #249266Le voici (j’ai préféré le réécrire) :
12345678910111213141516171819202122232425262728293031323334353637DEFPARAM CumulateOrders = False//Timeframe(30mn,UpdateOnClose)ONCE myTime = 150000ONCE High30 = 9999999ONCE Low30 = 0IF OpenTime = myTime THENHigh30 = highLow30 = lowENDIF//Timeframe(default)ONCE BienAuDessus = 5*PipSize //Points minimum au-dessus du maximum ou en dessous du minimum de la RANGE M30myRSI = Rsi[14](close)LongRSI = myRSI < 70ShortRSI = myRSI > 30LongCLOSE = close >= (High30 + BienAuDessus)ShortCLOSE = close <= (low30 - BienAuDessus)LongCond = LongRSI AND LongClose AND Not OnMarketShortCond = ShortRSI AND ShortClose AND Not OnMarketIF LongCond THENBUY 1 Contract AT MarketSLprice = lowTPprice = close + (abs(close - low) * 2)SET STOP PRICE SLpriceSET TARGET PRICE TPpriceELSIF ShortCond THENSELLSHORT 1 Contract AT MarketSLprice = highTPprice = close - (abs(close - high) * 2)SET STOP PRICE SLpriceSET TARGET PRICE TPpriceENDIFgraphonprice High30 coloured("Cyan")graphonprice Low30 coloured("Cyan")graphonprice SLprice coloured("Red")graphonprice TPprice coloured("Blue")08/03/2025 at 9:34 PM #249318Bonjour et merci pour cette réponse.
Mais après avoir copier/coller ce code il prend des positions toutes la journée pas seulement à partir de 15h30.
Par exemple sur la journée du 28/07/2025 il en prend une a 14h25 puis plein à l’achat à partir de 16h alors que le haut de la M30 n’est pas cassée.
Pouvez-vous me dire pourquoi ou me dire ce qu’il faut que je modifie…Merci encore
08/04/2025 at 11:42 AM #249326Désolé, je n’ai pas bien compris les horaires.
Ajoutez cette ligne immédiatement après la première :1DEFPARAM FlatBefore = 15300008/06/2025 at 3:28 PM #249440Merci encore pour cette réponse,
Mais après vérification j’ai du modifier encore des paramètres car il prenais beaucoup trop de tarde dans la plage horaire de 15h30 à 17 h alors que le prix ne casser pas le range de 15h à 15h30.
Voici le code que j’ai modifié le premier trade avec la position simulée en photo est bon, mais je ne comprends pas pourquoi il me prend les autres trades dans le rond orange, car le range de 15h à 15h30 n’est jamais réintégré.
Pouvez-vous m’aider a identifier ce qui ne va pas?
merci d’avance
le code:
DEFPARAM CumulateOrders = False
DEFPARAM FlatBefore = 153000
DEFPARAM Flatafter = 173000
//
Timeframe(30mn,UpdateOnClose)
ONCE myTime = 150000
ONCE High30 = 153000
ONCE Low30 = 153000
IF OpenTime = myTime THEN
High30 = high
Low30 = low
ENDIF
//
Timeframe(5mn)
ONCE BienAuDessus = 5*PipSize //Points minimum au-dessus du maximum ou en dessous du minimum de la RANGE M30
myRSI = Rsi[14](close)
LongRSI = myRSI < 70
ShortRSI = myRSI > 30
LongCLOSE = close > (High30)
ShortCLOSE = close < (low30)
LongCond = LongRSI AND LongClose AND Not OnMarket
ShortCond = ShortRSI AND ShortClose AND Not OnMarket
IF LongCond THEN
BUY 1 Contract AT Market
SLprice = low
TPprice = close + (abs(close – low) * 2)
SET STOP PRICE SLprice
SET TARGET PRICE TPprice
ELSIF ShortCond THEN
SELLSHORT 1 Contract AT Market
SLprice = high
TPprice = close – (abs(close – high) * 2)
SET STOP PRICE SLprice
SET TARGET PRICE TPprice
ENDIF
graphonprice High30 coloured(“Cyan”)
graphonprice Low30 coloured(“Cyan”)08/06/2025 at 5:00 PM #249445Cela fonctionne bien pour moi.
Avez-vous utilisé un intervalle de temps <= 5 minutes ?
Parce qu’il DOIT y avoir une bougie qui s’ouvre aux heures indiquées. Dans votre cas, 1 heure ne fonctionne pas, car elle ignore 173 000 heures.
Elle ignore également 153 000 heures, mais celle-ci est reportée à 160 000 heures, ce qui fonctionne (presque) bien.
Pour la sortie, cependant, la sortie doit avoir lieu à 173 000 heures. Si aucune bougie ne se ferme/s’ouvre à ce moment-là, les échanges se poursuivent jusqu’à 000 000, date à laquelle la limite de 153 000 reprend effet.08/06/2025 at 5:07 PM #249446Bonjour,
Peut-être que cela te sera utile — il s’agit de la stratégie de base, sans toutes les conditions supplémentaires…
Le problème avec l’utilisation de ces « ordres stop », c’est qu’ils restent actifs ; ce ne sont pas des ordres en attente…
La première fois, tout se passe bien : une position s’ouvre dans la plage définie et est clôturée par le SL ou le TP…
Le problème survient avec les positions suivantes. Lorsque le prix évolue au-dessus ou en dessous des « ordres stop », l’« ordre stop » devient un « ordre au marché » et commence à vivre sa propre vie…
La position s’ouvre alors au niveau du « Open », et à partir de là, le SL et le TP sont calculés à partir de ce point d’ouverture…Gold BreakOut Strategy1234567891011121314151617181920212223242526272829303132333435363738DefParam FlatBefore=153000DefParam FlatAfter=170000TimeFrame(5 minutes, UpdateOnClose)If OpenTime=152500 thenxHighest=Highest[6](High)xLowest=Lowest[6](Low)EndIfIf NOT LongOnMarket thenBuy 1 contract at xHighest StopLongSL=xLowestLongRisk=xHighest-xLowestLongTP=xHighest+2*LongRiskEndIfIf LongOnMarket thenSet Target Profit 2*LongRiskEndIfIf NOT ShortOnMarket thenSellShort 1 contract at xLowest StopShortSL=xHighestShortRisk=xHighest-xLowestShortTP=xLowest-2*ShortRiskEndIfIf ShortOnMarket thenSet Target Profit 2*ShortRiskEndIfGraphOnPrice xHighest Coloured("Green")GraphOnPrice xLowest Coloured("Red")GraphOnPrice LongSL Coloured("Red")GraphOnPrice LongTP Coloured("Yellow")GraphOnPrice ShortSL Coloured("Red")GraphOnPrice ShortTP Coloured("Yellow") -
AuthorPosts
Find exclusive trading pro-tools on