Overall Statistics Total Trades 124 Average Win 0.38% Average Loss -0.01% Compounding Annual Return -0.201% Drawdown 0.400% Expectancy -0.045 Net Profit -0.019% Sharpe Ratio -0.137 Loss Rate 98% Win Rate 2% Profit-Loss Ratio 58.24 Alpha 0.003 Beta -0.019 Annual Standard Deviation 0.012 Annual Variance 0 Information Ratio -3.734 Tracking Error 0.069 Treynor Ratio 0.085 Total Fees \$1729.01
```using System;
namespace QuantConnect
{
/*
*   QuantConnect University: Full Basic Template:
*
*   The underlying QCAlgorithm class is full of helper methods which enable you to use QuantConnect.
*   We have explained some of these here, but the full algorithm can be found at:
*   https://github.com/QuantConnect/QCAlgorithm/blob/master/QuantConnect.Algorithm/QCAlgorithm.cs
*/
public class BasicTemplateAlgorithm : QCAlgorithm
{
static int universe = 2;
static string[] syb = new string[2];
VolumeWeightedAveragePriceIndicator[] vwap = new VolumeWeightedAveragePriceIndicator[universe];
ExponentialMovingAverage[] fast = new ExponentialMovingAverage[universe];
ExponentialMovingAverage[] slow = new ExponentialMovingAverage[universe];

//Initialize the data and resolution you require for your strategy:
public override void Initialize()
{
//syb[0]  = "JCP";

//syb[2]  = "FB";
//syb[3]  = "AAPL";
//syb[4]  = "JCP";
//syb[4]  = "FB";
//syb[4]  = "MGM";
//syb[5]  = "DAL";

//Start and End Date range for the backtest:
SetStartDate(2016, 7, 1);

//Cash allocation
SetCash(1000000);

//Add as many securities as you like. All the data will be passed into the event handler:

syb[0]  = "MS";
syb[1]  = "NVDA";
for (int i=0;i<vwap.Length;i++){
vwap[i] = VWAP(syb[i], 60,Resolution.Minute);
fast[i] = EMA(syb[i],  5,Resolution.Hour);
slow[i] = EMA(syb[i], 20,Resolution.Hour);

}

}

//Data Event Handler: New data arrives here. "TradeBars" type is a dictionary of strings so you can access it by symbol.
{

/*
decimal High = data[sybl].High;
decimal Low = data[sybl].Low;
long Volume = data[sybl].Volume;
decimal Open = data[sybl].Open;
for(int i =0;i<period;i++){
}
int holdings = Portfolio[sybl].Quantity;
//quantity_new =0;
//quantity_old =0;
*/

//int period = 180;
int[] sign = new int[universe];

decimal[] Close = new decimal[universe];
double[] quantity_portion = new double[universe];
long[] Volume = new long[universe];
double[] quantity_new = new double[universe];
double[] quantity_old = new double[universe];
double[] portion = new double[universe];

for(int i=0;i<syb.Length;i++){
Close[i] = data[syb[i]].Close;
Volume[i] = data[syb[i]].Volume;
if(fast[i]>slow[i])
{
sign[i]= 1;
} else{
sign[i]=-1;
}
if(Close[i]>vwap[i]){

//Close[i]>=vwap[i] |Close[i]<vwap[i]
/*
for(int i =0;i<period;i++){
}
*/

//quantity_new[i] =  (  ((double)Close[i] - (int)vwap[i]) * (double)Close[i] * sign[i]  * Volume[i]);
quantity_new[i] = (double)Close[i];
quantity_portion[i] = Math.Abs(quantity_new[i]);

//quantity_old1 = quantity_new1;
//quantity_old2 = quantity_new2;
//Plot("portion1",portion1);

}else{
quantity_new[i] = (double)Close[i];
quantity_portion[i] = Math.Abs(quantity_new[i]);
}
}

Schedule.On(DateRules.EveryDay("SPY"), TimeRules.AfterMarketOpen("SPY", 10), () =>{
for(int i=0;i<syb.Length;i++){

if(quantity_portion[i] ==0){
portion[i] = 0;

}else{
portion[i] = (double)quantity_portion[i] / (double)quantity_portion.Sum();
}

Debug("Purchased " + portion[i] +" on " + Time.ToShortDateString());
SetHoldings(syb[i],portion[i]/4);

}
});
Plot("portion" + universe,"%",portion[0]);

if(Portfolio[syb[0]].UnrealizedProfit<(int)-0.01*Portfolio.Cash | Portfolio[syb[0]].UnrealizedProfit>(int)1.01*Portfolio.Cash){
Liquidate(syb[0]);
}else if(Portfolio[syb[1]].UnrealizedProfit<(int)-0.01*Portfolio.Cash | Portfolio[syb[1]].UnrealizedProfit>(int)1.01*Portfolio.Cash){
Liquidate(syb[1]);
}else{

Schedule.On(DateRules.EveryDay("SPY"), TimeRules.BeforeMarketClose("SPY", 10), () =>{
Liquidate(syb[0]);
Liquidate(syb[1]);

});

}

}

/*
public override void OnEndOfDay(){
Debug("PLOTTING");
Plot("portion1", (Math.Abs(quantity_new1)));
Plot("portion2", (Math.Abs(quantity_new2)));

}
*/
}

}                        ```