Overall Statistics
Total Trades
3090
Average Win
0.14%
Average Loss
-0.19%
Compounding Annual Return
0.276%
Drawdown
7.700%
Expectancy
0.009
Net Profit
2.218%
Sharpe Ratio
0.095
Loss Rate
42%
Win Rate
58%
Profit-Loss Ratio
0.74
Alpha
0.003
Beta
-0.004
Annual Standard Deviation
0.023
Annual Variance
0.001
Information Ratio
-0.602
Tracking Error
0.147
Treynor Ratio
-0.525
Total Fees
$744.08
using MathNet.Numerics;
namespace QuantConnect 
{   
    
    public class BasicTemplateAlgorithm : QCAlgorithm
    {
    	public string pair1 = "GBPUSD";
    	RollingWindow<TradeBar> window;
    	const int WL = 10;
    	double entryPrice = 0;
    	int holdHours = 0;
    	bool Long = false;
    	bool hasTraded = false;
    	BollingerBands bb;
    	
        public override void Initialize() 
        {
        	SetStartDate(2009,01,01);
            SetEndDate(2016, 12, 12);         
            
            SetBrokerageModel(BrokerageName.FxcmBrokerage);
            //SetBrokerageModel(BrokerageName.OandaBrokerage);
            
            SetCash(10000);
            
            window = new RollingWindow<TradeBar>(WL);
            
            //AddForex(pair1, Resolution.Minute, Market.Oanda);
            AddForex(pair1, Resolution.Hour, Market.FXCM);
            bb = BB(pair1, WL, 2.2M, MovingAverageType.Simple, Resolution.Hour);
        }
        
	    public void OnData(TradeBars data) {
			window.Add(data[pair1]);
			if(!window.IsReady) return;
			
			if(data[pair1].Time.Hour == 1){
				hasTraded = false;
			}

			var close = (double)data[pair1].Close;
			// Entry
			if(data[pair1].Time.Hour > 4 && data[pair1].Time.Hour <= 10 
				&& !Portfolio.Invested && !hasTraded){
				if(close > bb.UpperBand){
					SetHoldings(pair1, 1);
					holdHours = 0;
					Long = true;
					hasTraded = true;
					entryPrice = close;
				}
				if(close < bb.LowerBand){
					SetHoldings(pair1, -1);
					holdHours = 0;
					Long = false;
					hasTraded = true;
					entryPrice = close;
				}
			}
			
			// Exit
			if(Portfolio.Invested){
				// Take profit
				if(Long && close > entryPrice +0.00080)
					Liquidate();
				if(!Long && close < entryPrice -0.00080) 
					Liquidate();
				// Stop loss
				if(Long && close < entryPrice - 0.00180)
					Liquidate();
				if(!Long && close > entryPrice + 0.00180)
					Liquidate();
				// Timed exit
				holdHours++;
				if(holdHours > 5)
					Liquidate();
			}

        }
        
	  
    }
}