| 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 Probabilistic 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 -2.19 Tracking Error 0.137 Treynor Ratio 0 Total Fees $0.00 Estimated Strategy Capacity $0 Lowest Capacity Asset |
using System;
using System.Drawing;
namespace QuantConnect.Algorithm.CSharp
{
public class CasualYellowGreenLemur : QCAlgorithm
{
//Initializers:
double dayCount = 0;
bool tradedToday = false;
int quantity = 0;
decimal price = 0;
decimal tolerance = 0m; //0.1% safety margin in prices to avoid bouncing.
private string _symbol = Futures.Indices.NASDAQ100EMini;
private DateTime _previous;
decimal ema = 0;
//Set up the EMA Class:
private SimpleMovingAverage _fast;
private SimpleMovingAverage _slow;
//Initialize the data aND resolution you require for your strategy:
public override void Initialize()
{
SetStartDate(2021, 3, 1);
SetEndDate(2021, 3, 16);
SetCash(10000);
AddFuture(Futures.Indices.NASDAQ100EMini);
// request ND data with minute resolution
AddSecurity(SecurityType.Equity, Futures.Indices.NASDAQ100EMini, Resolution.Minute);
// create a 50 day exponential moving average
_fast = SMA(Futures.Indices.NASDAQ100EMini, 72, Resolution.Minute);
// create a 200 day exponential moving average
_slow = SMA(Futures.Indices.NASDAQ100EMini, 89, Resolution.Minute);
// AddSecurity(SecurityType.Equity, "ND", resolution: Resolution.Minute);
AddSecurity(SecurityType.Equity, "SPY", Resolution.Daily);
}
//HaNDle TradeBar Events: a TradeBar occurs on every time-interval
public void OnData(TradeBars data) {
if (!_slow.IsReady) return;
if (_previous.Date == Time.Date) return;
var holdings = Portfolio[_symbol].Quantity;
var profitloss = Portfolio[_symbol].UnrealizedProfit;
// we only want to go long if we're currently short or flat
// if the fast is greater than the slow, we'll go long
if (Portfolio.TotalPortfolioValue > _fast )
{
Log("BUY >> " + Securities[_symbol].Price);
SetHoldings(_symbol, 1.0);
//stoploss
var close = Securities[_symbol].Close;
var stopMarketTicket = StopMarketOrder(_symbol, 10, close * 0.99m);
}
Plot(_symbol, "Price", data[_symbol].Price);
// easily plot iNDicators, the series name will be the name of the iNDicator
Plot(_symbol, _fast, _slow);
//Plot("Ribbon", _ribbon);
if (profitloss <= -2000)
{
//Log("SELL >> " + Securities[_symbol].Price);
//SetHoldings(_symbol, -1.0);
Liquidate(_symbol);
}
_previous = Time;
}
}
}