| Overall Statistics |
|
Total Trades 2 Average Win 0% Average Loss 0% Compounding Annual Return 171.999% Drawdown 11.200% Expectancy 0 Net Profit 39.702% Sharpe Ratio 3.387 Probabilistic Sharpe Ratio 75.282% Loss Rate 0% Win Rate 0% Profit-Loss Ratio 0 Alpha 1.535 Beta -0.058 Annual Standard Deviation 0.449 Annual Variance 0.202 Information Ratio 1.869 Tracking Error 0.687 Treynor Ratio -26.102 Total Fees $2.00 |
using System;
using System.Linq;
using QuantConnect.Indicators;
using QuantConnect.Models;
namespace QuantConnect.Algorithm.Examples
{
public class QCUMovingAverageCross : QCAlgorithm
{
private string _symbol = "SPY";
private decimal stoploss_pcnt =0.02m;
private decimal profittarget_pcnt =0.02m;
private Symbol symbol;
private Security sym;
private ExponentialMovingAverage ema;
private DateTime previous;
private bool sl_set=false;
private bool is_above, is_below, is_above_last, is_below_last;
private DateTime StartDay = new DateTime(2020, 02, 29);
private DateTime EndDay = new DateTime(2020, 06, 29);
private int startCashAmount = 25000;
private Chart _equityChart;
string chartName1 = "Chart_1";
public override void Initialize()
{
// set up our analysis span
SetStartDate(StartDay);
SetEndDate(EndDay);
SetCash(startCashAmount);
sym = AddSecurity(SecurityType.Equity, _symbol, Resolution.Daily);
symbol = sym.Symbol;
ema = EMA(symbol, 20, Resolution.Daily);
// chart underlying equity
_equityChart = new Chart(chartName1);
_equityChart.AddSeries(new Series("Plot_my2", SeriesType.Candle));
AddChart(_equityChart);
}
public void OnData(Slice data)
{
if (!ema.IsReady) return;
var holdings = Portfolio[symbol].Quantity;
decimal cash = Portfolio.Cash;
var X = Securities[symbol];
var close = X.Close;//price
is_above = close>ema;
is_below = close<ema;
var cross_above= is_above && !is_above_last;
var cross_below= is_below && !is_below_last;
if (holdings <= 0 && cross_above )
{
Log("BUY >> " + Securities[symbol].Price);
SetHoldings(symbol, 1.0);
var quantity = CalculateOrderQuantity(_symbol, 1.0);
//var ord=
MarketOrder(_symbol, quantity);
}
// Candle
_equityChart.Series["Plot_my2"].AddPoint(Time+ TimeSpan.FromMinutes(1), X.Open);
_equityChart.Series["Plot_my2"].AddPoint(Time+ TimeSpan.FromMinutes(2), X.High);
_equityChart.Series["Plot_my2"].AddPoint(Time+ TimeSpan.FromMinutes(3), X.Low);
_equityChart.Series["Plot_my2"].AddPoint(Time+ TimeSpan.FromMinutes(4), X.Close);
Plot(chartName1, "ema", ema);
is_above_last = is_above;
is_below_last = is_below;
}
}
}