1 Min Trading Strategy

Viewing 15 posts - 16 through 30 (of 220 total)
  • Author
    Posts
  • #40695 quote
    Inertia
    Participant
    Master

    Hi Juanj,

    I have attached the 200.000 bars test. As it is pretty erratic, I add a MA + a stop trailing…Hope you do not mind.

    Attached are the results.

    //Stategy: Scalping Candles
    //Market: EUR/USD
    //Timeframe: 1min
    //Spread: 0.8
    //Author: Juan Jacobs (Jd3gjacobs@gmail.com)
     
    Defparam cumulateorders = false
     
    If longonmarket and close < positionprice and (barindex-tradeindex) > 720 Then //Time Stop set to 12 hours
    Sell at market
    EndIf
     
    //Candle Paramaters
    body=close-open
    abody=abs(body)
     
    if range>0 then
    ratio=abody/range
    else
    ratio=0
    endif
     
    bodytop=max(open, close)
    bodybottom=min(open, close)
    shadowtop=high-bodytop
    longcandle= (ratio>0.6)
     
    Bull = 0
     
    //Bullish Signals
    BullishHarami=(body[1]<0 and body>0 and longcandle[1] and bodybottom>bodybottom[1] and bodytop<bodytop[1])
     
    MorningStar=(body[2]<0 and body>0 and longcandle[2] and open[1]<close[2] and open>close[1] and ratio[1]<0.3 and abody[1]<abody[2] and abody[1]<abody and low[1]<low and low[1]<low[2] and high[1]<open[2] and high[1]<close)
    if MorningStar then
    Bull = 1 //Positive
    endif
     
    ThreeInsideUp=(body[2]<0 and body[1]>0 and body>0 and BullishHarami[1] and close>close[1])
    if ThreeInsideUp then
    Bull = 1 //Positive
    endif
     
    ThreeOutsideUp=(body[2]<0 and body[1]>0 and body>0 and BullishEngulfing[1] and close>close[1])
    if ThreeOutsideUp then
    Bull = 1 //Positive
    endif
     
    BullishEngulfing=(body[1]<0 and body>0 and bodybottom<bodybottom[1] and bodytop>bodytop[1] and longcandle)
    if BullishEngulfing then
    Bull = 1 //Positive
    endif
     
    BullSash=(body[1]<0 AND longcandle[1] AND body>0 AND longcandle AND open>close[1] AND open<open[1] AND close>open[1] AND shadowtop<0.1*abody)
    if BullSash then
    Bull = 1 //Positive
    endif
     
    If (high - low) = 0 Then //Prevents potential division by zero
    HiLo = 1
    Else
    HiLo = (high - low)
    EndIf
     
    HammerUp = min(open[1],close[1])>high[1]-(high[1]-low[1])/3
    HammerUpNeg= max(open,close)<min(open[1],close[1]) and abs(open-close)/HiLo>0.5 //Bullish Hammer Negated = Bearish (used for exit signal)
    HammerDown = max(open[1],close[1])<low[1]+(high[1]-low[1])/3
    HammerDownNeg = min(open,close)>max(open[1],close[1]) and abs(open-close)/HiLo>0.5 //Bearish Hammer Negated = Bullish (used for exit signal)
     
    If HammerUp and HammerUpNeg Then
    //Bull = 0
    ElsIf HammerDown and HammerDownNeg Then
    Bull = 1
    EndIf
     
    dojibull2 = open[2]<close[2] and abs(open[2]-close[2])/(high[2]-low[2])<0.6
    dojibull1 = open[1]<close[1] and abs(open[1]-close[1])/(high[1]-low[1])<0.6
    dojibear2 = open[2]>close[2] and abs(open[2]-close[2])/(high[2]-low[2])<0.6
    dojibear1 = open[1]>close[1] and abs(open[1]-close[1])/(high[1]-low[1])<0.6
    hammerup2 = min(open,close)>high-(high-low)/2 //and max(open,close) < min(open[1],close[1])
    hammerdown2 = max(open,close)<low+(high-low)/2 //and max(open,close)<min(open[1],close[1])//and timeok
     
    If (dojibull2 and dojibull1) and hammerdown2 Then
    Bull = 1
    ElsIf  (dojibear2 and dojibear1) and hammerup2 Then
    //Bull = 0
    EndIf
     
    //Entry/Exit Criteria
     
    possize = 1
     
    ATR = AverageTrueRange[4](close)
    LongMA = Average[50,2](close)
    NearMA = Average[6,2](close)
    RSIChk = RSI[4](close) >= 80
    StoChk = Stochastic[14,3](close) >= 75
    Trendma = average[2000,2]
     
    If countofposition = 0 and Bull = 1 and close > LongMA and NearMA > LongMA and LongMA[1] > LongMA[20] and NearMA[1] > NearMA[3] and ATR[1] > ATR[2] and RSIChk and StoChk and Trendma > trendma [1]Then
    Buy possize contract at market
    EndIf
     
    //trailing stop
    trailingstop = 24
    if not onmarket then
    MAXPRICE = 0
    priceexit = 0
    endif
     
    //LONG order
    if longonmarket then
    MAXPRICE = MAX(MAXPRICE,close) //saving the MFE of the current trade
    if MAXPRICE-tradeprice(1)>=trailingstop*pointsize then //if the MFE is higher than the trailingstop then
    priceexit = MAXPRICE-trailingstop*pointsize //set the exit price at the MFE - trailing stop price level
    endif
    endif
     
    //exit on trailing stop price levels
    if onmarket and priceexit>0 then
    EXITSHORT AT priceexit STOP
    SELL AT priceexit STOP
    endif
    
    Set Target $profit 98
    Set Stop $Loss 150
    
    Jesús thanked this post
    200.000bars-0.8pips.png 200.000bars-0.8pips.png MA-filter-trailing-stop.png MA-filter-trailing-stop.png
    #40704 quote
    juanj
    Participant
    Master

    Very odd indeed. Maybe @Nicolas could provide us with a possibe explanation. What is odd to me is the fact that your wins is bigger than your losses with a low win rate. Whereas with the logic provided it would make sense to have results closer to those posted by me with a high win rate.

    Can I suggest everyone try playing around with the Stop and Target values using WF optimisation and then posting your results?

    #40705 quote
    juanj
    Participant
    Master

    @inertia I like the idea of using a the longer trend MA such as  2000 (the longer the better) but because of the limited bars available I refrained from  using it myself. Also technically speaking a trailing stop should not be necessary with a strategy with such low target. Either you take profit asap or get stopped out.

    Remember I only posted an idea for a 1 min scalping strategy, you guys are welcome to build onto that with your own ideas. Hopefully together we stumble upon something that works for everyone!

    Inertia thanked this post
    #40706 quote
    TheAccountant
    Participant
    Average

    You both with IG? I am with IG and my PRT Platform is direct from IG. Attached is latest version etc.

    im with IG and PRT CFD and yes exacly the same version.

    #40707 quote
    GraHal
    Participant
    Master

    We need a version recording method already! :).

    I propose using the Post Link or can you think of a better way?

    Code authors, modifiers and optimisers are contributing enough. So each time a new version / sub version is posted, please could somebody / anybody copy and paste the Table below and add the new version and Post Link at the bottom.

    Then – by scrolling up to find latest post showing the Table – we will all know where we are up to re Versions, as follows …

    Juanj     V1        click         #40559
    Juanj     V2        click        #40653   modified by   #40675
    Inertia   V2.2    click        #40695

    Inertia is your 1st image (left) Juanj V2 and your 2nd image (right) is Inertia V2.2?

    GraHal

    PS idea ‘falls at the 1st hurdle’ ? … the links aren’t clickable? Or are they for you, is it that I am still in the post screen or something weird?

    Inertia thanked this post
    #40709 quote
    GraHal
    Participant
    Master

    Aha my fault I think (I wont bore you how / why! 😉 ) … if you click on this Link you should get back to Page 1  #40559  ?

    I will correct on the next itteration of the Table.

    Mmm still not working, we may have to use the full link address as below?? Nicolas any ideas why this is not working … the link is copied from Page 1 of this Thread but clicking on the link (or even right click new Tab) does not take me back to Page 1??

    We may have use the full Link Address??

    https://www.prorealcode.com/topic/1-min-trading-strategy/#post-40559

    #40734 quote
    Inertia
    Participant
    Master

    Hi Grahal,

    Thank you for organising my mess ;)) … I will follow whatever the ordering method will be.

    I am not the king of the WF but attached are couple of tests made today from the post #40695.

    Hope it does make sense.

    detailed-WF.png detailed-WF.png closed-trades.png closed-trades.png WF-Variables.png WF-Variables.png WF-1.png WF-1.png
    #40740 quote
    Inertia
    Participant
    Master

    post #40695.

    The optimised set up are in progress…Takes hours…I’ll get back to you ASAP.

    Thx.

    On-progress....png On-progress....png
    #40742 quote
    Inertia
    Participant
    Master

    Hi Juanj,

    Thank you for your kind message. You did a great job !

    Well noted for the scalping vs surfing the trend…

    Once the WF done, I will play around with your original idea.

    I may reduce the risk/reward…to 40/10 (0.25).

    Keep in touch.

    Thanks

    #40757 quote
    juanj
    Participant
    Master

    I just realised that running this strategy on a 1min time frame vs. Something like a 5min time frame is actually less effective due to the fact that trends and candle stick patterns are actually more pronounced in the higher time frames. Also the profit target level is time frame independent and thus you still get the benefit of immediate position closing if the target profit level is hit.

    #40759 quote
    GraHal
    Participant
    Master

    I thought of how to sort it, should work now.

    If / when we get to many pages and versions the idea below may be useful … let’s see?

    V1.0      (1 min)       #40559
    V2.0      (1 min)       #40653   V2.1 snippet amend  #40675
    V2.2      (1 min)       #40695

    #40761 quote
    TheAccountant
    Participant
    Average

    Ok guys. Here is a version for the Dax. I set time filter  for it works only during time with low spread ( 1 pts).

    I optimized only SL and TP with WF on 200k units. It’s just version 1 (But it starts to become sexy ; )  )  . I’ll still work on it but I optimize only with WF so it takes time.

     

    DEFPARAM CumulateOrders = False // Cumul des positions désactivé
    
    noEntryBeforeTime = 090000
    timeEnterBefore = time >= noEntryBeforeTime
    
    noEntryAfterTime = 173000
    timeEnterAfter = time < noEntryAfterTime
    
    daysForbiddenEntry = OpenDayOfWeek = 6 OR OpenDayOfWeek = 0
    
    If longonmarket and close < positionprice and (barindex-tradeindex) > 650 Then
    Sell at market
    ElsIf shortonmarket and close > positionprice and (barindex-tradeindex) > 60 then
    Exitshort at market
    EndIf
     
    body=close-open
     
    abody=abs(body)
     
    if range>0 then
    ratio=abody/range
    else
    ratio=0
    endif
     
    middle=(open+close)/2
     
    bodytop=max(open, close)
     
    bodybottom=min(open, close)
     
    shadowtop=high-bodytop
     
    shadowbottom=bodybottom-low
     
    longcandle= (ratio>0.6)
     
    Bull = 0
    Bear = 0
     
    //Bullish Signals
     
    MorningStar=(body[2]<0 and body>0 and longcandle[2] and open[1]<close[2] and open>close[1] and ratio[1]<0.3 and abody[1]<abody[2] and abody[1]<abody and low[1]<low and low[1]<low[2] and high[1]<open[2] and high[1]<close)
    if MorningStar then
    Bull = 1 //Positive
    endif
     
    PiercingLine=(body[1]<0 and body>0 and longcandle[1] and longcandle and open<low[1] and close>middle[1] and close<open[1])
    if PiercingLine then
    Bull = 1 //None
    endif
     
    AbandonedBabyBottom=(body[2]<0 and body>0 and longcandle[2] and ratio[1]<0.3 and high[1]<low[2] and high[1]<low)
    if AbandonedBabyBottom then
    Bull = 1 //None
    endif
     
    ThreeInsideUp=(body[2]<0 and body[1]>0 and body>0 and BullishHarami[1] and close>close[1])
    if ThreeInsideUp then
    Bull = 1 //Positive
    endif
     
    ThreeOutsideUp=(body[2]<0 and body[1]>0 and body>0 and BullishEngulfing[1] and close>close[1])
    if ThreeOutsideUp then
    Bull = 1 //Positive
    endif
     
    ThreeWhiteSoldiers=(body[2]>0 and body[1]>0 and body>0 and high[1]>high[2] and high>high[1] and close[1]>close[2] and close>close[1] and open[1]>open[2] and open[1]<close[2] and open>open[1] and open<close[1])
    if ThreeWhiteSoldiers then
    //Bull = 1 //Increase Drawdown
    endif
     
    ConcealingBabySwallow=(body[3]<0 and body[2]<0 and body[1]<0 and body<0 and ratio[3]>0.8 and ratio[2]>0.8 and ratio>0.8 and open[1]<close[2] and high[1]>close[2] and shadowtop[1]>0.6*(abody[1]+shadowbottom[1]) and bodybottom<bodybottom[1] and bodytop>high[1])
    if ConcealingBabySwallow then
    Bull = 1 //None
    endif
     
    BullishHarami=(body[1]<0 and body>0 and longcandle[1] and bodybottom>bodybottom[1] and bodytop<bodytop[1])
    if BullishHarami then
    //Bull = 1 //Negative Impact
    endif
     
    HomingPigeon=(body[1]<0 and body<0 and longcandle[1] and bodybottom>bodybottom[1] and bodytop<bodytop[1])
    if HomingPigeon then
    Bull = 1 //None
    endif
     
    BullishEngulfing=(body[1]<0 and body>0 and bodybottom<bodybottom[1] and bodytop>bodytop[1] and longcandle)
    if BullishEngulfing then
    Bull = 1 //Positive
    endif
     
    LastEngulfingBottom=(body[1]>0 and body<0 and bodybottom<bodybottom[1] and bodytop>bodytop[1] and longcandle)
    if LastEngulfingBottom then
    Bull = 1 //None
    endif
     
    DragonflyDojiBottom=(body[1]<0 and longcandle[1] and low<low[1] and shadowbottom>3*abody and shadowtop<shadowbottom/3)
    if DragonflyDojiBottom then
    Bull = 1 //None
    endif
     
    GravestoneDojiBottom=(body[1]<0 and longcandle[1] and low<low[1] and shadowtop>3*abody and shadowbottom<shadowtop/3)
    if GravestoneDojiBottom then
    Bull = 1 //None
    endif
     
    DojiStarBottom=(body[1]<0 AND longcandle[1] AND low<low[1] AND open<close[1] AND ratio<0.3 AND range<0.3*range[1])
    if DojiStarBottom then
    Bull = 1 //None
    endif
     
    BullishHaramiCross=(body[1]<0 and longcandle[1] and bodybottom>bodybottom[1] and bodytop<bodytop[1] and ratio<0.3 and range<0.3*range[1])
    if BullishHaramiCross then
    Bull = 1 //None
    endif
     
    ThreeStarsInTheSouth=(body[2]<0 and body[1]<0 and body<0 and shadowtop[2]<range[2]/4 and shadowbottom[2]>abody[2]/2 and low[1]>low[2] and high[1]<high[2] and abody[1]<abody[2]  and shadowtop[1]<range[1]/4 and shadowbottom[1]>abody[1]/2 and low>low[1] and high<high[1] and abody<abody[1] and shadowtop<range/4 and shadowbottom<range/4)
    if ThreeStarsInTheSouth then
    Bull = 1  //None
    endif
     
    BullishBreakaway=(body[4]<0 and body[3]<0 and body>0 and open[3]<close[4] and close[2]<close[3] and close[1]<close[2] and longcandle and close<close[4] and close>open[3])
    if BullishBreakaway then
    Bull = 1 //None
    endif
     
    Hammer=(body[1]<0 and longcandle[1] and low<low[1] and shadowbottom>2*abody and shadowtop<0.3*abody)
    if Hammer then
    Bull = 1 //None
    endif
     
    InvertedHammer=(body[1]<0 and longcandle[1] and low<low[1] and shadowtop>2*abody and shadowbottom<0.3*abody)
    if InvertedHammer then
    Bull = 1 //None
    endif
     
    RisingThreeMethods=(body[4]>0 and body[3]<0 and body[1]<0 and body>0 and longcandle[4] and longcandle and close[2]<close[3] and close[1]<close[2] and high[2]<high[3] and high[1]<high[2] and low[1]>low[4] and open>close[1] and close>high[4] and close>high[3] and close>high[2] and close>high[1])
    if RisingThreeMethods then
    Bull = 1 //None
    endif
     
    BullishThreeLineStrike=(body[3]>0 and body[2]>0 and body[1]>0 and body<0 and longcandle[3] and longcandle[2] and longcandle[1] and close[2]>close[3] and close[1]>close[2] and open>close[1] and close<open[3])
    if BullishThreeLineStrike then
    Bull = 1 //None
    endif
     
    BullishMatHold=(body[4]>0 and body[3]<0 and body[1]<0 and body>0 and longcandle[4] and close[3]>close[4] and close[2]<close[3] and close[1]<close[2] and high[2]<high[3] and high[1]<high[2] and low[1]>low[4] and open>close[1] and close>high[4] and  close>high[3] and close>high[2] and close>high[1])
    if BullishMatHold then
    Bull = 1 //None
    endif
     
    BullSash=(body[1]<0 AND longcandle[1] AND body>0 AND longcandle AND open>close[1] AND open<open[1] AND close>open[1] AND shadowtop<0.1*abody)
    if BullSash then
    Bull = 1 //Positive
    endif
     
    BullSeparatingLine=(body[1]<0 AND longcandle[1] AND body>0 AND longcandle AND open>=open[1] AND shadowtop<0.1*abody)
    if BullSeparatingLine then
    Bull = 1 //None
    endif
     
    BullishCounterAttack=(body[1]<0 AND longcandle[1] AND body>0 AND longcandle AND close<=close[1])
    if BullishCounterAttack then
    Bull = 1 //None
    endif
     
    BullishKicking=(body[1]<0 AND longcandle[1] AND body>0 AND longcandle AND open>=open[1] AND shadowtop=0 AND shadowbottom=0)
    if BullishKicking then
    Bull = 1 //None
    endif
     
    //Bearish Signal
     
    EveningStar=(body[2]>0 AND body<0 and longcandle[2] and open[1]>close[2] and open<close[1] and ratio[1]<0.3 and abody[1]<abody[2] and abody[1]<abody and high[1]>high and high[1]>high[2] and low[1]>open[2] and low[1]>close)
    if EveningStar then
    Bear = 1
    endif
     
    DarkCloudCover=(body[1]>0 and body<0 and longcandle[1] and longcandle and open>high[1] and close<middle[1] and close>open[1])
    if DarkCloudCover then
    Bear = 1
    endif
     
    AbandonedBabyTop=(body[2]>0 and body<0 and longcandle[2] and ratio[1]<0.3 and low[1]>high[2] and low[1]>high)
    if AbandonedBabyTop then
    Bear = 1
    endif
     
    ThreeInsideDown=(body[2]>0 and body[1]<0 and body<0 and bearishharami[1] and close<close[1])
    if ThreeInsideDown then
    Bear = 1
    endif
     
    ThreeOutsideDown=(body[2]>0 and body[1]<0 and body<0 and bearishengulfing[1] and close<close[1])
    if ThreeOutsideDown then
    Bear = 1
    endif
     
    ThreeBlackCrows=(body[2]<0 and body[1]<0 and body<0 and longcandle[2] and longcandle[1] and longcandle and low[1]<low[2] and low<low[1] and close[1]<close[2] and close<close[1] and open[1]<open[2] and open[1]>close[2] and open<open[1] and open>close[1])
    if ThreeBlackCrows then
    Bear = 1
    endif
     
    UpsideGapTwoCrows=(body[2]>0 and body[1]<0 and body<0 and longcandle[2] and open[1]>close[2] and bodytop>bodytop[1] and bodybottom<bodybottom[1] and close>close[2])
    if UpsideGapTwoCrows then
    Bear = 1
    endif
     
    BearishHarami=(body[1]>0 and body<0 and longcandle[1] and bodybottom>bodybottom[1] and bodytop<bodytop[1])
    if BearishHarami then
    Bear = 1
    endif
     
    DescendingHawk=(body[1]>0 and body>0 and longcandle[1] and bodybottom>bodybottom[1] and bodytop<bodytop[1])
    if DescendingHawk then
    Bear = 1
    endif
     
    BearishEngulfing=(body[1]>0 and body<0 and bodybottom<bodybottom[1] and bodytop>bodytop[1] and longcandle)
    if BearishEngulfing then
    Bear = 1
    endif
     
    LastEngulfingTop=(body[1]<0 and body>0 and bodybottom<bodybottom[1] and bodytop>bodytop[1] and longcandle)
    if LastEngulfingTop then
    Bear = 1
    endif
     
    DragonflyDojiTop=(body[1]>0 and longcandle[1] and high>high[1] and shadowbottom>3*abody and shadowtop<shadowbottom/3)
    if DragonflyDojiTop then
    Bear = 1
    endif
     
    GravestoneDojiTop=(body[1]>0 and longcandle[1] and high>high[1] and shadowtop>3*abody and shadowbottom<shadowtop/3)
    if GravestoneDojiTop then
    Bear = 1
    endif
     
    DojiStarTop=(body[1]>0 AND longcandle[1] AND high>high[1] AND open>close[1] AND ratio<0.3 AND range<0.3*range[1])
    if DojiStarTop then
    Bear = 1
    endif
     
    BearishHaramiCross=(body[1]>0 and longcandle[1] and bodybottom>bodybottom[1] and bodytop<bodytop[1] and ratio<0.3 and range<0.3*range[1])
    if BearishHaramiCross then
    Bear = 1
    endif
     
    AdvanceBlock=(body[2]>0 and body[1]>0 and body>0 and high[2]<high[1] and high[1]<high and open[1]>bodybottom[2] and open[1]<bodytop[2] and open>bodybottom[1] and open<bodytop[1] and abody[1]<abody[2] and abody<abody[1])
    if AdvanceBlock then
    Bear = 1
    endif
     
    TwoCrows=(body[2]>0 and body[1]<0 and body<0 and longcandle[2] and open[1]>close[2] and close[1]>close[2] and open<bodytop[1] and open>bodybottom[1] and close<bodytop[2] and close>bodybottom[2])
    if TwoCrows then
    Bear = 1
    endif
     
    BearishBreakaway=(body[4]>0 and body[3]>0 and body<0 and open[3]>close[4] and close[2]>close[3] and close[1]>close[2] and longcandle and close>close[4] and close<open[3])
    if BearishBreakaway then
    Bear = 1
    endif
     
    ShootingStar=(body[1]>0 and longcandle[1] and high>high[1] and shadowtop>2*abody and shadowbottom<0.3*abody)
    if ShootingStar then
    Bear = 1
    endif
     
    HangingMan=(body[1]>0 and longcandle[1] and high>high[1] and shadowbottom>2*abody and shadowtop<0.3*abody)
    if HangingMan then
    Bear = 1
    endif
     
    FallingThreeMethods=(body[4]<0 and body[3]>0 and body[1]>0 and body<0 and longcandle[4] and longcandle and close[2]>close[3] and close[1]>close[2] and low[2]>low[3] and low[1]>low[2] and high[1]<high[4] and open<close[1] and close<low[4] and close<low[3] and close<low[2] and close<low[1])
    if FallingThreeMethods then
    Bear = 1
    endif
     
    BearishThreeLineStrike=(body[3]<0 and body[2]<0 and body[1]<0 and body>0 and longcandle[3] and longcandle[2] and longcandle[1] and close[2]<close[3] and close[1]<close[2] and open<close[1] and close>open[3])
    if BearishThreeLineStrike then
    Bear = 1
    endif
     
    BearishMatHold=(body[4]<0 and body[3]>0 and body[1]>0 and body<0 and longcandle[4] and close[3]<close[4] and close[2]>close[3] and close[1]>close[2] and low[2]>low[3] and low[1]>low[2] and high[1]<high[4] and open<close[1] and close<low[4] and close<low[3] and close<low[2] and close<low[1])
    if BearishMatHold then
    Bear = 1
    endif
     
    BearSash=(body[1]>0 AND longcandle[1] AND body<0 AND longcandle AND open>open[1] AND open<close[1] AND close<open[1] AND shadowbottom<0.1*abody)
    if BearSash then
    Bear = 1
    endif
     
    BearSeparatingLine=(body[1]>0 AND longcandle[1] AND body<0 AND longcandle AND open<=open[1] AND shadowbottom<0.1*abody)
    if BearSeparatingLine then
    Bear = 1
    endif
     
    BearishCounterAttack=(body[1]>0 AND longcandle[1] AND body<0 AND longcandle AND close>=close[1])
    if BearishCounterAttack then
    Bear = 1
    endif
     
    BearishKicking=(body[1]>0 AND longcandle[1] AND body<0 AND longcandle AND open<=open[1] AND shadowtop=0 AND shadowbottom=0)
    if BearishKicking then
    Bear = 1
    endif
     
    //Entry/Exit Criteria
     
    possize = 1
     
    NearMA = Average[7,2](close)
     
    If countofposition = 0 and Bull = 1 and NearMA[1] > NearMA[3] and RSI[2](close) > 75 and NearMA > Average[150,2](close) and timeEnterBefore and timeEnterAfter and not daysForbiddenEntry Then
    //If shortonmarket Then
    //Exitshort at market
    //EndIf
    Buy possize contract at market
    EndIf
     
    If countofposition = 0 and Bear = 1 and NearMA[1] < NearMA[3] and RSI[2](close) < 25 and NearMA < Average[150,2](close) Then
    //If longonmarket Then
    //Sell at market
    //EndIf
    //Sellshort possize contract at market
    EndIf
     
    Set Target pProfit 10
    Set Stop pLoss 50
    dax-m1-juanj-v1.png dax-m1-juanj-v1.png Dax-m1-juanj-v1.itf
    #40768 quote
    GraHal
    Participant
    Master

    (I went to the toilet after posting, so here it is again (Mods please delete above post) …

    Hey looks good TheAccountant! I felt (like you) that we need to optimise V1 over 200,000 bars so we have a baseline ( I can only do 100,000).

    You say … I optimize only with WF  … so do you use 1 IN Sample and 1 OUT OF Sample period or how many periods do you use?

    Also, if you WF Optimise over many IN / OUT periods … how do you choose which variable value to go forward / Live / Demo trading with?

    When I do it, I find myself thinking … is the most recent WF period Typical or Not Typical of the Instrument tested. If Not Typical then I am reluctant to go forward with optimised values from the most recent WF period to use in Live trading?

    Do you have similar quandries?

    Thanks
    GraHal

    #40769 quote
    Inertia
    Participant
    Master

    Hi Theaccountant,

    Attached are the result from my side with your strategy…What did I do wrong ? Strange…

    Backtest.png Backtest.png backtest-0.8pip.png backtest-0.8pip.png
    #40773 quote
    Inertia
    Participant
    Master
    The signal is quite powerful. 
    Hereafter is the best (for the time being) I have...
    Thx JuanJ.
    
    //Stategy: Scalping Candles
    //Market: EUR/USD
    //Timeframe: 1min
    //Spread: 0.8
    //Author: Juan Jacobs (Jd3gjacobs@gmail.com)
     
    Defparam cumulateorders = False
     
    If longonmarket and close < positionprice and (barindex-tradeindex) > 720 Then //Time Stop set to 12 hours
    Sell at market
    EndIf
     
    //Candle Paramaters
    body=close-open
    abody=abs(body)
     
    if range>0 then
    ratio=abody/range
    else
    ratio=0
    endif
     
    bodytop=max(open, close)
    bodybottom=min(open, close)
    shadowtop=high-bodytop
    longcandle= (ratio>0.6)
     
    Bull = 0
     
    //Bullish Signals
    BullishHarami=(body[1]<0 and body>0 and longcandle[1] and bodybottom>bodybottom[1] and bodytop<bodytop[1])
     
    MorningStar=(body[2]<0 and body>0 and longcandle[2] and open[1]<close[2] and open>close[1] and ratio[1]<0.3 and abody[1]<abody[2] and abody[1]<abody and low[1]<low and low[1]<low[2] and high[1]<open[2] and high[1]<close)
    if MorningStar then
    Bull = 1 //Positive
    endif
     
    ThreeInsideUp=(body[2]<0 and body[1]>0 and body>0 and BullishHarami[1] and close>close[1])
    if ThreeInsideUp then
    Bull = 1 //Positive
    endif
     
    ThreeOutsideUp=(body[2]<0 and body[1]>0 and body>0 and BullishEngulfing[1] and close>close[1])
    if ThreeOutsideUp then
    Bull = 1 //Positive
    endif
     
    BullishEngulfing=(body[1]<0 and body>0 and bodybottom<bodybottom[1] and bodytop>bodytop[1] and longcandle)
    if BullishEngulfing then
    Bull = 1 //Positive
    endif
     
    BullSash=(body[1]<0 AND longcandle[1] AND body>0 AND longcandle AND open>close[1] AND open<open[1] AND close>open[1] AND shadowtop<0.1*abody)
    if BullSash then
    Bull = 1 //Positive
    endif
     
    If (high - low) = 0 Then //Prevents potential division by zero
    HiLo = 1
    Else
    HiLo = (high - low)
    EndIf
     
    HammerUp = min(open[1],close[1])>high[1]-(high[1]-low[1])/3
    HammerUpNeg= max(open,close)<min(open[1],close[1]) and abs(open-close)/HiLo>0.5 //Bullish Hammer Negated = Bearish (used for exit signal)
    HammerDown = max(open[1],close[1])<low[1]+(high[1]-low[1])/3
    HammerDownNeg = min(open,close)>max(open[1],close[1]) and abs(open-close)/HiLo>0.5 //Bearish Hammer Negated = Bullish (used for exit signal)
     
    If HammerUp and HammerUpNeg Then
    //Bull = 0
    ElsIf HammerDown and HammerDownNeg Then
    Bull = 1
    EndIf
     
    dojibull2 = open[2]<close[2] and abs(open[2]-close[2])/(high[2]-low[2])<0.6
    dojibull1 = open[1]<close[1] and abs(open[1]-close[1])/(high[1]-low[1])<0.6
    dojibear2 = open[2]>close[2] and abs(open[2]-close[2])/(high[2]-low[2])<0.6
    dojibear1 = open[1]>close[1] and abs(open[1]-close[1])/(high[1]-low[1])<0.6
    hammerup2 = min(open,close)>high-(high-low)/2 //and max(open,close) < min(open[1],close[1])
    hammerdown2 = max(open,close)<low+(high-low)/2 //and max(open,close)<min(open[1],close[1])//and timeok
     
    If (dojibull2 and dojibull1) and hammerdown2 Then
    Bull = 1
    ElsIf  (dojibear2 and dojibear1) and hammerup2 Then
    //Bull = 0
    EndIf
     
    //Entry/Exit Criteria
     
    possize = 1
     
    ATR = AverageTrueRange[4](close)
    LongMA = Average[periodelongma,2](close)
    NearMA = Average[periodenearma,2](close)
    RSIChk = RSI[periodersi](close) >= 80
    StoChk = Stochastic[14,3](close) >= 75
    Trendma = average[periode,2]
     
    If countofposition = 0 and Bull = 1 and close > LongMA and NearMA > LongMA and LongMA[1] > LongMA[20] and NearMA[1] > NearMA[3] and ATR[1] > ATR[2] and RSIChk and StoChk and Trendma > trendma [1]Then
    Buy possize contract at market
    EndIf
     
    Set Target $profit 5
    Set Stop $Loss 40
    
    JuanJ_EURUSD.png JuanJ_EURUSD.png
Viewing 15 posts - 16 through 30 (of 220 total)
  • You must be logged in to reply to this topic.

1 Min Trading Strategy


ProOrder: Automated Strategies & Backtesting

New Reply
Author
author-avatar
juanj @juanj Participant
Summary

This topic contains 219 replies,
has 29 voices, and was last updated by Leo
8 years, 2 months ago.

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