Here's my strategy: RSI and ema crossover, need help!!!

Discussion in 'Strategy Building' started by BillySimas, Jul 7, 2006.

  1. Hey everyone! I'm trading forex on TS, I scalped futures for 2 years but gave that up and now I'm using 1hr charts to position trade. I'd love to make some contacts on here, maybe talk to other forex traders who are using some of the same strategies.

    I'm backtesting the hell out of everything I can find, but it's tough coming up with new ideas. I need to pick and choose from other strategies but don't know where to find them, so I'm basically just coming up with my own ideas from all the TA stuff I've read. I backtested EUR/USD today on this strategy and was hoping I could get some input from someone who knows something about the validity (or crappiness) of this system:

    144 and 169 period emas on 1hr chart combined with 14 period RSI, overbought/oversold indicators set at 65 and 35. On an ema crossover to the upside, if there was an oversold signal in the previous 5 days, then buy 2 lots above 144 ema (must be the top ema) and set stop 20 pips below and profit target of 50 for 1st lot exit and the next lot either 100 pips profit or stop at crossover. Do the opposite for shorts.

    I'm finding that this works absolutely phenomenal on some trades where I'll hit 100+ pip targets with zero risk, essentially getting in at the low. But with a tight stop, there are some whipsaws as well. I could go on and on and on and on about the different nuances of this, but I won't bother right now, I figure if anyone has experience with this style, then hopefully you'd be able to give me some feedback.

    Any thoughts/suggestions would really be appreciated. Thanks!!!
     
    murray t turtle likes this.
  2. how far back have you backtested?
     
  3. What is the point of using 2 emas that are virtually identical? Is your system's performance sensitive to the ema periods that you use? If so, that suggests it may not be robust.

    Also have you tried using different time frames, e.g., daily and weekly for direction, shorter term for entry and exit. My personal experience is that depending on the volatility of the market I vary the time periods that I use.
     
    murray t turtle likes this.

  4. I just go back a year looking at 2 min data, I'd like to use EasyLanguage but I have absolutely no idea how to program it. I even know a little HTML, but I just can't figure it out.
     
  5. a year is not really that far back in time. If you trade it, one method is to stop trading once in real time it hits an all time low in the equity curve (max draw down).
     
  6. What you are using is the tunnel method. It is always good to use an oscillator to help filter trades. Lot of time the forex you are trading will go up and test the 144 and the 169 and then pull back. Use fib levels to find support and resistence levels.
     
  7. tradeProg

    tradeProg

    BillySimas, here's the long side Easylanguage code:

    Code:
    
    [intrabarordergeneration = true]
    	
    input: 
    	ema_fast_len (144),
    	ema_slow_len (169),
    	rsi_len (14),
    	rsi_overbought (65),
    	rsi_oversold (35)
    	;
    
    var:
    	intrabarpersist ema_fast (0),
    	intrabarpersist ema_slow (0),
    	intrabarpersist ema_xup_bar (0),
    	intrabarpersist rsi_val (0),
    	intrabarpersist last_rsi_oversold_dt (0),
    	intrabarpersist mp (0), 
    	intrabarpersist ep (0),
    	intrabarpersist exitbar (0)
    	;
    
    mp = marketposition(0);
    ep = entryprice(0);
    
    ema_fast = xaverage( close, ema_fast_len);
    ema_slow = xaverage( close, ema_slow_len);
    rsi_val = rsi( close, rsi_len);
    
    if ema_fast crosses above ema_slow then
    	ema_xup_bar = barnumber;
    
    if rsi_val <= rsi_oversold then
    	last_rsi_oversold_dt = date;
    
    if mp = 0 then
    begin
    	if mp[1] <> 0 then
    		exitbar = barnumber;
    
    	if ema_xup_bar > exitbar 
    		and ema_fast > ema_slow 
    		and (datetojulian( date) - datetojulian( last_rsi_oversold_dt) <= 5) then
    	begin
    		buy 2 contracts next bar at ema_fast + minmove point stop;
    	end;
    end;
    
    if mp = 1 then
    begin
    	sell 2 contracts next bar at ep - (20 * minmove point) stop;
    	if currentcontracts = 2 then 
    	begin
    		sell 1 contract next bar at ep + (50 * minmove point) limit;
    		sell 1 contract next bar at ep + (100 * minmove point) limit;
    	end;
    	if currentcontracts = 1 then
    	begin
    		sell 1 contract next bar at ep + (100 * minmove point) limit;
    		if ema_fast < ema_slow then
    			sell 1 contract next bar at market;
    	end;
    end;
    
    
     

  8. This is so helpful, it's ridiculous. Thank you so much!!!!!!!!!!
    I mean, if I have no idea how EasyLanguage works, it would take me hours and hours to figure this out. I really appreciate it.
     
  9. tradeProg - classy operator.
     
  10. short question regarding this - why are you using 144 and 169 MA? Is there a special reason for this parameters?
     
    #10     May 17, 2018