| Overall Statistics |
|
Total Trades 10001 Average Win 0.23% Average Loss -0.08% Compounding Annual Return 36765972151137900% Drawdown 3.900% Expectancy 0.408 Net Profit 408.020% Sharpe Ratio 45.7 Loss Rate 63% Win Rate 37% Profit-Loss Ratio 2.84 Alpha 19.506 Beta 339.441 Annual Standard Deviation 0.524 Annual Variance 0.274 Information Ratio 45.677 Tracking Error 0.524 Treynor Ratio 0.07 Total Fees $0.00 |
using System;
using QuantConnect.Data.Market;
using QuantConnect.Indicators;
namespace QuantConnect.Algorithm.CSharp
{
public class BasicTemplateAlgorithm : QCAlgorithm
{
private Symbol _symbol = QuantConnect.Symbol.Create("BTCUSD", SecurityType.Crypto, Market.GDAX);
private RollingWindow<decimal> Close;
private BollingerBands _bb;
public override void Initialize()
{
SetStartDate(DateTime.Now.Date.AddDays(-30)); //Set Start Date
SetEndDate(DateTime.Now.Date.AddDays(0)); //Set End Date
SetCash(10000); //Set Strategy Cash
AddSecurity(SecurityType.Equity, _symbol, Resolution.Minute);
Close = new RollingWindow<decimal>(2);
_bb = BB(_symbol, 20, 2, MovingAverageType.Simple, Resolution.Minute);
}
public void OnData(Slice data)
{
Close.Add(data[_symbol].Close);
if (!Close.IsReady) return;
var Close_cur = Close[0];
var Close_priv = Close[1];
var holding = Portfolio[_symbol];
var SellCondition = (Close_priv > Close_cur);
var BuyCondition = (Close_priv < Close_cur);
if (holding.Quantity == 0) //no position
{
if (BuyCondition)
{
SetHoldings(_symbol, 1.0);
}
else if (SellCondition)
{
SetHoldings(_symbol, -1.0);
}
}
else if (holding.Quantity > 0) //in long position
{
if (SellCondition)
{
Liquidate(_symbol);
SetHoldings(_symbol, -1.0);
}
}
else if (holding.Quantity < 0) //in short position
{
if (BuyCondition)
{
Liquidate(_symbol);
SetHoldings(_symbol, 1.0);
}
}
Plot("Trade Plot", "Price", data.Bars[_symbol].Close);
Plot("Trade Plot", "BB Upper", _bb.UpperBand);
Plot("Trade Plot", "BB Lower", _bb.LowerBand);
}
}
}