Overall Statistics |
Total Trades
6
Average Win
30.24%
Average Loss
-11.87%
Compounding Annual Return
10.203%
Drawdown
25.200%
Expectancy
1.839
Net Profit
421.838%
Sharpe Ratio
0.672
Loss Rate
20%
Win Rate
80%
Profit-Loss Ratio
2.55
Alpha
0.11
Beta
0.001
Annual Standard Deviation
0.164
Annual Variance
0.027
Information Ratio
0.11
Tracking Error
0.257
Treynor Ratio
124.509
Total Fees
$21.91
|
namespace QuantConnect { public class PlotFillsAlgorithm : QCAlgorithm { public ExponentialMovingAverage emaFast, emaSlow; public override void Initialize() { SetStartDate(1998, 1, 1); SetEndDate(2015, 1, 1); SetCash(25000); AddSecurity(SecurityType.Equity, "SPY", Resolution.Daily); // define our indicators var spyClose = Identity("SPY"); emaFast = EMA("SPY", 100); emaSlow = EMA("SPY", 300); // define our chart var chart = new Chart("SPY"); chart.AddSeries(new Series(spyClose.Name, SeriesType.Line)); chart.AddSeries(new Series(emaFast.Name, SeriesType.Line)); chart.AddSeries(new Series(emaSlow.Name, SeriesType.Line)); // notice we use scatter plots for the buy/sell plots chart.AddSeries(new Series(OrderDirection.Buy.ToString(), SeriesType.Scatter)); chart.AddSeries(new Series(OrderDirection.Sell.ToString(), SeriesType.Scatter)); AddChart(chart); // auto plot our indicators on our symbol chart PlotIndicator("SPY", spyClose, emaFast, emaSlow); } //Data Event Handler: New data arrives here. "TradeBars" type is a dictionary of strings so you can access it by symbol. public void OnData(TradeBars data) { const decimal threshold = 0.001m; if (Securities["SPY"].Holdings.Quantity <= 0 && emaFast > emaSlow*(1+threshold)) { SetHoldings("SPY", 1); } if (Securities["SPY"].Holdings.Quantity >= 0 && emaFast < emaSlow*(1-threshold)) { SetHoldings("SPY", -1); } } public override void OnOrderEvent(OrderEvent fill) { // if this is a fill event (Filled or PartiallyFilled) then plot it if (fill.Status.IsFill()) { Plot(fill.Symbol, fill.Direction.ToString(), fill.FillPrice); } } } }