Overall Statistics |
Total Trades 1 Average Win 0% Average Loss 0% Compounding Annual Return -4.840% Drawdown 13.300% Expectancy 0 Net Profit -9.442% Sharpe Ratio -0.558 Probabilistic Sharpe Ratio 0.405% Loss Rate 0% Win Rate 0% Profit-Loss Ratio 0 Alpha -0.036 Beta 0.025 Annual Standard Deviation 0.058 Annual Variance 0.003 Information Ratio -1.589 Tracking Error 0.108 Treynor Ratio -1.307 Total Fees $0.00 Estimated Strategy Capacity $1600000.00 Lowest Capacity Asset EURUSD 8G |
#region imports using System; using System.Collections; using System.Collections.Generic; using System.Linq; using System.Globalization; using System.Drawing; using QuantConnect; using QuantConnect.Algorithm.Framework; using QuantConnect.Algorithm.Framework.Selection; using QuantConnect.Algorithm.Framework.Alphas; using QuantConnect.Algorithm.Framework.Portfolio; using QuantConnect.Algorithm.Framework.Execution; using QuantConnect.Algorithm.Framework.Risk; using QuantConnect.Parameters; using QuantConnect.Benchmarks; using QuantConnect.Brokerages; using QuantConnect.Util; using QuantConnect.Interfaces; using QuantConnect.Algorithm; using QuantConnect.Indicators; using QuantConnect.Data; using QuantConnect.Data.Consolidators; using QuantConnect.Data.Custom; using QuantConnect.DataSource; using QuantConnect.Data.Fundamental; using QuantConnect.Data.Market; using QuantConnect.Data.UniverseSelection; using QuantConnect.Notifications; using QuantConnect.Orders; using QuantConnect.Orders.Fees; using QuantConnect.Orders.Fills; using QuantConnect.Orders.Slippage; using QuantConnect.Scheduling; using QuantConnect.Securities; using QuantConnect.Securities.Equity; using QuantConnect.Securities.Future; using QuantConnect.Securities.Option; using QuantConnect.Securities.Forex; using QuantConnect.Securities.Crypto; using QuantConnect.Securities.Interfaces; using QuantConnect.Storage; using QuantConnect.Data.Custom.AlphaStreams; using QCAlgorithmFramework = QuantConnect.Algorithm.QCAlgorithm; using QCAlgorithmFrameworkBridge = QuantConnect.Algorithm.QCAlgorithm; #endregion namespace QuantConnect { /* * QuantConnect University: Bollinger Bands Example: */ public class BollingerBandsAlgorithm : QCAlgorithm { string _symbol = "EURUSD"; BollingerBands _bb; RelativeStrengthIndex _rsi; AverageTrueRange _atr; ExponentialMovingAverage _ema; SimpleMovingAverage _sma; MovingAverageConvergenceDivergence _macd; decimal _price; //Initialize the data and resolution you require for your strategy: public override void Initialize() { //Initialize SetStartDate(2013, 1, 1); SetEndDate(2014, 12, 31); SetCash(25000); //Add as many securities as you like. All the data will be passed into the event handler: AddSecurity(SecurityType.Forex, _symbol, Resolution.Hour); //Set up Indicators: _bb = BB(_symbol, 20, 1, MovingAverageType.Simple, Resolution.Daily); _rsi = RSI(_symbol, 14, MovingAverageType.Simple, Resolution.Daily); _atr = ATR(_symbol, 14, MovingAverageType.Simple, Resolution.Daily); _ema = EMA(_symbol, 14, Resolution.Daily); _sma = SMA(_symbol, 14, Resolution.Daily); _macd = MACD(_symbol, 12, 26, 9, MovingAverageType.Simple, Resolution.Daily); } public void OnData(QuoteBars data) { if (!_bb.IsReady || !_rsi.IsReady) return; _price = data["EURUSD"].Close; if (!Portfolio.Invested) { int quantity = (int)Math.Floor(Portfolio.Cash / data[_symbol].Close); //Order function places trades: enter the string symbol and the quantity you want: Order(_symbol, quantity); //Debug sends messages to the user console: "Time" is the algorithm time keeper object Debug("Purchased EURUSD on " + Time.ToShortDateString()); } } // Fire plotting events once per day: public override void OnEndOfDay() { if (!_bb.IsReady) return; Plot("BB", "Price", _price); Plot("BB", _bb.UpperBand, _bb.MiddleBand, _bb.LowerBand); Plot("RSI", _rsi); Plot("ATR", _atr); Plot("MACD", "Price", _price); Plot("MACD", _macd.Fast, _macd.Slow); Plot("Averages", _ema, _sma); } } }