| Overall Statistics |
|
Total Trades 454 Average Win 0.7% Average Loss -0.69% Compounding Annual Return 19.772% Drawdown 18.600% Expectancy 0.06 Net Profit 17.989% Sharpe Ratio 0.938 Loss Rate 48% Win Rate 52% Profit-Loss Ratio 1.02 Alpha -0.066 Beta 1.95 Annual Standard Deviation 0.217 Annual Variance 0.047 Information Ratio 0.566 Tracking Error 0.115 Treynor Ratio 0.104 |
-no value-
using System;
using QuantConnect;
using QuantConnect.Algorithm;
using QuantConnect.Data.Market;
using QuantConnect.Indicators;
namespace Sandbox
{
public class ThreeLineBreakChartingExample : QCAlgorithm
{
private SimpleMovingAverage sma;
//init
public override void Initialize()
{
// set start/end dates of backtest
SetStartDate(2014, 01, 01);
SetEndDate(2014, 12, 01);
// request data
AddSecurity(SecurityType.Equity, "SPY", Resolution.Minute);
// define our 10 period sma
sma = new SimpleMovingAverage(100);
}
private DateTime previous;
decimal lineBreak;
decimal previousHigh;
decimal previousLow;
int swing;
private DateTime LastTradeTime;
//ondata
public void OnData(TradeBars data)
{
TradeBar spy;
//check if values exist
if (data.TryGetValue("SPY", out spy) && spy.Time.Date != previous.Date)
{
if(previousHigh > spy.High && swing == -1)
{
lineBreak = spy.High;
swing = 1;
} else
if(previousLow < spy.Low && swing == 1)
{
lineBreak = spy.Low;
swing = -1;
} else
{
lineBreak = spy.Close;
swing = 0;
}
// pump the data into sma
sma.Update(spy.Time, lineBreak);
//check outputs for the prootype
//Log("Time: "+spy.Time+" Values: "+spy.Value);
// plot sma
Plot("Indicators", sma);
Plot("Indicators", lineBreak);
Plot("Indicators", swing);
previous = spy.Time;
previousHigh = spy.High;
previousLow =spy.Low;
}
if(Portfolio["SPY"].HoldStock)
{
if((spy.Time - LastTradeTime).TotalHours > 6 && swing== 0)
{
Liquidate("SPY");
//Log("Liquidated "+symbol+" because time reached: "+(t.Time - d.LastTradeTime).TotalSeconds+" Last trade time: "+d.LastTradeTime);
}
}
//entry rules
if (!Portfolio.HoldStock && lineBreak > 0)
{
SetHoldings("SPY", 1);
LastTradeTime = spy.Time;
} else
if (!Portfolio.HoldStock && lineBreak < sma)
{
SetHoldings("SPY", -1);
LastTradeTime = spy.Time;
}
}
}
}