| Overall Statistics |
|
Total Trades 623 Average Win 0.01% Average Loss -0.01% Compounding Annual Return -88.503% Drawdown 0.800% Expectancy -0.249 Net Profit -0.591% Sharpe Ratio -11.225 Loss Rate 70% Win Rate 30% Profit-Loss Ratio 1.54 Alpha -1.489 Beta -1.999 Annual Standard Deviation 0.066 Annual Variance 0.004 Information Ratio -3.74 Tracking Error 0.1 Treynor Ratio 0.372 Total Fees $623.00 |
using QuantConnect.Data;
using QuantConnect.Data.Market;
using QuantConnect.Securities;
using System;
using System.Collections.Generic;
using QuantConnect.Orders;
using QuantConnect.Securities.Interfaces;
using QuantConnect.Interfaces;
using QuantConnect.Indicators;
using QuantConnect.Scheduling;
namespace QuantConnect.Algorithm.CSharp
{
public class Test : QCAlgorithm
{
public override void Initialize()
{
//backtest prepare
SetStartDate(2016, 10, 28);
SetEndDate(2016, 10, 29);
SetCash(100000); //Set Strategy Cash
AddEquity("AMZN", Resolution.Second,Market.USA);
Chart plotter = new Chart("Plotter", ChartType.Overlay);
plotter.AddSeries(new Series("AMZN", SeriesType.Line));
plotter.AddSeries(new Series("Buy", SeriesType.Scatter));
plotter.AddSeries(new Series("Sell", SeriesType.Scatter));
AddChart(plotter);
}
public override void OnData(Slice data)
{
Random random = new Random();
int num = random.Next(1, 100);
Boolean doAction = num%3==0;
foreach (String symbol in data.Keys)
{
if ( !Portfolio.Invested && doAction)
{
SetHoldings( "AMZN" , 0.25 );
}
else if ( Portfolio.Invested && doAction)
{
Liquidate();
}
}
Plot("Plotter", "AMZN", Securities["AMZN"].Price);
}
public override void OnOrderEvent(OrderEvent orderEvent)
{
var order = Transactions.GetOrderById(orderEvent.OrderId);
decimal _FillPrice = orderEvent.FillPrice;
if (orderEvent.FillQuantity > 0 && _FillPrice > 0)
{
Plot("Plotter", "Buy", _FillPrice);
}
else if (orderEvent.FillQuantity < 0 && _FillPrice > 0)
{
Plot("Plotter", "Sell", _FillPrice);
}
}
public override void OnEndOfDay()
{
try
{
}
catch (Exception err)
{
Error("OnEndOfDay Err:" + err.Message);
}
}
}
}