| Overall Statistics |
|
Total Trades 1 Average Win 0% Average Loss 0% Compounding Annual Return 16.459% Drawdown 17.800% Expectancy 0 Net Profit 117.196% Sharpe Ratio 0.906 Loss Rate 0% Win Rate 0% Profit-Loss Ratio 0 Alpha 0.037 Beta 6.649 Annual Standard Deviation 0.187 Annual Variance 0.035 Information Ratio 0.8 Tracking Error 0.187 Treynor Ratio 0.026 Total Fees $1.00 |
namespace QuantConnect.Algorithm.CSharp
{
public class buythedip : QCAlgorithm
{
//Member variables
private static Symbol _google = QuantConnect.Symbol.Create("GOOGL", SecurityType.Equity, Market.USA);
private int ForwardLookingPeriod = 25;
private int BackwardLookingPeriod = 25;
private decimal fallAmount = Convert.ToDecimal(0.1);
private decimal riseAmount = Convert.ToDecimal(0.05);
private int minutesToExecute = 10;
private decimal relevantPrice;
private RollingWindow<decimal> _close_window;
public Boolean cash;
public Boolean buyTrigger;
public Boolean sellTrigger;
public override void Initialize()
{
SetStartDate(2013,01,01);
SetEndDate(2018,02,01);
SetCash(30000);
AddEquity(_google, Resolution.Daily);
_close_window = new RollingWindow<decimal>(BackwardLookingPeriod);
IEnumerable<TradeBar> slices = History(_google, BackwardLookingPeriod);
foreach (TradeBar bar in slices) {
_close_window.Add(bar.Close);
}
Debug(_close_window[0]);
Console.WriteLine("Hugo Lu");
Schedule.On(DateRules.EveryDay(_google),
TimeRules.AfterMarketOpen(_google,minutesToExecute), //Execute the function at the start of the day
// x minutes in....
EveryDayOnMarketOpen);
}
public void EveryDayOnMarketOpen(){ //Define the bad boy
//Sanity Check; are there open orders?
if (Transactions.GetOpenOrders().Count > 0) {
return;
}
//Get information about however many periods ago
IEnumerable<TradeBar> slices = History(_google,BackwardLookingPeriod) ;
TradeBar BarOfInterest = slices.First();
decimal relevantClose = BarOfInterest.Close;
decimal yestClose = slices.Last().Close;
decimal fallPercent = 1 - (yestClose/relevantClose);
relevantPrice = yestClose;
//Is it time to buy?
if(fallPercent > fallAmount && Portfolio.Cash > 100 ) {
buyTrigger = true;
} else {
buyTrigger = false;
}
if(buyTrigger) {
SetHoldings(_google,1);
}
//Is it time to sell?
if(((yestClose / relevantPrice)-1)> riseAmount) {
Log("inside");
sellTrigger = true;
} else {
sellTrigger = false;
}
if(sellTrigger) {
Liquidate();
};
}
}
}