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
-1.829
Tracking Error
0.108
Treynor Ratio
0
Total Fees
$0.00
Estimated Strategy Capacity
$0
Lowest Capacity Asset
Portfolio Turnover
0%
#region imports
from AlgorithmImports import *
#endregion

import numpy as np
import pandas as pd

class BasicTemplateAlgorithm(QCAlgorithm):

    def Initialize(self):
        self.SetStartDate(2021, 1, 1)
        self.SetEndDate(2022, 1, 1)
        self.SetCash(100000)
        self.AddEquity("AAPL", Resolution.Daily, dataNormalizationMode=DataNormalizationMode.SplitAdjusted)
        
        self.previous_close = None
        self.current_high = None
        self.orderTicket = None
        
        self.Schedule.On(self.DateRules.EveryDay(), self.TimeRules.AfterMarketOpen("AAPL", 0), self.Trade)
        self.Schedule.On(self.DateRules.EveryDay(), self.TimeRules.BeforeMarketClose("AAPL", 1), self.CancelOrder)
        
    def Trade(self):
        self.current_high = None
        history = self.History(["AAPL"], 2, Resolution.Daily)
        high_prices = history.high.unstack(level=0)["AAPL"]
        # get the high of the previous day
        self.current_high = round(float(high_prices[-1]), 2)
        # buy at the high of the previous day
        self.orderTicket = self.StopMarketOrder("AAPL", 100, self.current_high + 0.05)
        self.previous_close = self.current_high
        
    def CancelOrder(self):
        if self.orderTicket is not None and self.orderTicket.Status != OrderStatus.Filled:
            self.Debug(f"Cancelling order: {self.orderTicket}")
            self.orderTicket.Cancel()