Overall Statistics |
Total Trades 1 Average Win 0% Average Loss 0% Compounding Annual Return -53.766% Drawdown 25.300% Expectancy 0 Net Profit -16.220% Sharpe Ratio -1.606 Loss Rate 0% Win Rate 0% Profit-Loss Ratio 0 Alpha 0 Beta -35.589 Annual Standard Deviation 0.302 Annual Variance 0.091 Information Ratio -1.651 Tracking Error 0.302 Treynor Ratio 0.014 Total Fees $104.10 |
namespace QuantConnect.Algorithm.CSharp { /// <summary> /// Basic template algorithm simply initializes the date range and cash. This is a skeleton /// framework you can use for designing an algorithm. /// </summary> public class BasicTemplateAlgorithm : QCAlgorithm { //private Symbol _spy = QuantConnect.Symbol.Create("SPY", SecurityType.Equity, Market.USA); public RollingWindow<TradeBar> Close5m; public RollingWindow<TradeBar> Close1d; public decimal chiusura5; public decimal chiusura1; public decimal chiusura2; public decimal chiusura3; public decimal chiusura4; public decimal aperturaoggi; public decimal massimogiornata; public decimal minimogiornata; public bool condition1; public bool condition90; public SimpleMovingAverage value1; public decimal percent; public decimal stopValue; private OrderTicket CurrentOrder; private OrderTicket StopLoss; //private OrderTicket ProfitTarget; /// <summary> /// Initialise the data and resolution required, as well as the cash and start-end dates for your algorithm. All algorithms must initialized. /// </summary> public override void Initialize() { SetStartDate(2018, 1, 1); //Set Start Date //SetEndDate(2018, 2, 25); //Set End Date SetCash(100000); //Set Strategy Cash SetBrokerageModel(BrokerageName.GDAX, AccountType.Cash); // Find more symbols here: http://quantconnect.com/data AddCrypto("BTCUSD", Resolution.Minute); var fiveMinutes = new TradeBarConsolidator(TimeSpan.FromMinutes(5)); fiveMinutes.DataConsolidated += OnFiveMinutes; SubscriptionManager.AddConsolidator("BTCUSD", fiveMinutes); var dailyMinutes = new TradeBarConsolidator(TimeSpan.FromMinutes(1440)); dailyMinutes.DataConsolidated += OnDaily; SubscriptionManager.AddConsolidator("BTCUSD", dailyMinutes); Close5m = new RollingWindow<TradeBar>(10); Close1d = new RollingWindow<TradeBar>(10); value1 = SMA("BTCUSD", 3, Resolution.Daily); } /// <summary> /// OnData event is the primary entry point for your algorithm. Each new data point will be pumped in here. /// </summary> /// <param name="data">Slice object keyed by symbol containing the stock data</param> public override void OnData(Slice data) { } public void OnFiveMinutes(object sender, TradeBar bar) { //Close5m.Add(bar); //if (!Close5m.IsReady) return; //Debug("Close5min0: " + Close5m[0].Close); //Debug("Close5min1: " + Close5m[1].Close); //TimeSpan Sessstart = new TimeSpan(8, 0, 0); //TimeSpan Sessend = new TimeSpan(14, 0, 0); //TimeSpan Sessstop = new TimeSpan(13, 0, 0); //TimeSpan now = DateTime.Now.TimeOfDay; //Debug("Now: " + now.ToString()); condition1 = chiusura1 > chiusura2 && chiusura2 < chiusura3; condition90 = aperturaoggi > value1; //Debug(value1.ToString()); //Debug("condition1: "+ condition1); //Debug("condition90: "+ condition90); if (!Portfolio.HoldStock && condition90 == true && condition1 == true && aperturaoggi > chiusura1) { Log(condition90.ToString() + " " + condition1.ToString() + " " + aperturaoggi.ToString() + ">" + chiusura1.ToString()); var quantity = 3; if (Time.Hour > 8 && Time.Hour <= 13) { // Buy //CurrentOrder = StopMarketOrder("BTCUSD", quantity, massimogiornata, tag:"longEntry"); CurrentOrder = MarketOrder("BTCUSD", quantity); // Set StopLoss order //StopLoss = StopMarketOrder("BTCUSD", -quantity, massimogiornata); // Set Profit Target //ProfitTarget = LimitOrder("BTCUSD"), -quantity, price * (1m + TakeProfitPercent)); //SetHoldings("BTCUSD", 0.001); } else if (Portfolio.HoldStock) { var currentStopPrice = CurrentOrder.AverageFillPrice; if (currentStopPrice != 0) StopLoss = StopMarketOrder("BTCUSD", -quantity, 1.05m * currentStopPrice, tag:"StopLoss"); } else if ((Portfolio.Invested) && (Time.Hour >= 14)) { StopLoss = Order("BTCUSD", -quantity); } //var btcHoldings = Portfolio.CashBook["BTC"].Amount; //var usdCash = Portfolio.CashBook["USD"].Amount; //Log($"{Time} - BTC holdings: {btcHoldings:F8} - USD cash: {usdCash:F2}"); } } private void OnDaily(object sender, TradeBar consolidated) { Close1d.Add(consolidated); if (!Close1d.IsReady) return; //Debug("CloseDaily0: " + Close1d[0].Close); //Debug("CloseDaily1: " + Close1d[1].Close); chiusura5 = Close1d[5].Close; chiusura1 = Close1d[1].Close; chiusura2 = Close1d[2].Close; chiusura3 = Close1d[3].Close; chiusura4 = Close1d[4].Close; aperturaoggi = Close1d[0].Open; massimogiornata = Close1d[0].High; minimogiornata = Close1d[0].Low; percent = chiusura1 / 100; stopValue = 4*percent; //Debug("percent: " + percent); //Debug("stopValue: " + stopValue); condition1 = chiusura1 > chiusura2 && chiusura2 < chiusura3; condition90 = aperturaoggi > value1; //Debug("chiusura1: " + chiusura1); //Debug("chiusura2: " + chiusura2); //Debug("chiusura3: " + chiusura3); //Debug("aperturaoggi: " + aperturaoggi); //Debug("massimogiornata: " + massimogiornata); //Debug("minimogiornata: " + minimogiornata); //Debug("condition1: "+ condition1); //Debug("condition90: "+ condition90); } } }