| Overall Statistics |
|
Total Trades 11218 Average Win 0.07% Average Loss -0.07% Compounding Annual Return -36.110% Drawdown 54.300% Expectancy -0.192 Net Profit -54.153% Sharpe Ratio -7.01 Loss Rate 60% Win Rate 40% Profit-Loss Ratio 1.00 Alpha -0.311 Beta 0.022 Annual Standard Deviation 0.044 Annual Variance 0.002 Information Ratio -3.934 Tracking Error 0.1 Treynor Ratio -14.229 Total Fees $0.00 |
namespace QuantConnect
{
public class BasicTemplateAlgorithm : QCAlgorithm
{
private List<string> tickers = new List<string>();
private Dictionary<string, BollingerBands> signalDict = new Dictionary<string, BollingerBands>();
private BollingerBands bands;
public Resolution resolution = Resolution.Hour;
public override void Initialize()
{
tickers.Add("EURUSD");
// tickers.Add("GBPUSD");
// tickers.Add("USDJPY");
// tickers.Add("AUDUSD");
// tickers.Add("EURJPY");
// tickers.Add("USDCAD");
// tickers.Add("EURGBP");
// tickers.Add("USDCHF");
// tickers.Add("USDMXN");
// tickers.Add("NZDUSD");
// tickers.Add("EURCHF");
// tickers.Add("USDRUB");
// tickers.Add("USDZAR");
// tickers.Add("USDSGD");
// tickers.Add("USDTRY");
// tickers.Add("EURSEK");
// tickers.Add("GBPJPY");
// tickers.Add("EURAUD");
// tickers.Add("EURNOK");
// tickers.Add("USDINR");
// tickers.Add("USDPLN");
// tickers.Add("USDCNY");
SetStartDate(2016, 1, 1);
SetCash(25000);
SetBrokerageModel(BrokerageName.OandaBrokerage, AccountType.Cash);
foreach (String ticker in tickers){
AddForex(ticker, resolution, Market.Oanda);
signalDict[ticker] = BB(ticker, 20, 1, MovingAverageType.Simple);
}
}
public void OnData(QuoteBars data)
{
foreach(String fxPair in tickers){
if(data.ContainsKey(fxPair) == false){
Log("not there");
break;
}
// Log("========");
// Log("Pre: " +Portfolio[fxPair].Quantity);
SetHoldings(fxPair, 0);
// Log("Post: " +Portfolio[fxPair].Quantity);
// Log("========");
bands = signalDict[fxPair];
if (!bands.IsReady) break;
decimal close = data[fxPair].Close;
decimal open = data[fxPair].Open;
if(close > bands.UpperBand && (Portfolio[fxPair].Quantity == 0)){
SetHoldings(fxPair, 0.95m);
}
if(close < bands.LowerBand && (Portfolio[fxPair].Quantity == 0)){
SetHoldings(fxPair, -0.95m);
}
}
}
}
}