Breakout - 15 Minutes a day - 10-20 pips - Every day - 95% profitable trades

My concern is that the EA doesn't take into account that even in a 5 minute bull candle it could retrace well through the stop before achieving the target pips.

The only way to test such a system is by forward testing.

Yes,that can happen and will affect the backtesting results adversely but 10 pips in 5 mins that's a fair bit of volatility.
You could simply set the backtesting platform to count all 5 minute candles that reach both the take profit/or breakout and stop loss as losses and you completely get rid of the issue and at the same time you are being conservative about the profit potential of the strategy.
 
I've modified this system slightly for testing and thought I'd share and post the results. If yesterday closed higher than the day before I'm only taking long trades. Vice versa for shorts. I'm testing using the GBP/USD.

The fields in the testing results are TheDate, Open, High, Low, Close, the Direction we're taking trades in, the Entry Target, the Stop Loss At, the Entry Time, the the target was hit, the time the stop loss was hit, a win flag and a loss flag.

When it breaks out by 3 pips I enter targeting 9 pips profit and have a stop loss of 24 pips.

In my test data there were 110 wins to 39 losses, but that's assuming that where the same five minute candles both hits the stop loss and the target we win.

I agree, forward testing is needed, but we need more data as the test data shows wins can continue for very long streaks. Please keep us posted Garbanzo.

Also,I just noticed,even though I don't pay much attention to the risk reward as long as there is a very high success ratio,you are risking more than double your take profit along with a lower success ratio so I don't think this is a viable option - it might be profitable,but only a limited profit potential.
 
To all of those of you who are editing the strategy I have a word of advice to you.
Try and keep the success ratio (the % of trades that go your way) as high as possible along with your stops as tight as possible.

Why?

Because this way you can be almost certain you won't blow up your account.
If you have a strategy with a 50/50 success ratio but a double reward to risk it might seem as something pretty neat but the problem when dealing with allot of leverage is that sometimes,you will end up in a long losing streak,when the odds as 50/50 that losing streak can be pretty long,maybe longer than you can stay solvent,that's why I emphasize so much the high success ratio and fairly tight stop loss of this strategy,it is more unlikely to enter into a protracted losing streak that can completely ruin your account.
Ruin doesn't have to be a 100% loss,a 70% loss is enough to set you back for months,so be careful when designing systems.
 
I believe you are better off with manual filtering rather than a knee jerk reaction to the previous day's close.

So do I, I just wanted to take one trade a day to make the testing simple. It's difficult to test unless it's purely mechanical.

I was just trying to get about getting some useful stats, that was all.
 
Could you perhaps post your excel/access file for the rest of us?
We could use it as a template.

I'd really appreciate that.


I'll post the access SQL and you can run it yourself. You need two tables, one called tblDaily with the following fields ID, TheDate, Open, High, Low, Close. The ID must be the key field, a number each bigger than the last with the lowest date first. The table needs sorted by date but the ID is the key field. The 2nd table I called tbl15Mins but any time frame can go in there (I tried it with 15 minute data first). The fields in tbl15Mins are ID, TheDate, TheTime, Open, High, Low, Close.

Multiply the Open, High, Low, & Close by 10000 for integers.

Run this query, it will create a table called tblDirections -

SELECT [tblDaily].[ID], [tblDaily].[TheDate], [tblDaily].[Open], [tblDaily].[High], [tblDaily].[Low], [tblDaily].[Close], IIf((SELECT Alias.Close FROM tblDaily AS Alias WHERE (Alias.ID+1=tblDaily.ID))>(SELECT Alias.Close FROM tblDaily AS Alias WHERE (Alias.ID+2=tblDaily.ID)),"Long","Short") AS Direction INTO tblDirections
FROM tblDaily
ORDER BY [tblDaily].[ID];

Then run this to create tblValues -

SELECT [tblDirections].[ID], [tblDirections].[TheDate], [tblDirections].[Open], [tblDirections].[High], [tblDirections].[Low], [tblDirections].[Close], [tblDirections].[Direction], IIf(Direction="Long",(SELECT Alias.High FROM tblDirections AS Alias WHERE (Alias.ID+1=tblDirections.ID))+3,(SELECT Alias.Low FROM tblDirections AS Alias WHERE (Alias.ID+1=tblDirections.ID))-3) AS Entry, IIf(Direction="Long",(SELECT Alias.High FROM tblDirections AS Alias WHERE (Alias.ID+1=tblDirections.ID))+12,(SELECT Alias.Low FROM tblDirections AS Alias WHERE (Alias.ID+1=tblDirections.ID))-12) AS Target, IIf(Direction="Long",(SELECT Alias.High FROM tblDirections AS Alias WHERE (Alias.ID+1=tblDirections.ID))-21,(SELECT Alias.Low FROM tblDirections AS Alias WHERE (Alias.ID+1=tblDirections.ID))+21) AS StopLossAt INTO tblValues
FROM tblDirections
ORDER BY [tblDirections].[ID];

Then run this -

SELECT [tblValues].[ID], [tblValues].[TheDate], [tblValues].[Open], [tblValues].[High], [tblValues].[Low], [tblValues].[Close], [tblValues].[Direction], [tblValues].[Entry], [tblValues].[Target], [tblValues].[StopLossAt], IIf(tblValues.Direction="Long",(SELECT MIN(Alias.TheTime) FROM tbl15Mins AS Alias WHERE (Alias.TheDate=tblValues.TheDate AND Alias.High>=tblValues.Entry)),(SELECT MIN(Alias.TheTime) FROM tbl15Mins AS Alias WHERE (Alias.TheDate=tblValues.TheDate AND Alias.Low<=tblValues.Entry))) AS EntryTime, IIf(tblValues.Direction="Long",(SELECT MIN(Alias.TheTime) FROM tbl15Mins AS Alias WHERE (Alias.TheDate=tblValues.TheDate AND Alias.High>=tblValues.Target)),(SELECT MIN(Alias.TheTime) FROM tbl15Mins AS Alias WHERE (Alias.TheDate=tblValues.TheDate AND Alias.Low<=tblValues.Target))) AS TargetTime INTO tblEntriesAndTargets
FROM tblValues
ORDER BY [tblValues].[ID];

Then finally this to create the results table tblResults -

SELECT [tblEntriesAndTargets].[ID], [tblEntriesAndTargets].[TheDate], [tblEntriesAndTargets].[Open], [tblEntriesAndTargets].[High], [tblEntriesAndTargets].[Low], [tblEntriesAndTargets].[Close], [tblEntriesAndTargets].[Direction], [tblEntriesAndTargets].[Entry], [tblEntriesAndTargets].[Target], [tblEntriesAndTargets].[StopLossAt], [tblEntriesAndTargets].[EntryTime], [tblEntriesAndTargets].[TargetTime], IIf(tblEntriesAndTargets.Direction="Long",(SELECT MIN(Alias.TheTime) FROM tbl15Mins AS Alias WHERE (Alias.TheDate=tblEntriesAndTargets.TheDate AND Alias.Low<=tblEntriesAndTargets.StopLossAt AND Alias.TheTime>=tblEntriesAndTargets.EntryTime)),(SELECT MIN(Alias.TheTime) FROM tbl15Mins AS Alias WHERE (Alias.TheDate=tblEntriesAndTargets.TheDate AND Alias.High>=tblEntriesAndTargets.StopLossAt AND Alias.TheTime>=tblEntriesAndTargets.EntryTime))) AS StopLossTime INTO tblResults
FROM tblEntriesAndTargets
ORDER BY [tblEntriesAndTargets].[ID];
 
How did you get a 15 point SL for some pairs? In the first post you said 10???
Sorry im a bit new to this, pls help me out...
Thanks(y)
EUR/USD 5 TP - 10 SL

13/7/2009: 5 pip profit
14/7/2009: -10 pip loss
15/7/2009: 5 pip profit
16/7/2009: 5 pip profit
17/7/2009: no profit - within previous day range
19/7/2009: 5 pip profit
21/7/2009: 5 pip profit
22/7/2009: 5 pip profit
23/7/2009: 5 pip profit


Total P/L: 25 pips

AUD/USD 5 TP - 15 SL

13/7/2009: 5 pips profit
14/7/2009: 5 pips profit
15/7/2009: 5 pip profit
16/7/2009: 5 pip profit
17/7/2009: within range no profit
19/7/2009: 5 pip profit
20/7/2009: 5 pip profit
21/7/2009: 5 pip profit
22/7/2009 -15 pip loss
23/7/2009: 5 pip gain

Total P/L : 25 pips



USD/JPY 5 TP - 15 SL

13/7/2009: 15 pips loss
14/7/2009: 5 pip profit
15/7/2009: 5 pip profit
16/7/2009: within range no profit
17/7/2009: 5 pip profit
19/7/2009: 5 pip profit
20/7/2009: 5 pip profit
21/7/2009: 5 pip profit
22/7/2009: 5 pip profit
23/7/2009: 5 pip profit


Total P/L: 25 pips

GBP/USD 5 TP - 15 SL

13/7/2009: 5 pip profit
14/7/2009: 5 pip profit
15/7/2009: 5 pip profit
16/7/2009: 5 pip profit
17/7/2009: 5 pip profit
19/7/2009: range
20/7/2009: 5 pip profit
21/7/2009: range
22/7/2009: 5 pip profit
23/7/2009: 5 pip profit

Total P/L: 40 pips


Total P/L for all currency pairs: 115 pips

Some of the losses occured at major support/resistance points and although I would have filtered them when trading my own account,I have included them in the previous P/L calculations.

The data provider is FXCM and the bactesting was manual on their chart
.
 
Also,I just noticed,even though I don't pay much attention to the risk reward as long as there is a very high success ratio,you are risking more than double your take profit along with a lower success ratio so I don't think this is a viable option - it might be profitable,but only a limited profit potential.

I've tried this system; it doesn't work.

The set-up wins only 50% of the time- at best.

If you can make any money doing this, God bless you.
 
Also,I just noticed,even though I don't pay much attention to the risk reward as long as there is a very high success ratio,you are risking more than double your take profit along with a lower success ratio so I don't think this is a viable option - it might be profitable,but only a limited profit potential.


No dice for tis system.
There appears to be a 50% chance that the sellers will prevail selling a new high and a 50% chance that the buyers will prevail buying a new high.
Save your money!
 
Hi, I am trying to write it into TradeStation. I have few questions:
1) do you trade only 1 trade every day? If I try on 5 minute chart, so the number of trades is very high
2) 5 pips on EURUSD is 0.0005 USD? Is this right?
3) Do you stay overnight in position?

My best result is now without SL.. only with PT. But this is not good..
 
I have a spread bet simulator built that I test my strategies on and use to train genetic algorithms. I also have 9 months worth of 1 minute GBP/USD data so I can easily back test this and try and search for optimum values for the SL, limit and 3 pip threshold. I'm a bit unclear on the rules though, is it :-

1. Create a buy stop order with stop = previous day's high + 3 + spread, sl = 10, limit = 5,
2. Create a sell stop order with stop = previous day's low - 3 - spread, sl = 10, limit = 5,

What about timing ? when do you create these orders as most currencies are traded 24 hours although tend to be slack overnight.

You could use a trailing stop to maximise profits on big gains and remove the limt.

Thanks

- Andrew
 
Well I simulated this strategy, as far as I understand it, which took a little while because my simulator didn't support stop orders i.e. buys at a disadvantageous price (i.e. greater) so I had to add them.

Testing with minute by minute data from January 2009 to last week (8th August), the strategy barely breaks even with a total profit of just 37 points over that entire time. That's with a SL of 10 points. Increasing the SL to 15, the minimum on IG for GBPUSD, gives a profit of 46 points. Are you sure that you correctly accounted for the spread difference in the bid/ask price when you did your back testing ? I've excluded slippage by assuming all orders are guaranteed stop with the extra spread cost that that entails.

For comparison, I have candidate strategies that generate over 5000 points profit in that same period.

Hope that's useful

- Andrew
 
How does it give you a profit of 37 pips if the limit for all trades is 5 pips??? :sneaky:
Maybe im displaying my gross ignorance here... lol !!! :p
 
37 pips is the total for the entire year assuming one trade a day (well two orders per day) ! So it barely breaks even. 37 a day (or even a week) would be worth having.
 
This trading strategy strikes me as having a low expectancy.. e.g. if you are risking R per trade, your expected outcome is probably under 0.1R. If you could simply program it into a system and let it do all the work for you, it's probably ok but it sounds like far too much effort. Anyway, I've never tried it, how has it been going?
 
I noticed that Garbanzo hasn't posted anything since the 27th July so either he's on holiday or he's lost too much money and given up on trading. That must happen to countless thousands on this website - they join up full of enthusiasm, a bit of money and ready to go. Then after a couple of weeks or months they realise that there strategies and ideas aren't working so the they get out and cut their losses.

I'm the same, I tried the FTSE and lost, I've tried GBPUSD and lost again so I'm being very careful to make sure that my next strategy has a reasonable chance before starting again. From my testing so far - this strategy doesn't have a reasonable chance because the reward is too small and almost entirely eaten up by the spread cost.
 
Metatrader code. Just make a new expert and past it in. Gets up to around 55% over three years (5M, every tick setting) if you play with the SL/TP (they are adjustable in the external settings.

Have a play and see what you get.


extern int TP = 6;
extern int SL = 10;
extern double Lots = 1;
extern int MAGIC = 5555;

double Long = 0;
double Short = 0;
int Last_trade_day =9;
int i,o;
double Pips;

//+------------------------------------------------------------------+
//| expert initialization function |
//+------------------------------------------------------------------+
int init()
{
//----
Pips=1*Point;

if(Digits==3||Digits==5)Pips=10*Point;
//----
return(0);
}
//+------------------------------------------------------------------+
//| expert deinitialization function |
//+------------------------------------------------------------------+
int deinit()
{
//----

//----
return(0);
}
//+------------------------------------------------------------------+
//| expert start function |
//+------------------------------------------------------------------+
int start()
{
//----

//Get yesterday's day. PERIOD_D1

i=1;

while(TimeDayOfWeek(iTime(0,PERIOD_D1,i)) == 0 || TimeDayOfWeek(iTime(0,PERIOD_D1,i))==6) i--;

Long = iHigh(0,PERIOD_D1,i) + 3*Pips;
Short = iLow(0,PERIOD_D1,i) - 3*Pips;

if(Last_trade_day != TimeDayOfWeek(iTime(0,0,0)))
{
if(Ask>=Long)
{
OrderSend(Symbol(),OP_BUY,Lots,Ask,3,0,0,NULL,MAGIC,Green);
Last_trade_day=TimeDayOfWeek(iTime(0,0,0));
}
if(Bid<=Short)
{
OrderSend(Symbol(),OP_SELL,Lots,Bid,3,0,0,NULL,MAGIC,Green);
Last_trade_day=TimeDayOfWeek(iTime(0,0,0));
}
}
for(o=0;o<OrdersTotal();o++)
{
if(OrderSelect(o,SELECT_BY_POS)==true && OrderStopLoss()==0 && OrderType()==OP_BUY)
{
OrderModify(OrderTicket(),OrderOpenPrice(),NormalizeDouble(OrderOpenPrice()-(SL*Pips),Digits),NormalizeDouble(OrderOpenPrice()+(TP*Pips),Digits),0,Green);
}
if(OrderSelect(o,SELECT_BY_POS)==true && OrderStopLoss()==0 && OrderType()==OP_SELL)
{

OrderModify(OrderTicket(),OrderOpenPrice(),NormalizeDouble(OrderOpenPrice()+(SL*Pips),Digits),NormalizeDouble(OrderOpenPrice()-(TP*Pips),Digits),0,Green);
}
}
//----
return(0);
}
//+------------------------------------------------------------------+
 
Has anyone tried using much larger gains and stoplosses. Like 50 pips for each. Although not ideal, as a starting point this could prove quite useful to see if you can actually make money from bigger swings. These are obviously dependant on which pairs you're trading. I had a look at cable, and AUDJPY and both seem to have potential. This is taking into account intraday whipsaws too.
 
Top