| Overall Statistics |
|
Total Trades 36 Average Win 0.07% Average Loss -0.04% Compounding Annual Return -57.646% Drawdown 0.600% Expectancy -0.596 Net Profit -0.518% Sharpe Ratio -17.911 Loss Rate 86% Win Rate 14% Profit-Loss Ratio 1.82 Alpha 0 Beta 0 Annual Standard Deviation 0.024 Annual Variance 0.001 Information Ratio 0 Tracking Error 0 Treynor Ratio 0 Total Fees $72.00 |
-no value-
namespace QuantConnect
{
public class QCUMovingAverageCross : QCAlgorithm
{
int quantity = 0;
decimal price = 0;
decimal tolerance = 0m; //0.1% safety margin in prices to avoid bouncing.
string symbol = "EURUSD";
//Set up the EMA Class:
ExponentialMovingAverage emaShort;
ExponentialMovingAverage emaLong;
ExponentialMovingAverage emaShortSecond;
ExponentialMovingAverage emaLongSecond;
public override void Initialize()
{
SetStartDate(2014, 1, 1);
SetEndDate(2014, 1, 2);
SetCash(25000);
AddSecurity(SecurityType.Forex, symbol, Resolution.Second);
emaShort = EMA(symbol, 10, Resolution.Minute);
emaLong = EMA(symbol, 50, Resolution.Minute);
emaShortSecond = EMA(symbol, 10*60, Resolution.Second);
emaLongSecond = EMA(symbol, 50*60, Resolution.Second);
}
//Handle TradeBar Events: a TradeBar occurs on every time-interval
public void OnData(TradeBars data) {
price = Securities[symbol].Close;
if (!emaShort.IsReady || !emaLong.IsReady) return;
Plot("EMAs","EMAShort",emaShort);
Plot("EMAs","EMALong",emaLong);
Plot("EMAs","EMAShortSecond",emaShortSecond);
Plot("EMAs","EMALongSecond",emaLongSecond);
Plot("EMAs","BarClose",price);
decimal cash = Portfolio.Cash;
int holdings = Portfolio[symbol].Quantity;
quantity = Convert.ToInt32((cash * 0.5m) / price);
if (holdings > 0 || holdings == 0) {
if ((emaShort * (1+tolerance)) < emaLong)
{
Order(symbol, -(holdings + quantity));
Log(Time.ToShortDateString() + " > Go Short > Holdings: " + holdings.ToString() + " Quantity:" + quantity.ToString() + " Samples: " + emaShort.Samples);
}
} else if (holdings < 0 || holdings == 0) {
if ((emaShort * (1 - tolerance)) > emaLong)
{
Order(symbol, Math.Abs(holdings) + quantity);
Log(Time.ToShortDateString() + "> Go Long > Holdings: " + holdings.ToString() + " Quantity:" + quantity.ToString() + " Samples: " + emaShort.Samples);
}
}
}
}
}