Overall Statistics |
Total Trades 10001 Average Win 0.01% Average Loss -0.02% Compounding Annual Return 0.560% Drawdown 1.700% Expectancy 0.017 Net Profit 1.742% Sharpe Ratio 0.686 Probabilistic Sharpe Ratio 27.052% Loss Rate 31% Win Rate 69% Profit-Loss Ratio 0.47 Alpha 0.005 Beta -0.002 Annual Standard Deviation 0.007 Annual Variance 0 Information Ratio -0.841 Tracking Error 0.119 Treynor Ratio -1.947 Total Fees $0.00 |
namespace QuantConnect.Algorithm.CSharp { public class RenkoAlgorithm : QCAlgorithm { RenkoBar[] prevDirections=new RenkoBar[1]; int changes=0; int bricks=1, allBricks=0; int noDelta=0; string[] pears= { "EURUSD"}; int[] reverse={0}; int startAmount=1000000; decimal parcent=0.1m; decimal amount=0; List<ChangeDirectionData> ChangeList=new List<ChangeDirectionData>(); public override void Initialize() { // cash allocation SetCash(startAmount); SetStartDate(2013, 01, 01); SetEndDate(2020, 05, 11); var renkoCloses = new RenkoConsolidator[1]; for(int i=0;i<pears.Length;i++) { renkoCloses[i] = new RenkoConsolidator(0.001m); } //var renkoATR = ATR("EURUSD",14, MovingAverageType.Simple, Resolution.Daily); for(int i=0;i<pears.Length;i++) { renkoCloses[i].DataConsolidated += (sender, consolidated) => { // call event handler for renko data HandleRenkoCloseRaise(consolidated); }; AddSecurity(SecurityType.Forex, pears[i], Resolution.Minute); //Minute, Second or Tick Securities[pears[i]].FeeModel = new ConstantFeeModel(0m); SubscriptionManager.AddConsolidator(pears[i], renkoCloses[i]); } var stockPlot = new Chart("Renko"); var buyOrders = new Series("Buy", SeriesType.Bar, 0); stockPlot.AddSeries(buyOrders); AddChart(stockPlot); } OrderTicket buyTicket=null; OrderTicket sellTicket=null; private void HandleRenkoCloseRaise(RenkoBar data) { int index=GetIndexOfPear(data.Symbol); bool isReverse=Array.FindIndex(reverse, i=>i==index)!=-1; if(prevDirections[index]!=null) { if(prevDirections[index].Direction==data.Direction) { bricks++; } else { changes++; ChangeList.Add(new ChangeDirectionData{Date=data.Start,NumChanges=bricks}); allBricks+=bricks; bricks=1; if(data.Direction==BarDirection.Rising) { if(!isReverse) MarketOrder(data.Symbol,startAmount*parcent*-1 ); else Liquidate(data.Symbol); } else { if(isReverse) MarketOrder(data.Symbol,startAmount*parcent ); else Liquidate(data.Symbol); } } } else { if(data.Direction==BarDirection.Rising) MarketOrder(data.Symbol,startAmount*parcent*-1); //else // MarketOrder(pear,startAmount*parcent); } prevDirections[index]=data; } public override void OnData(Slice data) { // slice has lots of useful information //if (!data.ContainsKey("EURUSD")) return; //Ticks theticks = data.Ticks; //Plot("Renko", "Buy", data["EURUSD"].Price); } public override void OnEndOfAlgorithm() { Liquidate(); int moreThanFive=0; List<ChangeDirectionData> OneChanges=new List<ChangeDirectionData>(); foreach(var item in ChangeList) { if(item.NumChanges==1) moreThanFive++; else { if(moreThanFive>=5) { OneChanges.Add(new ChangeDirectionData{Date=item.Date,NumChanges=moreThanFive}); } moreThanFive=0; } Console.WriteLine(String.Format(" {0} {1} ",item.NumChanges,item.Date)); } Console.WriteLine("More than five!!!!!!!!!! "+OneChanges.Count ); foreach(var item in OneChanges) { Console.WriteLine(String.Format(" {0} {1} ",item.NumChanges,item.Date)); } } public int GetIndexOfPear(Symbol symbol) { return Array.FindIndex(pears, p => p == symbol); } } }
using QuantConnect.Data.Custom.USEnergy; namespace QuantConnect { public class USEnergyAlphaModel : AlphaModel { private Symbol _energy; public USEnergyAlphaModel(QCAlgorithm algorithm) { _energy = algorithm.AddData<USEnergy>(USEnergy.Petroleum.UnitedStates.WeeklyGrossInputsIntoRefineries).Symbol; } public override IEnumerable<Insight> Update(QCAlgorithm algorithm, Slice data) { var insights = new List<Insight>(); if (!data.ContainsKey(_energy)) { return insights; } var energy = data.Get<USEnergy>(_energy); // The U.S. Energy Information Administration (EIA) is a principal agency of the U.S. Federal Statistical System // responsible for collecting, analyzing, and disseminating energy information to promote sound policymaking, // efficient markets, and public understanding of energy and its interaction with the economy and the environment. // EIA programs cover data on coal, petroleum, natural gas, electric, renewable and nuclear energy. EIA is part of the U.S. Department of Energy. // Find more categories here: https://github.com/QuantConnect/Lean/blob/master/Common/Data/Custom/USEnergy/USEnergy.Category.cs return insights; } public override void OnSecuritiesChanged(QCAlgorithm algorithm, SecurityChanges changes) { // For instruction on how to use this method, please visit // https://www.quantconnect.com/docs/algorithm-framework/alpha-creation#Alpha-Creation-Good-Design-Patterns } } }
namespace QuantConnect { public class ChangeDirectionData{ public DateTime Date { get; set; } public int NumChanges { get; set; } } }