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); } } } } }