Aide code avec ordres STOP et LIMIT

Viewing 7 posts - 1 through 7 (of 7 total)
  • Author
    Posts
  • #257424 quote
    4801
    Participant
    Junior

    Bonjour à vous tous


    Avec des conditions simples d’ ouverture de position je souhaite un STOP avec une perte de 20 et un objectif gain de 40.

    Je me suis surement planté quelque part avec le code , car j’ ai des résultats incohérents (voir le graph le 9 octobre 2025)

    à 8 h 00 Achat à 8066.40 et vente à 8095.70 soit un gain de 29.30 au lieu de 40 ?

    à 14 h 00 Achat à 8104.00 et vente à 8075.70 soit une perte de 28.30 au lieu de 20 ?

    à 16 h 00 Short à 8058.10 et Exitshort à 8035.70 soit un gain de 22.40 au lieu de 40 ?


    Merci de m’ aider à y voir clair.


    // Définition des paramètres du code

    DEFPARAM CumulateOrders = False // Cumul des positions désactivé

    Ctime = time >= 080000 and time <= 200000

    HULL = HullAverage[10](close)

    MonATR = round (AverageTrueRange[14](close))

    barhaussier = (close > open)

    barbaissier = (close < open)

    HULLhaussier = HULL > HULL[1]

    HULLbaissier = HULL < HULL[1]


    // Conditions pour ouvrir une position acheteuse

    IF NOT LONGONMARKET AND Ctime AND barhaussier AND HULLhaussier THEN

    BUY 1 CONTRACT AT MARKET

    signallong = barindex // bougie lors de l’achat

    stoplong = tradeprice – PERTE

    objectiflong = tradeprice + 2 * PERTE

    SELL at (stoplong) STOP

    SELL at (objectiflong) LIMIT

    ENDIF

    // validité des ordres stop et limit 200 bougies après l’ouverture de position

    IF barindex – signallong < 200 THEN

    IF LONGONMARKET THEN

    SELL AT (stoplong) STOP

    SELL AT (objectiflong) LIMIT

    ENDIF

    ENDIF


    //Conditions pour ouvrir une position en vente à découvert

    IF NOT SHORTONMARKET AND Ctime AND barbaissier AND HULLbaissier THEN

    SELLSHORT 1 CONTRACT AT MARKET

    signalshort = barindex // bougie lors de la vente short

    stopshort = tradeprice + PERTE

    objectifshort = tradeprice – 2 * PERTE

    EXITSHORT at (stopshort) STOP

    EXITSHORT at (objectifshort) LIMIT

    ENDIF

    IF barindex – signalshort < 200 THEN

    IF SHORTONMARKET THEN

    EXITSHORT AT (stopshort) STOP

    EXITSHORT AT (objectifshort) LIMIT

    ENDIF

    ENDIF


    #257438 quote
    Iván González
    Moderator
    Master

    Bonjour. Le principal problème que je constate dans votre code est que vous calculez le stop loss et le take profit à l’aide de la variable `tradeprice`. Le souci est que vous utilisez le prix d’exécution du dernier ordre comme référence.

    Si vous souhaitez utiliser tradeprice, vous devrez le faire une fois que vous serez « sur le marché ».

    Cependant, vous pouvez simplifier encore davantage en utilisant les instructions set stop loss ou set stop ploss.


    // Definition of code parameters
    DEFPARAM CumulateOrders = False 
    // Variables
    lossValue = 20
    profitValue = 40
    // Time and Indicators
    Ctime = time >= 080000 and time <= 200000
    hullMA = HullAverage[10](close)
    // Conditions
    barhaussier = (close > open)
    barbaissier = (close < open)
    HULLhaussier = hullMA > hullMA[1]
    HULLbaissier = hullMA < hullMA[1]
    // Long Position Entry
    IF NOT LONGONMARKET AND Ctime AND barhaussier AND hullUp THEN
       BUY 1 CONTRACT AT MARKET
       SET STOP LOSS lossValue
       SET TARGET PROFIT profitValue
    ENDIF
    // Short Position Entry
    IF NOT SHORTONMARKET AND Ctime AND barbaissier AND HULLbaissier THEN
       SELLSHORT 1 CONTRACT AT MARKET
       SET STOP LOSS lossValue
       SET TARGET PROFIT profitValue
    ENDIF
    
    // Exit after 200 bars if position is still open
    IF LONGONMARKET AND (barindex - tradeindex >= 200) THEN
       SELL AT MARKET
    ENDIF
    IF SHORTONMARKET AND (barindex - tradeindex >= 200) THEN
       EXITSHORT AT MARKET
    ENDIF 
    



    JS and robertogozzi thanked this post
    #257448 quote
    JS
    Participant
    Senior

    Il est préférable d’utiliser « Not OnMarket » ici au lieu de « Not LongOnMarket ou Not ShortOnMarket », car lorsque vous êtes, par exemple, en position longue (Long), vous êtes également « Not ShortOnMarket », et cela peut générer un ordre opposé…

    Iván González thanked this post
    #257464 quote
    Madrosat
    Participant
    Master

    Remplacer Hullup par Hullhaussier

    Sur quel support et sur quel time frame est-ce rentable??

    Iván González thanked this post
    #257569 quote
    4801
    Participant
    Junior

    Merci pour l’ aide, cependant vous m’ indiquer que pour utiliser tradeprice, je dois le faire une fois que je suis « sur le marché ». Ce qui est le cas, 1 ordre d’ achat est donné et exécuté avant l’ utilisation de tradeprice. ( ordre d’ achat en rouge ) les ordres STOP et LIMITE arrivent après.

    // Conditions pour ouvrir une position acheteuse
    IF NOT LONGONMARKET AND Ctime AND barhaussier AND HULLhaussier THEN
    BUY 1 CONTRACT AT MARKET
    signallong = barindex // bougie lors de l’achat
    stoplong = tradeprice – PERTE
    objectiflong = tradeprice + 2 * PERTE
    SELL at (stoplong) STOP
    SELL at (objectiflong) LIMIT
    ENDIF
    

    D’ autre part, si l’ on veut un STOP et 1 OBJECTIF qui varie en fonction de la volatilité, par exemple

    avec 1 ATR on ne peux utiliser les instructions SET STOP LOSS ou SET TARGET PROFIT car le stop et l’ objectif change à chaque prise de position.

    Comment faire ? peut être autre chose que tradeprice ?

    Merci encore .

    #257577 quote
    Nicolas
    Keymaster
    Master

    Puisque le code ne sera lu qu’à la fin de bougie et l’ordre envoyé à l’open suivant, au moment de la lecture du code le TRADEPRICE n’est donc pas encore connu.

    Par conséquent on doit se contenter de Close qui est le prix fixé au moment de la lecture du code.

    Libre ensuite d’utiliser TRADEPRICE à la prochaine lecture du code.

    Cependant, on peut faire plus simple, puisque PERTE est une donnée en points, on utilise les instructions SET TARGET PPROFIT et SET STOP PLOSS pour indiquer au courtier où placer l’objectif et la perte selon le vrai prix d’entrée de l’ordre (puisque le courtier le connaît au moment où il place l’ordre), soit si je prends votre dernier code:

    // Conditions pour ouvrir une position acheteuse
    
    IF NOT LONGONMARKET AND Ctime AND barhaussier AND HULLhaussier THEN
    
    BUY 1 CONTRACT AT MARKET
    
    signallong = barindex // bougie lors de l’achat
    
    SET STOP PLOSS PERTE
    SET TARGET PPROFIT PERTE*2
    
    ENDIF
    

    j’espère avoir été clair 🙂

    #257578 quote
    4801
    Participant
    Junior

    Merci Nicolas, j’ apprends toujours, et ce tradeprice pris en compte qu’ à la bougie suivante m’ explique

    tout.

Viewing 7 posts - 1 through 7 (of 7 total)
  • You must be logged in to reply to this topic.

Aide code avec ordres STOP et LIMIT


ProOrder : Trading Automatique & Backtests

New Reply
Author
author-avatar
4801 @4801 Participant
Summary

This topic contains 6 replies,
has 5 voices, and was last updated by 4801
7 hours, 26 minutes ago.

Topic Details
Forum: ProOrder : Trading Automatique & Backtests
Language: French
Started: 02/03/2026
Status: Active
Attachments: 1 files
Logo Logo
Loading...