Coding request for EMA9 / WMA30 strategy

Viewing 8 posts - 1 through 8 (of 8 total)
  • Author
    Posts
  • #179990 quote
    phoentzsphoentzs
    Participant
    Master

    Hello, I have a coding request for the following strategy from Galen Woods. Can someone code that for me, please?

    These are the rules for a long trade signal:

    The 9-period EMA must be above the 30-period WMA

    The two moving averages must be separated from each other

    The first bar to close below the 9 EMA is used as the trigger bar for the buy setup

    Place a buy limit order above the high of the trigger bar.

    If you want to go short, follow this three step process:

    The 9-period EMA must be below the 30-period WMA

    The two moving averages must be separated from each other

    The first bar to close above the 9 EMA is used as the trigger bar for the sales setup

    Place a sell limit order below the low of the trigger bar

    Trailing stop loss below / above the WMA30

     

    For better reading of the trading rules I found this website:

    https://tradingstrategyguides.com/9-30-trading- strategy / # When_to_use_the_930_Trading_Method

    #180009 quote
    robertogozzirobertogozzi
    Moderator
    Legend

    There you go:

    //                   9-30 Trading Method
    //
    //https://tradingstrategyguides.com/9-30-trading-strategy/
    //
    DEFPARAM CumulateOrders = false
    //
    ONCE Trigger = 0
    ONCE EntryL  = 0
    ONCE EntryS  = 0
    ONCE SL      = 0
    //
    TradeON = (OpenTime >= 090000) AND (OpenTime <= 190000)
    //
    Ema9    = average[9,1](close)
    Wma30   = average[30,2](close)
    L1      = Ema9 > Wma30
    S1      = Ema9 < Wma30
    MAgap   = abs(Ema9 - Wma30)
    Apart   = MAgap > average[20,0](MAgap)
    Trigger = (L1 AND (close < Ema9)) OR (S1 AND (close > Ema9))
    IF OnMarket OR (L1 <> L1[1]) OR (S1 <> S1[1]) THEN
       Trigger = 0
       EntryL  = 0
       EntryS  = 0
       SL      = 0
    ENDIF
    IF (Apart AND L1) AND Not Trigger THEN
       EntryL = high  + 1 * PipSize
       EntryS = 0
       //SL   = low   - 1 * PipSize
       SL     = Wma30 - 1 * PipSize
    ELSIF (Apart AND S1) AND Not Trigger THEN
       EntryS = low  - 1 * PipSize
       EntryL = 0
       //SL   = high  + 1 * PipSize
       SL     = Wma30 + 1 * PipSize
    ENDIF
    //
    IF TradeON THEN
       IF EntryL AND Not LongOnMarket THEN
          BUY 1 CONTRACT AT EntryL STOP
          SELL           AT SL     STOP
       ELSIF EntryS AND Not ShortOnMarket THEN
          SELLSHORT 1 CONTRACT AT EntryS STOP
          EXITSHORT            AT SL     STOP
       ENDIF
    ENDIF
    IF LongOnMarket THEN
       SL = max(SL,Wma30)
       SELL AT SL STOP
    ELSIF ShortOnMarket THEN
       SL = min(SL,Wma30)
       EXITSHORT AT SL STOP
    ENDIF
    //-----------------------
    // debugging code
    Entry = EntryL
    IF Entry = 0 THEN
       Entry = EntryS
    ENDIF
    IF Entry > 0 THEN
       graphonprice Entry
    ENDIF
    IF SL > 0 THEN
       graphonprice SL coloured(0,128,0,155)
    ENDIF

    I used the more conservative trailing stop based on WMA30, but I also commented out the more aggressive way. You can simply use either by swapping comment slashes (but I think it shouldn’t be rewarding).

    I tested it on DAX € 5, 1h TF, 200K units.

    Ipsch, Midlanddave and Nicolas thanked this post
    x-9.jpg x-9.jpg
    #180027 quote
    phoentzsphoentzs
    Participant
    Master

    Thank you very much Roberto, the strategy looks good. The way it should work. I think the results are better on Nasdaq or SP500.

    Can you please explain the function of lines 18 and 19 to me? In words?

    Can you add a take profit? In relation to the SL, 1: 1 or 1: 1.5?

    #180029 quote
    robertogozzirobertogozzi
    Moderator
    Legend

    That’s to make sure the two averages have some gap in between them. I use GAP (difference) to calculate their distance, then I set variable APART only when that gap is greater than the its average over a given period.

    Replace lines 27-37 by these ones (I couldn’t test them, though):

    IF (Apart AND L1) AND Not Trigger THEN
       EntryL = high  + 1 * PipSize
       EntryS = 0
       //SL   = low   - 1 * PipSize
       SL     = Wma30 - 1 * PipSize
       TP     = abs(EntryL - SL) * 1.5
       SET TARGET PROFIT TP
    ELSIF (Apart AND S1) AND Not Trigger THEN
       EntryS = low  - 1 * PipSize
       EntryL = 0
       //SL   = high  + 1 * PipSize
       SL     = Wma30 + 1 * PipSize
       TP     = abs(EntryS - SL) * 1.5
       SET TARGET PROFIT TP
    ENDIF

    replace 1.5 with any multiplier of your choice.

    #180035 quote
    phoentzsphoentzs
    Participant
    Master

    Thank you Roberto. I will test it in peace.

    #219959 quote
    Meta Signals ProMeta Signals Pro
    Participant
    Veteran

    Hi Phoentz,

    Thanks for digging on other sites to get new ideas ^^

    did you get a good backtest on this one and on which asset ? Mine are negative before 2021 on NAS H1;

    best

    #219964 quote
    phoentzsphoentzs
    Participant
    Master

    The strategy is intended intraday… I got it to work quite adequately with changed values ​​in the TF M1 on Nasdaq. It’s been a while. But I had the feeling that it wasn’t stable. But I’m a little smarter now than I was then. It’s possible that I didn’t have much of a clue as to how the system worked.

    Meta Signals Pro thanked this post
    #220435 quote
    Meta Signals ProMeta Signals Pro
    Participant
    Veteran

    Ah ok I was updating the backtest of Roberto that was in “1 ora”

    Coding request for EMA9 / WMA30 strategy

    here is the backtest ;

    Maybe inverting the conditions can make it a winner 😉

    Thanks anyway,

    Chris

    NASDAQ-1-minute.png NASDAQ-1-minute.png
Viewing 8 posts - 1 through 8 (of 8 total)
  • You must be logged in to reply to this topic.
ProRealAI ProRealAI New

Stuck on this ProBuilder code?

Describe what this topic is trying to build, in plain English, and ProRealAI writes the ProRealTime™ indicator, screener or system for you.

Available in 7 languages
Try ProRealAI

Coding request for EMA9 / WMA30 strategy


ProOrder: Automated Strategies & Backtesting

New Reply
Author
author-avatar
phoentzs @phoentzs Participant
Summary

This topic contains 7 replies,
has 3 voices, and was last updated by Meta Signals ProMeta Signals Pro
3 years, 1 month ago.

Topic Details
Forum: ProOrder: Automated Strategies & Backtesting
Language: English
Started: 10/19/2021
Status: Active
Attachments: 2 files
ProRealCode ProRealCode
Loading...