Trades de part et d’ autre de average [5]

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

    Bonsoir à tous,

    Si le marché est calme, sans tendance forte, il me semble que les cours vont de part et d’ autre de la MM[5] ( 5 est un exemple ) . J’ ai essayer d’ écrire le code suivant qui achète quand le close croise à la baisse la MM[5] et short quand le close croise à la hausse la MM[5], avec dans tous les cas un STOP LOSS à 20 du prix d’ ouverture des trades. Avec interdiction si le trade est perdant, d’ ouvrir une nouvelle position dans le même sens. Je remercie au passage Roberto Gozzi pour son aide efficace pour coder avec ce principe ( si trade perdant, prochain trade seulement dans le sens opposé).

    ONCE TradeLong  = 1 // on peux trader long

    ONCE TradeShort = 1 // on peux trader short

    ONCE LongFlag  = 0 // le trade en cours est long =1 ou pas =0

    ONCE ShortFlag  = 0 // le trade en cours est short =1 ou pas =0

    MMcourte = average[periode,type](close)

    // check whether the closed trade was a Loss or a Win

    IF StrategyProfit < StrategyProfit[1] THEN

    // If it’s a loss, then only trade the opposite direction next time

    IF LongFlag THEN

    TradeLong = 0

    TradeShort = 1

    ELSIF ShortFlag THEN

    TradeLong = 1

    TradeShort = 0

    ENDIF

    ELSIF StrategyProfit > StrategyProfit[1] THEN

    // If it’s a win, then trade any direction

    TradeLong   = 1

    TradeShort  = 1

    ENDIF

    // ENTRY

    IF Not OnMarket THEN

    LongFlag   = 0

    ShortFlag   = 0

    IF CLOSE CROSSES OVER MMcourte AND TradeShort THEN

    SELL AT MARKET // Si position longue, cloture de cette position

    SELLSHORT 1 CONTRACT AT MARKET // ouverture position short

    ShortFlag = 1

    ELSIF CLOSE CROSSES UNDER MMcourte AND TradeLong THEN

    EXITSHORT AT MARKET // Si position short, cloture de cette position

    BUY 1 CONTRACT AT MARKET

    LongFlag = 1

    ENDIF

    ENDIF

    SET STOP pLOSS 20

    Je suis en échec, mon code plante et je vous remercie pour votre aide éventuelle.

    CAC-40-15-mn.png CAC-40-15-mn.png
    #262767 quote
    robertogozzi
    Moderator
    Master

    Les deux lignes surlignées en ORANGE (voir photo ci-jointe) ne sont PAS nécessaires car :

    • si vous n’êtes PAS sur le marché, vous n’avez pas besoin de clôturer de positions
    • si vous êtes déjà sur le marché et souhaitez STOP & REVERSE, il vous suffit d’entrer dans la direction opposée et la position en cours sera automatiquement clôturée.

    Les deux lignes surlignées en VERT doivent être supprimées et déplacées plus bas, comme indiqué sur la même photo.

    Le code fonctionne parfaitement chez moi, sans planter. La seule chose qui me semble erronée (d’un point de vue purement logique) est que vous prenez une position longue lorsque la paire est baissière et une position courte lorsqu’elle est haussière.

    Je pense que l’inverse serait plus approprié ; voici mon code.

    Voici la procédure si vous ne souhaitez PAS effectuer un STOP & REVERSE:


    ONCE Type       = 0
    ONCE Periode    = 20
    ONCE TradeLong  = 1 // on peux trader long
    ONCE TradeShort = 1 // on peux trader short
    ONCE LongFlag   = 0 // le trade en cours est long =1 ou pas =0
    ONCE ShortFlag  = 0 // le trade en cours est short =1 ou pas =0
    MMcourte = average[periode,type](close)
    // check whether the closed trade was a Loss or a Win
    IF StrategyProfit < StrategyProfit[1] THEN
    // If it’s a loss, then only trade the opposite direction next time
    IF LongFlag THEN
    TradeLong  = 0
    TradeShort = 1
    ELSIF ShortFlag THEN
    TradeLong  = 1
    TradeShort = 0
    ENDIF
    ELSIF StrategyProfit > StrategyProfit[1] THEN
    // If it’s a win, then trade any direction
    TradeLong   = 1
    TradeShort  = 1
    ENDIF
    change = (TradeLong AND TradeShort[1]) OR (TradeLong[1] AND TradeShort)
    // ENTRY
    IF Not OnMarket THEN
    IF CLOSE CROSSES OVER MMcourte AND TradeShort THEN
    BUY 1 CONTRACT AT MARKET
    LongFlag  = 1
    ShortFlag = 0
    ELSIF CLOSE CROSSES UNDER MMcourte AND TradeLong THEN
    SELLSHORT 1 CONTRACT AT MARKET // ouverture position short
    ShortFlag = 1
    LongFlag  = 0
    ENDIF
    ENDIF
    SET STOP pLOSS 100
    SET TARGET pPROFIT 200
    graph change
    graph StrategyProfit < StrategyProfit[1] AS "Loss"   coloured("Red")
    graph StrategyProfit > StrategyProfit[1] AS "Profit" coloured("Green")
    
    

    Voici plutôt une autre solution si vous souhaitez effectuer un STOP & REVERSE :

    ONCE Type       = 0
    ONCE Periode    = 20
    ONCE TradeLong  = 1 // on peux trader long
    ONCE TradeShort = 1 // on peux trader short
    ONCE LongFlag   = 0 // le trade en cours est long =1 ou pas =0
    ONCE ShortFlag  = 0 // le trade en cours est short =1 ou pas =0
    MMcourte = average[periode,type](close)
    // check whether the closed trade was a Loss or a Win
    IF StrategyProfit < StrategyProfit[1] THEN
    // If it’s a loss, then only trade the opposite direction next time
    IF LongFlag THEN
    TradeLong  = 0
    TradeShort = 1
    ELSIF ShortFlag THEN
    TradeLong  = 1
    TradeShort = 0
    ENDIF
    ELSIF StrategyProfit > StrategyProfit[1] THEN
    // If it’s a win, then trade any direction
    TradeLong   = 1
    TradeShort  = 1
    ENDIF
    change = (TradeLong AND TradeShort[1]) OR (TradeLong[1] AND TradeShort)
    // ENTRY
    //IF Not OnMarket THEN
    IF (Not OnMarket OR ShortOnMarket) AND CLOSE CROSSES OVER MMcourte AND TradeShort THEN
    BUY 1 CONTRACT AT MARKET
    LongFlag  = 1
    ShortFlag = 0
    ELSIF (Not OnMarket OR LongOnMarket) AND  CLOSE CROSSES UNDER MMcourte AND TradeLong THEN
    SELLSHORT 1 CONTRACT AT MARKET // ouverture position short
    ShortFlag = 1
    LongFlag  = 0
    //ENDIF
    ENDIF
    SET STOP pLOSS 100
    SET TARGET pPROFIT 200
    graph change
    graph StrategyProfit < StrategyProfit[1] AS "Loss"   coloured("Red")
    graph StrategyProfit > StrategyProfit[1] AS "Profit" coloured("Green")
    
    

    Toutefois, pour éviter des transactions qui peuvent durer des milliers de barres, je vous recommande de définir un profit (de votre choix, en pips) avec l’instruction suivante :

    SET TARGET pPROFIT ...
    




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

Trades de part et d’ autre de average [5]


ProOrder : Trading Automatique & Backtests

New Reply
Author
author-avatar
4801 @4801 Participant
Summary

This topic contains 1 reply,
has 2 voices, and was last updated by robertogozzi
13 hours, 52 minutes ago.

Topic Details
Forum: ProOrder : Trading Automatique & Backtests
Language: French
Started: 07/20/2026
Status: Active
Attachments: 2 files
Logo Logo
Loading...