Check of previous candles

Viewing 15 posts - 16 through 30 (of 32 total)
  • Author
    Posts
  • #76693 quote
    Marc
    Participant
    Average

    Hi together,

    I’ve tried to fix the code a littlebit while using HA-Candles instead of normal Japanese Candle-Sticks and to expand days from non trading day monday to friday.
    There is a bug within the code and nothing happens when starting backtest.
    Can somebody try to check where I made the mistake?

    Thank you in advance

    Marc

    DEFPARAM CumulateOrders = false
    EntryOpen = (open[1]+close[1])/2 //alternativ close
    EntryClose = (open+close+low+high)/4 //alternativ open
    TIMEFRAME (Monthly, updateonclose)
    IF EntryClose > EntryOpen THEN
    MyMonth = 1              //BULLish
    ELSE
    MyMonth = -1             //BEARish
    ENDIF
    
    TIMEFRAME (Weekly, updateonclose)
    IF EntryClose > EntryOpen THEN
    MyWeek  = 1              //BULLish
    ELSE
    MyWeek  = -1             //BEARish
    ENDIF
    
    TIMEFRAME (Daily, updateonclose)
    ONCE AlreadyTraded = 0
    IF EntryClose > EntryOpen THEN
    MyDay   = 1              //BULLish
    ELSE
    MyDay   = -1             //BEARish
    ENDIF
    ThisDay = OpenDay
    IF ThisDay = 1 AND Not OnMarket AND AlReadyTraded = 0 THEN     //Monday
    GoLong  = MyMonth = 1  AND MyWeek =  1 AND MyDay = -1
    GoShort = MyMonth = -1 AND MyWeek = -1 AND MyDay = 1
    IF GoLong THEN
    EntryPrice = Max(high,close) //alternativ high
    BUY 1 CONTRACT AT EntryPrice LIMIT
    ELSIF GoShort THEN
    EntryPrice = Min(low,close) //alternativ low
    SELLSHORT 1 CONTRACT AT EntryPrice LIMIT
    ENDIF
    Sl = AverageTrueRange[2](close)
    Tp = Sl
    SET Stop   Loss   Sl
    SET Target Profit Tp
    ENDIF
    
    IF ThisDay = 2 AND Not OnMarket AND AlReadyTraded = 0 THEN     //Tuesday
    GoLong  = MyMonth = 1  AND MyWeek =  1 AND MyDay[1] = -1 AND MyDay = -1
    GoShort = MyMonth = -1 AND MyWeek = -1 AND MyDay[1] = 1  AND MyDay = 1
    IF GoLong THEN
    EntryPrice = Max(high,close) //alternativ high
    BUY 1 CONTRACT AT EntryPrice LIMIT
    ELSIF GoShort THEN
    EntryPrice = Min(low,close) //alternativ low
    SELLSHORT 1 CONTRACT AT EntryPrice LIMIT
    ENDIF
    Sl = AverageTrueRange[2](close)
    Tp = Sl
    SET Stop   Loss   Sl
    SET Target Profit Tp
    ENDIF
    IF ThisDay = 3 AND Not OnMarket AND AlReadyTraded = 0 THEN     //Wednesday
    GoLong  = MyMonth = 1  AND MyWeek =  1 AND MyDay[1] = -1 AND MyDay = -1
    GoShort = MyMonth = -1 AND MyWeek = -1 AND MyDay[1] = 1  AND MyDay = 1
    IF GoLong THEN
    EntryPrice = Max(high,close) //alternativ high
    BUY 1 CONTRACT AT EntryPrice LIMIT
    ELSIF GoShort THEN
    EntryPrice = Min(low,close) //alternativ low
    SELLSHORT 1 CONTRACT AT EntryPrice LIMIT
    ENDIF
    Sl = AverageTrueRange[2](close)
    Tp = Sl
    SET Stop   Loss   Sl
    SET Target Profit Tp
    ENDIF
    IF ThisDay = 4 AND Not OnMarket AND AlReadyTraded = 0 THEN     //Thursday
    GoLong  = MyMonth = 1  AND MyWeek =  1 AND MyDay[1] = -1 AND MyDay = -1
    GoShort = MyMonth = -1 AND MyWeek = -1 AND MyDay[1] = 1  AND MyDay = 1
    IF GoLong THEN
    EntryPrice = Max(high,close) //alternativ high
    BUY 1 CONTRACT AT EntryPrice LIMIT
    ELSIF GoShort THEN
    EntryPrice = Min(low,close) //alternativ low
    SELLSHORT 1 CONTRACT AT EntryPrice LIMIT
    ENDIF
    Sl = AverageTrueRange[2](close)
    Tp = Sl
    SET Stop   Loss   Sl
    SET Target Profit Tp
    ENDIF
    IF ThisDay = 5 AND Not OnMarket AND AlReadyTraded = 0 THEN     //Friday
    GoLong  = MyMonth = 1  AND MyWeek =  1 AND MyDay[1] = -1 AND MyDay = -1
    GoShort = MyMonth = -1 AND MyWeek = -1 AND MyDay[1] = 1  AND MyDay = 1
    IF GoLong THEN
    EntryPrice = Max(high,close) //alternativ high
    BUY 1 CONTRACT AT EntryPrice LIMIT
    ELSIF GoShort THEN
    EntryPrice = Min(low,close) //alternativ low
    SELLSHORT 1 CONTRACT AT EntryPrice LIMIT
    ENDIF
    Sl = AverageTrueRange[2](close)
    Tp = Sl
    SET Stop   Loss   Sl
    SET Target Profit Tp
    ENDIF
    
    IF ThisDay = 1 OR 2 OR 3 OR 4 OR 5 AND Not OnMarket THEN
    AlreadyTraded = 0
    ENDIF
    IF OnMarket THEN
    AlreadyTraded = 1
    ENDIF
    
    #76696 quote
    robertogozzi
    Moderator
    Master

    This the code I adapted to non-MTF platforms

    DEFPARAM CumulateOrders = false
    
    //////////////////////////////////////////////////////////////////////////////////
    //              code to simulate accessing the MONTHLY TF
    //              to retrieve previous month's OPEN & CLOSE
    //
    //TIMEFRAME (Monthly, updateonclose)
    FOR i = 1 TO 31
    IF OpenMonth[i] <> OpenMonth[i - 1] THEN
    MyMonthClose = close[i]                 //Last Day of previous Month (month IDs differ)
    FOR j = i + 1 TO i + 31
    IF OpenMonth[j] <> OpenMonth[j - 1] THEN
    MyMonthOpen = close[j - 1]        //First Day of previous Month (month IDs differ)
    BREAK
    ENDIF
    NEXT
    BREAK
    ENDIF
    NEXT
    IF MyMonthClose > MyMonthOpen THEN
    MyMonth = 1              //BULLish
    ELSE
    MyMonth = -1             //BEARish
    ENDIF
    
    //////////////////////////////////////////////////////////////////////////////////
    //              code to simulate accessing the WEEKLY TF
    //              to retrieve previous week's OPEN & CLOSE
    //
    //TIMEFRAME (Weekly, updateonclose)
    FOR i = 1 TO 13
    IF OpenDayOfWeek[i] = 5 THEN
    MyWeekClose = close[i]            //When day 5 closes, the WEEK is also closing
    MyWeekOpen = close[i + 5]         //5 days before it was SUNDAY, thus week's opening
    BREAK
    ENDIF
    NEXT
    IF MyWeekClose > MyWeekOpen THEN
    MyWeek  = 1              //BULLish
    ELSE
    MyWeek  = -1             //BEARish
    ENDIF
    
    //TIMEFRAME (Daily, updateonclose)
    ONCE AlreadyTraded = 0
    IF close > open THEN
    MyDay   = 1              //BULLish
    ELSE
    MyDay   = -1             //BEARish
    ENDIF
    ThisDay = OpenDayOfWeek
    IF ThisDay = 1 AND Not OnMarket AND AlReadyTraded = 0 THEN     //Monday
    GoLong  = MyMonth = 1  AND MyWeek =  1 AND MyDay = -1
    GoShort = MyMonth = -1 AND MyWeek = -1 AND MyDay = 1
    IF GoLong THEN
    EntryPrice = high
    BUY 1 CONTRACT AT EntryPrice LIMIT
    ELSIF GoShort THEN
    EntryPrice = low
    SELLSHORT 1 CONTRACT AT EntryPrice LIMIT
    ENDIF
    Sl = AverageTrueRange[2](close)
    Tp = Sl
    SET Stop   Loss   Sl
    SET Target Profit Tp
    ENDIF
    
    IF ThisDay = 2 AND Not OnMarket AND AlReadyTraded = 0 THEN     //Tuesday
    GoLong  = MyMonth = 1  AND MyWeek =  1 AND MyDay[1] = -1 AND MyDay = -1
    GoShort = MyMonth = -1 AND MyWeek = -1 AND MyDay[1] = 1  AND MyDay = 1
    IF GoLong THEN
    EntryPrice = high
    BUY 1 CONTRACT AT EntryPrice LIMIT
    ELSIF GoShort THEN
    EntryPrice = low
    SELLSHORT 1 CONTRACT AT EntryPrice LIMIT
    ENDIF
    Sl = AverageTrueRange[2](close)
    Tp = Sl
    SET Stop   Loss   Sl
    SET Target Profit Tp
    ENDIF
    
    IF ThisDay = 1 AND Not OnMarket THEN
    AlreadyTraded = 0
    ENDIF
    IF OnMarket THEN
    AlreadyTraded = 1
    ENDIF
    #76698 quote
    robertogozzi
    Moderator
    Master

    As for your previous code on top of the page, when changing code I suggest that you change 1 feature at a time and when THAT feature works go on to add another one, otherwise you (and everybody else) will be lost!

    If you want to add days after Tuesday lines 58-59 (for Wednesday) should be replaced by

    GoLong  = MyMonth = 1  AND MyWeek =  1 AND MyDay[2] = -1 AND MyDay[1] = -1 AND MyDay = -1
    GoShort = MyMonth = -1 AND MyWeek = -1 AND MyDay[2] = 1  AND MyDay[1] = 1  AND MyDay = 1

    if you still want to check the same trend is upgoing.

    Moreover, my fault, line 24 of my original code and your line 25 should be replaced by

    ThisDay = OpenDayOfWeek
    #76706 quote
    Marc
    Participant
    Average

    Hi Roberto,

    this is the amended Code which contains the addition of ‘AND MyDay = -1’ &  ‘AND MyDay = 1’  for all other days than Monday and Tuesday.
    Amendment contains also the syntax ‘ThisDay = OpenDayOfWeek’

    DEFPARAM CumulateOrders = false
    EntryOpen = (open[1]+close[1])/2 //alternativ close
    EntryClose = (open+close+low+high)/4 //alternativ open
    TIMEFRAME (Monthly, updateonclose)
    IF EntryClose > EntryOpen THEN
    MyMonth = 1              //BULLish
    ELSE
    MyMonth = -1             //BEARish
    ENDIF
    
    TIMEFRAME (Weekly, updateonclose)
    IF EntryClose > EntryOpen THEN
    MyWeek  = 1              //BULLish
    ELSE
    MyWeek  = -1             //BEARish
    ENDIF
    
    TIMEFRAME (Daily, updateonclose)
    ONCE AlreadyTraded = 0
    IF EntryClose > EntryOpen THEN
    MyDay   = 1              //BULLish
    ELSE
    MyDay   = -1             //BEARish
    ENDIF
    
    ThisDay = OpenDayOfWeek
    IF ThisDay = 1 AND Not OnMarket AND AlReadyTraded = 0 THEN     //Monday
    GoLong  = MyMonth = 1  AND MyWeek =  1 AND MyDay = -1
    GoShort = MyMonth = -1 AND MyWeek = -1 AND MyDay = 1
    IF GoLong THEN
    EntryPrice = Max(high,close) //alternativ high
    BUY 1 CONTRACT AT EntryPrice LIMIT
    ELSIF GoShort THEN
    EntryPrice = Min(low,close) //alternativ low
    SELLSHORT 1 CONTRACT AT EntryPrice LIMIT
    ENDIF
    Sl = AverageTrueRange[2](close)
    Tp = Sl
    SET Stop   Loss   Sl
    SET Target Profit Tp
    ENDIF
    
    IF ThisDay = 2 AND Not OnMarket AND AlReadyTraded = 0 THEN     //Tuesday
    GoLong  = MyMonth = 1  AND MyWeek =  1 AND MyDay[1] = -1 AND MyDay = -1
    GoShort = MyMonth = -1 AND MyWeek = -1 AND MyDay[1] = 1  AND MyDay = 1
    IF GoLong THEN
    EntryPrice = Max(high,close) //alternativ high
    BUY 1 CONTRACT AT EntryPrice LIMIT
    ELSIF GoShort THEN
    EntryPrice = Min(low,close) //alternativ low
    SELLSHORT 1 CONTRACT AT EntryPrice LIMIT
    ENDIF
    Sl = AverageTrueRange[2](close)
    Tp = Sl
    SET Stop   Loss   Sl
    SET Target Profit Tp
    ENDIF
    IF ThisDay = 3 AND Not OnMarket AND AlReadyTraded = 0 THEN     //Wednesday
    GoLong  = MyMonth = 1  AND MyWeek =  1 AND MyDay[1] = -1 AND MyDay = -1 AND MyDay = -1
    GoShort = MyMonth = -1 AND MyWeek = -1 AND MyDay[1] = 1  AND MyDay = 1 AND MyDay = 1
    IF GoLong THEN
    EntryPrice = Max(high,close) //alternativ high
    BUY 1 CONTRACT AT EntryPrice LIMIT
    ELSIF GoShort THEN
    EntryPrice = Min(low,close) //alternativ low
    SELLSHORT 1 CONTRACT AT EntryPrice LIMIT
    ENDIF
    Sl = AverageTrueRange[2](close)
    Tp = Sl
    SET Stop   Loss   Sl
    SET Target Profit Tp
    ENDIF
    IF ThisDay = 4 AND Not OnMarket AND AlReadyTraded = 0 THEN     //Thursday
    GoLong  = MyMonth = 1  AND MyWeek =  1 AND MyDay[1] = -1 AND MyDay = -1 AND MyDay = -1 AND MyDay = -1
    GoShort = MyMonth = -1 AND MyWeek = -1 AND MyDay[1] = 1  AND MyDay = 1 AND MyDay = 1 AND MyDay = 1
    IF GoLong THEN
    EntryPrice = Max(high,close) //alternativ high
    BUY 1 CONTRACT AT EntryPrice LIMIT
    ELSIF GoShort THEN
    EntryPrice = Min(low,close) //alternativ low
    SELLSHORT 1 CONTRACT AT EntryPrice LIMIT
    ENDIF
    Sl = AverageTrueRange[2](close)
    Tp = Sl
    SET Stop   Loss   Sl
    SET Target Profit Tp
    ENDIF
    IF ThisDay = 5 AND Not OnMarket AND AlReadyTraded = 0 THEN     //Friday
    GoLong  = MyMonth = 1  AND MyWeek =  1 AND MyDay[1] = -1 AND MyDay = -1 AND MyDay = -1 AND MyDay = -1 AND MyDay = -1
    GoShort = MyMonth = -1 AND MyWeek = -1 AND MyDay[1] = 1  AND MyDay = 1 AND MyDay = 1 AND MyDay = 1 AND MyDay = 1
    IF GoLong THEN
    EntryPrice = Max(high,close) //alternativ high
    BUY 1 CONTRACT AT EntryPrice LIMIT
    ELSIF GoShort THEN
    EntryPrice = Min(low,close) //alternativ low
    SELLSHORT 1 CONTRACT AT EntryPrice LIMIT
    ENDIF
    Sl = AverageTrueRange[2](close)
    Tp = Sl
    SET Stop   Loss   Sl
    SET Target Profit Tp
    ENDIF
    
    IF ThisDay = 1 OR 2 OR 3 OR 4 OR 5 AND Not OnMarket THEN
    AlreadyTraded = 0
    ENDIF
    IF OnMarket THEN
    AlreadyTraded = 1
    ENDIF
    
    #76708 quote
    Marc
    Participant
    Average

    It’s still looking a little bit wrong in it’s structure…I used first code:

    DEFPARAM CumulateOrders = false
    
    TIMEFRAME (Monthly, updateonclose)
    IF close > open THEN
    MyMonth = 1              //BULLish
    ELSE
    MyMonth = -1             //BEARish
    ENDIF
    
    TIMEFRAME (Weekly, updateonclose)
    IF close > open THEN
    MyWeek  = 1              //BULLish
    ELSE
    MyWeek  = -1             //BEARish
    ENDIF
    
    TIMEFRAME (Daily, updateonclose)
    ONCE AlreadyTraded = 0
    IF close > open THEN
    MyDay   = 1              //BULLish
    ELSE
    MyDay   = -1             //BEARish
    ENDIF
    ThisDay = OpenDayofWeek
    IF ThisDay = 1 AND Not OnMarket AND AlReadyTraded = 0 THEN     //Monday
    GoLong  = MyMonth = 1  AND MyWeek =  1 AND MyDay = -1
    GoShort = MyMonth = -1 AND MyWeek = -1 AND MyDay = 1
    IF GoLong THEN
    EntryPrice = high
    BUY 1 CONTRACT AT EntryPrice LIMIT
    ELSIF GoShort THEN
    EntryPrice = low
    SELLSHORT 1 CONTRACT AT EntryPrice LIMIT
    ENDIF
    Sl = AverageTrueRange[2](close)
    Tp = Sl
    SET Stop   Loss   Sl
    SET Target Profit Tp
    ENDIF
    
    IF ThisDay = 2 AND Not OnMarket AND AlReadyTraded = 0 THEN     //Tuesday
    GoLong  = MyMonth = 1  AND MyWeek =  1 AND MyDay[1] = -1 AND MyDay = -1
    GoShort = MyMonth = -1 AND MyWeek = -1 AND MyDay[1] = 1  AND MyDay = 1
    IF GoLong THEN
    EntryPrice = high
    BUY 1 CONTRACT AT EntryPrice LIMIT
    ELSIF GoShort THEN
    EntryPrice = low
    SELLSHORT 1 CONTRACT AT EntryPrice LIMIT
    ENDIF
    Sl = AverageTrueRange[2](close)
    Tp = Sl
    SET Stop   Loss   Sl
    SET Target Profit Tp
    ENDIF
    
    IF ThisDay = 3 AND Not OnMarket AND AlReadyTraded = 0 THEN     //Wednesday
    GoLong  = MyMonth = 1  AND MyWeek =  1 AND MyDay[1] = -1 AND MyDay = -1 AND MyDay = -1
    GoShort = MyMonth = -1 AND MyWeek = -1 AND MyDay[1] = 1  AND MyDay = 1 AND MyDay = 1
    IF GoLong THEN
    EntryPrice = high
    BUY 1 CONTRACT AT EntryPrice LIMIT
    ELSIF GoShort THEN
    EntryPrice = low
    SELLSHORT 1 CONTRACT AT EntryPrice LIMIT
    ENDIF
    Sl = AverageTrueRange[2](close)
    Tp = Sl
    SET Stop   Loss   Sl
    SET Target Profit Tp
    ENDIF
    
    IF ThisDay = 4 AND Not OnMarket AND AlReadyTraded = 0 THEN     //Thursday
    GoLong  = MyMonth = 1  AND MyWeek =  1 AND MyDay[1] = -1 AND MyDay = -1 AND MyDay = -1 AND MyDay = -1
    GoShort = MyMonth = -1 AND MyWeek = -1 AND MyDay[1] = 1  AND MyDay = 1 AND MyDay = 1 AND MyDay = 1
    IF GoLong THEN
    EntryPrice = high
    BUY 1 CONTRACT AT EntryPrice LIMIT
    ELSIF GoShort THEN
    EntryPrice = low
    SELLSHORT 1 CONTRACT AT EntryPrice LIMIT
    ENDIF
    Sl = AverageTrueRange[2](close)
    Tp = Sl
    SET Stop   Loss   Sl
    SET Target Profit Tp
    ENDIF
    
    IF ThisDay = 5 AND Not OnMarket AND AlReadyTraded = 0 THEN     //Friday
    GoLong  = MyMonth = 1  AND MyWeek =  1 AND MyDay[1] = -1 AND MyDay = -1 AND MyDay = -1 AND MyDay = -1 AND MyDay = -1
    GoShort = MyMonth = -1 AND MyWeek = -1 AND MyDay[1] = 1  AND MyDay = 1 AND MyDay = 1 AND MyDay = 1 AND MyDay = 1
    IF GoLong THEN
    EntryPrice = high
    BUY 1 CONTRACT AT EntryPrice LIMIT
    ELSIF GoShort THEN
    EntryPrice = low
    SELLSHORT 1 CONTRACT AT EntryPrice LIMIT
    ENDIF
    Sl = AverageTrueRange[2](close)
    Tp = Sl
    SET Stop   Loss   Sl
    SET Target Profit Tp
    ENDIF
    
    IF ThisDay = 1 AND Not OnMarket THEN
    AlreadyTraded = 0
    ENDIF
    IF OnMarket THEN
    AlreadyTraded = 1
    ENDIF
    
    #76716 quote
    robertogozzi
    Moderator
    Master

    As you add more days you’ll have to add further references to past instancesc of MyDay, thus MyDay, MyDay[1], MyDay[2],…

    Read https://www.prorealcode.com/topic/check-of-previous-candles/page/2/#post-76698.

    #76781 quote
    Marc
    Participant
    Average

    Hi Roberto,

    I see, I see…Thank you I will amend the code and paste latest version

     

    Rgds

    Marc

    #76806 quote
    Marc
    Participant
    Average

    Amended Code

    TIMEFRAME (Monthly, updateonclose)
    IF close > open THEN
    MyMonth = 1 //BULLish
    ELSE
    MyMonth = -1 //BEARish
    ENDIF
    
    TIMEFRAME (Weekly, updateonclose)
    IF close > open THEN
    MyWeek = 1 //BULLish
    ELSE
    MyWeek = -1 //BEARish
    ENDIF
    
    TIMEFRAME (Daily, updateonclose)
    ONCE AlreadyTraded = 0
    IF close > open THEN
    MyDay = 1 //BULLish
    ELSE
    MyDay = -1 //BEARish
    ENDIF
    ThisDay = OpenDayofWeek
    IF ThisDay = 1 AND Not OnMarket AND AlReadyTraded = 0 THEN //Monday
    GoLong = MyMonth = 1 AND MyWeek = 1 AND MyDay = -1
    GoShort = MyMonth = -1 AND MyWeek = -1 AND MyDay = 1
    IF GoLong THEN
    EntryPrice = high
    BUY 1 CONTRACT AT EntryPrice LIMIT
    ELSIF GoShort THEN
    EntryPrice = low
    SELLSHORT 1 CONTRACT AT EntryPrice LIMIT
    ENDIF
    Sl = AverageTrueRange[2](close)
    Tp = Sl
    SET Stop Loss Sl
    SET Target Profit Tp
    ENDIF
    
    IF ThisDay = 2 AND Not OnMarket AND AlReadyTraded = 0 THEN //Tuesday
    GoLong = MyMonth = 1 AND MyWeek = 1 AND MyDay[1] = -1 AND MyDay[2] = -1
    GoShort = MyMonth = -1 AND MyWeek = -1 AND MyDay[1] = 1 AND MyDay[2] = 1
    IF GoLong THEN
    EntryPrice = high
    BUY 1 CONTRACT AT EntryPrice LIMIT
    ELSIF GoShort THEN
    EntryPrice = low
    SELLSHORT 1 CONTRACT AT EntryPrice LIMIT
    ENDIF
    Sl = AverageTrueRange[2](close)
    Tp = Sl
    SET Stop Loss Sl
    SET Target Profit Tp
    ENDIF
    
    IF ThisDay = 3 AND Not OnMarket AND AlReadyTraded = 0 THEN //Wednesday
    GoLong = MyMonth = 1 AND MyWeek = 1 AND MyDay[1] = -1 AND MyDay[2] = -1 AND MyDay[3] = -1
    GoShort = MyMonth = -1 AND MyWeek = -1 AND MyDay[1] = 1 AND MyDay[2] = 1 AND MyDay[3] = 1
    IF GoLong THEN
    EntryPrice = high
    BUY 1 CONTRACT AT EntryPrice LIMIT
    ELSIF GoShort THEN
    EntryPrice = low
    SELLSHORT 1 CONTRACT AT EntryPrice LIMIT
    ENDIF
    Sl = AverageTrueRange[2](close)
    Tp = Sl
    SET Stop Loss Sl
    SET Target Profit Tp
    ENDIF
    
    IF ThisDay = 4 AND Not OnMarket AND AlReadyTraded = 0 THEN //Thursday
    GoLong = MyMonth = 1 AND MyWeek = 1 AND MyDay[1] = -1 AND MyDay[2] = -1 AND MyDay[3] = -1 AND MyDay[4] = -1
    GoShort = MyMonth = -1 AND MyWeek = -1 AND MyDay[1] = 1 AND MyDay[2] = 1 AND MyDay[3] = 1 AND MyDay[4] = 1
    IF GoLong THEN
    EntryPrice = high
    BUY 1 CONTRACT AT EntryPrice LIMIT
    ELSIF GoShort THEN
    EntryPrice = low
    SELLSHORT 1 CONTRACT AT EntryPrice LIMIT
    ENDIF
    Sl = AverageTrueRange[2](close)
    Tp = Sl
    SET Stop Loss Sl
    SET Target Profit Tp
    ENDIF
    
    IF ThisDay = 5 AND Not OnMarket AND AlReadyTraded = 0 THEN //Friday
    GoLong = MyMonth = 1 AND MyWeek = 1 AND MyDay[1] = -1 AND MyDay[2] = -1 AND MyDay[3] = -1 AND MyDay[4] = -1 AND MyDay[5] = -1
    GoShort = MyMonth = -1 AND MyWeek = -1 AND MyDay[1] = 1 AND MyDay[2] = 1 AND MyDay[3] = 1 AND MyDay[4] = 1 AND MyDay[5] = 1
    IF GoLong THEN
    EntryPrice = high
    BUY 1 CONTRACT AT EntryPrice LIMIT
    ELSIF GoShort THEN
    EntryPrice = low
    SELLSHORT 1 CONTRACT AT EntryPrice LIMIT
    ENDIF
    Sl = AverageTrueRange[2](close)
    Tp = Sl
    SET Stop Loss Sl
    SET Target Profit Tp
    ENDIF
    
    IF ThisDay = 1 AND Not OnMarket THEN
    AlreadyTraded = 0
    ENDIF
    IF OnMarket THEN
    AlreadyTraded = 1
    ENDIF
    
    #76807 quote
    Marc
    Participant
    Average

    When checking System with manually traded one the differences are really big.

    I have no idea why the backtest show this negative results -.-

    #76860 quote
    Marc
    Participant
    Average

    Hi together,

    I’d like to receive some help again. Is it possible to change the value of close to heikin ashi close?
    Is it correct to change close versus  (open+close+low+high)/4    ?

    The same idea for open: instead of open i would change the code to (open[1]+close[1])/2

    Then I need to calculate the high and low also in heikin ashi based calculation-system

    Thank you very much for your help.
    Marc

    #76864 quote
    robertogozzi
    Moderator
    Master

    There’s no instruction to deal with Heikin Ashi candles, when you want to reference them you’ll have to set them up like that

    IF BarIndex=0 THEN
       xClose = (open+high+low+close)/4
       xOpen  = open
       xHigh  = high
       xLow   = low
    ELSE
       xClose = (open+high+low+close)/4
       xOpen  = (xOpen[1]+xClose[1])/2
       xHigh  = Max(max(high, xOpen), xClose)
       xLow   = Min(min(Low, xOpen), xClose)
    endif

    this code is ready AS IS, just reference xClose, xOpen, xHigh, xLow to get Heikin Ashi values.

    Some prefer to use variable names with leading HA instead of X, you can change them as you like.

    To deal with HA you may use the search box to find out what HEIKIN (or ASHI, or HA)  returns.

    #76867 quote
    Marc
    Participant
    Average

    Hi Roberto thank you very much. Where can I set Barindex?

    Only as variablke on Top of the Code a la

    ‘BarIndex = 0’

    afterwards the rest of the code incl. amendmends?

    #76869 quote
    Vonasi
    Moderator
    Master

    Where can I set Barindex?

    You do not need to set BARINDEX. It is the filing system for the bars on any chart. The first bar is BARINDEX =1 and the second is BARINDEX =2 and so on. If there are 10000 bars on your chart then the current bar is BARINDEX = 10000

    #77070 quote
    Marc
    Participant
    Average

    Heres is the amended code:

    TIMEFRAME (Monthly, updateonclose)
    
    xClose = (open+high+low+close)/4
    xOpen  = (xOpen[1]+xClose[1])/2
    xHigh  = Max(max(high, xOpen), xClose)
    xLow   = Min(min(Low, xOpen), xClose)
    
    IF (open+high+low+close)/4 > (xOpen[1]+xClose[1])/2 THEN
    MyMonth = 1 //BULLish
    ELSE
    MyMonth = -1 //BEARish
    ENDIF
    
    TIMEFRAME (Weekly, updateonclose)
    IF (open+high+low+close)/4 > (xOpen[1]+xClose[1])/2 THEN
    MyWeek = 1 //BULLish
    ELSE
    MyWeek = -1 //BEARish
    ENDIF
    
    TIMEFRAME (Daily, updateonclose)
    ONCE AlreadyTraded = 0
    IF (open+high+low+close)/4 > (xOpen[1]+xClose[1])/2 THEN
    MyDay = 1 //BULLish
    ELSE
    MyDay = -1 //BEARish
    ENDIF
    ThisDay = OpenDayofWeek
    IF ThisDay = 1 AND Not OnMarket AND AlReadyTraded = 0 THEN //Monday
    GoLong = MyMonth = 1 AND MyWeek = 1 AND MyDay = -1
    GoShort = MyMonth = -1 AND MyWeek = -1 AND MyDay = 1
    IF GoLong THEN
    EntryPrice = xHigh  
    BUY 1 CONTRACT AT EntryPrice LIMIT
    ELSIF GoShort THEN
    EntryPrice = xLow   
    SELLSHORT 1 CONTRACT AT EntryPrice LIMIT
    ENDIF
    Sl = AverageTrueRange[2](close)
    Tp = Sl
    SET Stop Loss Sl
    SET Target Profit Tp
    ENDIF
    
    IF ThisDay = 2 AND Not OnMarket AND AlReadyTraded = 0 THEN //Tuesday
    GoLong = MyMonth = 1 AND MyWeek = 1 AND MyDay[1] = -1 AND MyDay[2] = -1
    GoShort = MyMonth = -1 AND MyWeek = -1 AND MyDay[1] = 1 AND MyDay[2] = 1
    IF GoLong THEN
    EntryPrice = xHigh  
    BUY 1 CONTRACT AT EntryPrice LIMIT
    ELSIF GoShort THEN
    EntryPrice = xLow   
    SELLSHORT 1 CONTRACT AT EntryPrice LIMIT
    ENDIF
    Sl = AverageTrueRange[2](close)
    Tp = Sl
    SET Stop Loss Sl
    SET Target Profit Tp
    ENDIF
    
    IF ThisDay = 3 AND Not OnMarket AND AlReadyTraded = 0 THEN //Wednesday
    GoLong = MyMonth = 1 AND MyWeek = 1 AND MyDay[1] = -1 AND MyDay[2] = -1 AND MyDay[3] = -1
    GoShort = MyMonth = -1 AND MyWeek = -1 AND MyDay[1] = 1 AND MyDay[2] = 1 AND MyDay[3] = 1
    IF GoLong THEN
    EntryPrice = xHigh  
    BUY 1 CONTRACT AT EntryPrice LIMIT
    ELSIF GoShort THEN
    EntryPrice = xLow   
    SELLSHORT 1 CONTRACT AT EntryPrice LIMIT
    ENDIF
    Sl = AverageTrueRange[2](close)
    Tp = Sl
    SET Stop Loss Sl
    SET Target Profit Tp
    ENDIF
    
    IF ThisDay = 4 AND Not OnMarket AND AlReadyTraded = 0 THEN //Thursday
    GoLong = MyMonth = 1 AND MyWeek = 1 AND MyDay[1] = -1 AND MyDay[2] = -1 AND MyDay[3] = -1 AND MyDay[4] = -1
    GoShort = MyMonth = -1 AND MyWeek = -1 AND MyDay[1] = 1 AND MyDay[2] = 1 AND MyDay[3] = 1 AND MyDay[4] = 1
    IF GoLong THEN
    EntryPrice = xHigh  
    BUY 1 CONTRACT AT EntryPrice LIMIT
    ELSIF GoShort THEN
    EntryPrice = xLow   
    SELLSHORT 1 CONTRACT AT EntryPrice LIMIT
    ENDIF
    Sl = AverageTrueRange[2](close)
    Tp = Sl
    SET Stop Loss Sl
    SET Target Profit Tp
    ENDIF
    
    IF ThisDay = 5 AND Not OnMarket AND AlReadyTraded = 0 THEN //Friday
    GoLong = MyMonth = 1 AND MyWeek = 1 AND MyDay[1] = -1 AND MyDay[2] = -1 AND MyDay[3] = -1 AND MyDay[4] = -1 AND MyDay[5] = -1
    GoShort = MyMonth = -1 AND MyWeek = -1 AND MyDay[1] = 1 AND MyDay[2] = 1 AND MyDay[3] = 1 AND MyDay[4] = 1 AND MyDay[5] = 1
    IF GoLong THEN
    EntryPrice = xHigh  
    BUY 1 CONTRACT AT EntryPrice LIMIT
    ELSIF GoShort THEN
    EntryPrice = xLow   
    SELLSHORT 1 CONTRACT AT EntryPrice LIMIT
    ENDIF
    Sl = AverageTrueRange[2](close)
    Tp = Sl
    SET Stop Loss Sl
    SET Target Profit Tp
    ENDIF
    
    IF ThisDay = 1 AND Not OnMarket THEN
    AlreadyTraded = 0
    ENDIF
    IF OnMarket THEN
    AlreadyTraded = 1
    ENDIF

    I think this should be correct…

    #77077 quote
    Marc
    Participant
    Average

    When testing this system with it’s new parameters continaing ha-calculation of candles the return is confusing, because it’s very negative and shows only a downside curve…Anybody there who is willing to test this and confirms this?

     

    Rgds

    Marc

Viewing 15 posts - 16 through 30 (of 32 total)
  • You must be logged in to reply to this topic.

Check of previous candles


ProOrder: Automated Strategies & Backtesting

New Reply
Author
author-avatar
Marc @mast83 Participant
Summary

This topic contains 31 replies,
has 3 voices, and was last updated by Marc
7 years, 7 months ago.

Topic Details
Forum: ProOrder: Automated Strategies & Backtesting
Language: English
Started: 07/13/2018
Status: Active
Attachments: 4 files
Logo Logo
Loading...