Overall Statistics
Total Trades
1378
Average Win
0.14%
Average Loss
-0.16%
Compounding Annual Return
1.567%
Drawdown
4.000%
Expectancy
0.114
Net Profit
13.161%
Sharpe Ratio
0.773
Loss Rate
41%
Win Rate
59%
Profit-Loss Ratio
0.90
Alpha
0.011
Beta
-0.002
Annual Standard Deviation
0.014
Annual Variance
0
Information Ratio
-0.548
Tracking Error
0.146
Treynor Ratio
-4.55
Total Fees
$348.64
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();
			}

        }
        
	  
    }
}