| Overall Statistics |
|
Total Trades 0 Average Win 0% Average Loss 0% Compounding Annual Return 0% Drawdown 0% Expectancy 0 Net Profit 0% Sharpe Ratio 0 Loss Rate 0% Win Rate 0% Profit-Loss Ratio 0 Alpha 0 Beta 0 Annual Standard Deviation 0 Annual Variance 0 Information Ratio 0 Tracking Error 0 Treynor Ratio 0 Total Fees $0.00 |
using System;
using System.Linq;
using QuantConnect.Indicators;
using QuantConnect.Models;
namespace QuantConnect
{
using QuantConnect.Securities;
using QuantConnect.Models;
public partial class MovingAverageDemo : QCAlgorithm, IAlgorithm
{
string symbol = "SPY";
ExponentialMovingAverage emaFast = new ExponentialMovingAverage(10);
ExponentialMovingAverage emaSlow = new ExponentialMovingAverage(50);
public override void Initialize()
{
SetStartDate(2014, 01, 01);
SetEndDate(2014, 04, 01);
SetCash(50000);
AddSecurity(SecurityType.Equity, symbol, Resolution.Minute);
}
public void OnTradeBar(Dictionary<string, TradeBar> data)
{
decimal price = data[symbol].Close;
emaFast.AddSample(price);
emaSlow.AddSample(price);
if (emaFast.EMA > emaSlow.EMA)
{
Order(symbol, 100);
}
else if (emaFast.EMA < emaSlow.EMA)
{
Order(symbol, -100);
}
}
}
}using System;
using System.Collections;
using System.Collections.Generic;
namespace QuantConnect {
using QuantConnect.Securities;
using QuantConnect.Models;
public class ExponentialMovingAverage
{
private decimal _period;
private decimal _ema;
private int _samples;
public decimal EMA
{
get{return _ema;}
}
public ExponentialMovingAverage(decimal period)
{
this._period = period;
this._samples = 0;
}
public decimal AddSample(decimal price)
{
if (_samples == 0)
{
_ema = price;
}
else
{
_ema = (1/_period)*price+((_period-1)/_period)*_ema;
}
_samples++;
return _ema;
}
}
}