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 avatarJS.
Viewing 7 posts - 1 through 7 (of 7 total)
  • #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 :

    1.  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
    2. 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

     

    #249266

    Le voici (j’ai préféré le réécrire) :

     

    #249318

    Bonjour 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

    #249326

    Désolé, je n’ai pas bien compris les horaires.
    Ajoutez cette ligne immédiatement après la première :

     

    #249440

    Merci 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”)

    #249445

    Cela 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.

     

    #249446
    JS

    Bonjour,

    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…

Viewing 7 posts - 1 through 7 (of 7 total)

Create your free account now and post your request to benefit from the help of the community
Register or Login