Overall Statistics |
Total Trades 4 Average Win 0.49% Average Loss -7.92% Compounding Annual Return -99.109% Drawdown 8.000% Expectancy -0.469 Net Profit -7.467% Sharpe Ratio -5.935 Loss Rate 50% Win Rate 50% Profit-Loss Ratio 0.06 Alpha -3.552 Beta 7.628 Annual Standard Deviation 0.525 Annual Variance 0.276 Information Ratio -6.31 Tracking Error 0.503 Treynor Ratio -0.409 Total Fees $4.00 |
namespace QuantConnect { public class BasicTemplateAlgorithm : QCAlgorithm { private string symbol = "UVXY"; private int quantity=100; private int trigger=0; //movingaveragealgorithm emafast=new movingaveragealgorithm(10); //movingaveragealgorithm emaslow=new movingaveragealgorithm(50); //MovingAverageConvergenceDivergence _macd; public override void Initialize() { SetStartDate(2016, 07, 22); SetEndDate(2016, 07, 27); SetCash(30000); AddSecurity(SecurityType.Equity, symbol, Resolution.Daily); SetBrokerageModel(Brokerages.BrokerageName.InteractiveBrokersBrokerage); //SetBrokerageModel(Brokerages.BrokerageName.TradierBrokerage); Securities["UVXY"].SetDataNormalizationMode(DataNormalizationMode.SplitAdjusted); } public void OnData(Splits splits) { Split split = splits["UVXY"]; Debug("## Split >> Split factor: "+split.SplitFactor); } public void OnData(TradeBars data) { Log(Time.ToString()+"\t"+Securities["UVXY"].Close + "Holding: "+Portfolio.Securities["UVXY"].Holdings.Quantity); if(!Portfolio.HoldStock) { MarketOrder(symbol, -quantity); Log(Time.ToString()+"\t"+"short "+quantity); } else if(Portfolio.HoldStock) { Order(symbol,quantity); Log(Portfolio["UVXY"].Quantity+""); Log(Time.ToString()+"\t"+"close "+quantity); } } } }
namespace QuantConnect { // // Make sure to change "BasicTemplateAlgorithm" to your algorithm class name, and that all // files use "public partial class" if you want to split up your algorithm namespace into multiple files. // //public partial class BasicTemplateAlgorithm : QCAlgorithm, IAlgorithm //{ // Extension functions can go here...(ones that need access to QCAlgorithm functions e.g. Debug, Log etc.) //} //public class Indicator //{ // ...or you can define whole new classes independent of the QuantConnect Context //} public class movingaveragealgorithm { private decimal period; private decimal ema; private int samples; public decimal EMA { get {return ema;} } public movingaveragealgorithm(decimal period) { this.period=period; } public bool ready { get {return samples>=period;} } public decimal AddSample(decimal price) { if(samples==0) { ema=price; }else { ema=(1/period)*price+((period-1)/period)*ema; } samples++; return ema; } } }
// using System; // using System.Linq; // using QuantConnect.Data; // using QuantConnect.Data.Consolidators; // using QuantConnect.Data.Market; // using QuantConnect.Indicators; // namespace QuantConnect.Algorithm // { // public class TimeIndicator // { // bool isMonday; // bool isFriday; // public bool day(Time date) // { // if(date.Date.DayOfWeek==DayOfWeek.Monday) // return true; // } // } // End Partial Algorithm Template - Indicators. // } // End QC Namespace