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
0
Tracking Error
0
Treynor Ratio
0
Total Fees
$0.00
Estimated Strategy Capacity
$0
Lowest Capacity Asset
from AlgorithmImports import *

COINS = ["1INCH", "AAVE", "ADA", "ALGO", "AMPL", "ATOM", "AVAX", "BCHN", "BSV", "BTC", "COMP", "DAI", "DASH", "DOGE", "DOT", 
            "DUSK", "EGLD", "EOS", "ETC", "ETH", "FIL", "FTM", "ICP", "IOTA", "LEO", "LINK", "LTC", "LUNA", "MANA", "MKR", 
            "NEAR", "NEO", "OMG", "PNK", "REQ", "SOL", "SUSHI", "TERRAAUST", "TRX", "UNI", "VET", "XAUT", "XDC", "XLM", 
            "XMR", "XRP", "XTZ", "YFI", "ZEC", "ZRX"]

CURRENCY = "USD"

STOPLOSS =  10 # %

WAIT = 10 # Seconds

LIMIT_BUY_LONG = 1.000
LIMIT_SELL_LONG = 1.001

LIMIT_SELL_SHORT = 1.0005
LIMIT_BUY_SHORT = 0.999

THRESHOLD = 95 # %

SMA_PERIOD = 30

POSITION = 100
# region imports
from AlgorithmImports import *
import config 
from datetime import *
# endregion

class FatSkyBlueLeopard(QCAlgorithm):

    def Initialize(self):
        # self.SetStartDate(2022, 5, 1)  # Set Start Date
        # self.SetEndDate(2022, 7, 1)
        self.SetStartDate(2022, 6, 1)  # Set Start Date
        self.SetEndDate(2022, 7, 1)
        self.SetCash("USD", 10000) # Binance doesnt have USD pairs, so the account needs to have USDT currency to trade
        # self.SetCash("USDT", 10000) # Set Strategy Cash
        self.SetBrokerageModel(BrokerageName.Bitfinex, AccountType.Margin)
        # self.SetSecurityInitializer(lambda security: security.SetMarketPrice(self.GetLastKnownPrice(security)))
        self.SetSecurityInitializer(self.CustomSecurityInitializer)
        # self.Portfolio.MarginCallModel = MarginCallModel.Null
        self.DefaultOrderProperties = BitfinexOrderProperties()
        self.DefaultOrderProperties.TimeInForce = TimeInForce.GoodTilCanceled
        self.DefaultOrderProperties.PostOnly = False
        self.symbols = []
        self.DataBySymbol = {}
        Pairs = [x + config.CURRENCY for x in config.COINS]
        for Pair in Pairs:
            # self.Debug("HERE")
            try:
                self.symbols.append(self.AddCrypto(Pair, Resolution.Second, Market.Bitfinex).Symbol)
            except:
                if Pair in self.DataBySymbol.keys():
                    symbolData = self.DataBySymbol.pop(Pair, None)
                    self.SubscriptionManager.RemoveConsolidator(Pair, symbolData.Bar_Consolidator)
                    self.SubscriptionManager.RemoveConsolidator(Pair, symbolData.Calculation_Call)
                continue
    
    def CustomSecurityInitializer(self, security):
        # self.Debug(self.Time)
        security.SetMarketPrice(self.GetLastKnownPrice(security))
        security.MarginModel = SecurityMarginModel(3.3)
        security.SetFeeModel(ConstantFeeModel(0))
    
    def OnData(self, data: Slice):
        
        for symbol in self.symbols:
            if not symbol in self.DataBySymbol:
                history = map(lambda x: x[symbol], self.History(timedelta(40), Resolution.Minute))         #self.History(symbol, 40, Resolution.Minute)
                self.DataBySymbol[symbol] = SymbolData(self, symbol, history)
            # if data.ContainsKey(symbol) and self.CurrentSlice.Bars.ContainsKey(symbol):
            #     symbolData = self.DataBySymbol[symbol]
            #     if not self.Portfolio[symbol].Invested:
            #         quantity = 100/self.Securities[symbol].Close
            #         symbolData.ticket = self.MarketOrder(symbol, quantity)

        for symbol in self.DataBySymbol:
            symbolData = self.DataBySymbol[symbol]
            symbolData.OrderHandler(data)

    
    def OnOrderEvent(self, orderEvent: OrderEvent):
        # self.Debug("ORDEREVENT")
        order = self.Transactions.GetOrderById(orderEvent.OrderId)

        for symbol in self.DataBySymbol:
            if orderEvent.Symbol == symbol:
                if orderEvent.Status == OrderStatus.Filled:
                    symbolData = self.DataBySymbol[symbol]
                    symbolData.OnOrderEvent(orderEvent)

        # if orderEvent.Status == OrderStatus.Filled: 
        #     self.Debug("{0}: {1}: {2}".format(self.Time, order.Type, orderEvent))

    # def OnEndOfAlgorithm(self):
    #     for symbol in self.DataBySymbol:
    #         symbolData = self.DataBySymbol[symbol]
    #         self.Debug(f" {symbol} {symbolData.Orders_Sent}")          

class SymbolData():

    def OnOrderEvent(self, orderEvent: OrderEvent):
        # self.Debug("ORDEREVENT")
        order = self.Transactions.GetOrderById(orderEvent.OrderId)

    def __init__(self, algorithm, symbol, history):
        self.algorithm = algorithm
        self.symbol = symbol
        # self.data = data
        # self.algorithm.Debug(algorithm.Securities[self.symbol].Price)
        self.sma = SimpleMovingAverage(config.SMA_PERIOD)
        algorithm.WarmUpIndicator(self.symbol, self.sma, timedelta(minutes=1))
        self.count = 0
        # self.OrderHandler(data)
        self.Stop_Loss_Long = (1-(config.STOPLOSS/100))
        self.Stop_Loss_Short = (1+(config.STOPLOSS/100))
        self.Wait_After_Order = config.WAIT
        self.Threshold = config.THRESHOLD/100
        self.Order_Sent_Time = None
        self.Limit_Sell_Time = None
        self.Limit_Buy_Time_Short =None
        self.Current_Order = None
        self.Unfilled_Limit_Buy_Order = False
        self.Unfilled_Limit_Sell_Order = False
        self.Unfilled_Limit_Sell_Order_Short = False
        self.Limit_Price_Buy_Long = None
        self.Limit_Price_Sell_Long = None
        self.Limit_Buy_Long = config.LIMIT_BUY_LONG
        self.Limit_Sell_Long = config.LIMIT_SELL_LONG
        self.Remaining_Quantity_Lmt_Buy_Long = None
        self.Remaining_Quantity_Lmt_Sell_Short = None
        self.Minimum_Order_Size = self.algorithm.Securities[self.symbol].SymbolProperties.MinimumOrderSize
        self.symbol.ticket_LmtBuy = None
        self.symbol.ticket_LmtSell = None
        self.symbol.ticket_Stop_Long = None

        self.symbol.ticket_LmtSell_Short = None
        self.symbol.ticket_LmtBuyShort = None
        self.symbol.ticket_Stop_Short = None
        self.Long_Stop = None
        self.Short_Stop = None
        self.my_quantity = None


        self.Abs_Long_Buy = None
        self.Average_Long_Buy = None
        self.Long_Fill_Distance_LmtBuy = None

        self.Abs_Long_Sell = None
        self.Average_Long_Sell = None
        self.Long_Fill_Distance_LmtSell = None


        self.Abs_Short_Sell = None
        self.Average_Short_Sell = None
        self.Short_Fill_Distance_LmtSell = None

        self.Abs_Short_Cover = None
        self.Average_Short_Cover = None
        self.Short_Fill_Distance_Cover = None

        self.symbol.ticket_switch_short = None
        self.symbol.ticket_switch_long = None

        # self.Order_Status_List = [OrderStatus.New, OrderStatus.]
        self.Limit_Buy_Short= config.LIMIT_BUY_SHORT
        self.Limit_Sell_Short = config.LIMIT_SELL_SHORT
        # self.Order_Quantity = config.ORDER_QUANTITY_IN_USDT

        self.Current_SMA = None
        self.Current_Ask = None
        self.Current_Bid = None

        self.Minimum_Order_Size = None

        self.Orders_Sent = 0

        self.Bar_Consolidator = TradeBarConsolidator(timedelta(minutes=1))
        algorithm.SubscriptionManager.AddConsolidator(symbol, self.Bar_Consolidator)
        self.Bar_Consolidator.DataConsolidated += self.OnDataConsolidated


        

        # for bar in history:
        #     # if symbol == row.Index[0]:
        #     bar = TradeBar(bar.EndTime - timedelta(minutes=1), symbol, bar.Open, bar.High, bar.Low, bar.Close, 10000, bar.Period)
        #     self.Bar_Consolidator.Update(bar)

    # def OnOrderEvent(self, orderEvent: OrderEvent):
    #     self.Debug("ORDEREVENT")
    #     order = self.Transactions.GetOrderById(orderEvent.OrderId)
    #     if orderEvent.Status == OrderStatus.Filled: 
    #         self.Debug("{0}: {1}: {2}".format(self.Time, order.Type, orderEvent))


        self.No_Open_Long_Position = True
        self.No_Open_Long_Sell_Order = True
        self.No_Open_Long_Stop_Order = True
        self.No_Open_Long_Buy_Order = True

        self.symbol.ticket_Stop_Long = None
        self.symbol.ticket_Long_Limit_Sell = None
        self.symbol.ticket_Long_Limit_Buy = None



        self.No_Open_Short_Position = True
        self.No_Open_Short_Buy_Order = True
        self.No_Open_Short_Stop_Order = True
        self.No_Open_Short_Sell_Order = True

        self.symbol.ticket_Stop_Short = None
        self.symbol.ticket_Short_Limit_Buy = None
        self.symbol.ticket_Short_Limit_Sell = None

        if self.symbol == "1INCHUSD":
            self.cash_symbol == "1INCH"
        if self.symbol == "AAVEUSD":
            self.cash_symbol == "AAVE"
        if self.symbol == "ADAUSD":
            self.cash_symbol == "ADA"
        if self.symbol == "ALGOUSD":
            self.cash_symbol == "ALGO"
        if self.symbol == "AMPLUSD":
            self.cash_symbol == "AMPL"
        if self.symbol == "ATOMUSD":
            self.cash_symbol == "ATOM"
        if self.symbol == "AVAXUSD":
            self.cash_symbol == "AVAX"
        if self.symbol == "BCHNUSD":
            self.cash_symbol == "BCHN"
        if self.symbol == "BSVUSD":
            self.cash_symbol == "BSV"
        if self.symbol == "BTCUSD":
            self.cash_symbol == "BTC"
        if self.symbol == "COMPUSD":
            self.cash_symbol == "COMP"
        if self.symbol == "DAIUSD":
            self.cash_symbol == "DAI"
        if self.symbol == "DASHUSD":
            self.cash_symbol == "DASH"
        if self.symbol == "DOGEUSD":
            self.cash_symbol == "DOGE"
        if self.symbol == "DOTUSD":
            self.cash_symbol == "DOT"
        if self.symbol == "DUSKUSD":
            self.cash_symbol == "DUSK"
        if self.symbol == "EGLDUSD":
            self.cash_symbol == "EGLD"
        if self.symbol == "EOSUSD":
            self.cash_symbol == "EOS"
        if self.symbol == "ETCUSD":
            self.cash_symbol == "ETC"
        if self.symbol == "ETHUSD":
            self.cash_symbol == "ETH"
        if self.symbol == "FILUSD":
            self.cash_symbol == "FIL"
        if self.symbol == "FTMUSD":
            self.cash_symbol == "FTM"
        if self.symbol == "ICPUSD":
            self.cash_symbol == "ICP"
        if self.symbol == "IOTAUSD":
            self.cash_symbol == "IOTA"
        if self.symbol == "LEOUSD":
            self.cash_symbol == "LEO"
        if self.symbol == "LINKUSD":
            self.cash_symbol == "LINK"
        if self.symbol == "LTCUSD":
            self.cash_symbol == "LTC"
        if self.symbol == "LUNAUSD":
            self.cash_symbol == "LUNA"
        if self.symbol == "MANAUSD":
            self.cash_symbol == "MANA"
        if self.symbol == "MKRUSD":
            self.cash_symbol == "MKR"
        if self.symbol == "NEARUSD":
            self.cash_symbol == "NEAR"
        if self.symbol == "NEOUSD":
            self.cash_symbol == "NEO"
        if self.symbol == "OMGUSD":
            self.cash_symbol == "OMG"
        if self.symbol == "PNKUSD":
            self.cash_symbol == "PNK"
        if self.symbol == "REQUSD":
            self.cash_symbol == "REQ"
        if self.symbol == "SOLUSD":
            self.cash_symbol == "SOL"
        if self.symbol == "SUSHIUSD":
            self.cash_symbol == "SUSHI"
        if self.symbol == "TERRAUSTUSD":
            self.cash_symbol == "TERRAAUST"
        if self.symbol == "TRXUSD":
            self.cash_symbol == "TRX"
        if self.symbol == "UNIUSD":
            self.cash_symbol == "UNI"
        if self.symbol == "VETUSD":
            self.cash_symbol == "VET"
        if self.symbol == "XAUTUSD":
            self.cash_symbol == "XAUT"
        if self.symbol == "XDCUSD":
            self.cash_symbol == "XDC"
        if self.symbol == "XLMUSD":
            self.cash_symbol == "XLM"
        if self.symbol == "XMRUSD":
            self.cash_symbol == "XMR"
        if self.symbol == "XRPUSD":
            self.cash_symbol == "XRP"
        if self.symbol == "XTZUSD":
            self.cash_symbol == "XTZ"
        if self.symbol == "YFIUSD":
            self.cash_symbol == "YFI"
        if self.symbol == "ZECUSD":
            self.cash_symbol == "ZEC"
        if self.symbol == "ZRXUSD":
            self.cash_symbol == "ZRX"
    

        ##########################################################################################


        self.Order_Tag_List = ["LONG BUY", "LONG SELL", "LONG STOP", "SHORT SELL", "SHORT COVER", "SHORT STOP", "UNEXPECTED", "QUANTITY WITHOUT PERMISSION"]
        self.User_Cancelled = False
        self.Entry_Time_Long = None
        self.Entry_Time_Short = None
        self.Interval = timedelta(seconds=config.WAIT)
        self.Long_Stop_Price = None
        self.Order_Permission = True
        self.Order_Dictionary = {"LONG BUY" : "NOT PLACED", "LONG SELL" : "NOT PLACED", "LONG STOP" : "NOT PLACED"}

    def OnDataConsolidated(self, sender, bar):
        self.sma.Update(IndicatorDataPoint(bar.EndTime, bar.Close))
        # self.OrderHandler()
    

    def OrderHandler(self, data):
        
        self.Lot_Size = self.algorithm.Securities[self.symbol].SymbolProperties.LotSize
       
        self.Minimum_Order_Size = (self.algorithm.Securities[self.symbol].SymbolProperties.MinimumOrderSize * self.algorithm.Securities[self.symbol].Price)
        self.Current_SMA = self.sma.Current.Value
        self.Current_Ask = self.algorithm.Securities[self.symbol].AskPrice
        self.Current_Bid = self.algorithm.Securities[self.symbol].BidPrice
        
        self.Minimum_Price_Variation = self.algorithm.Securities[self.symbol].SymbolProperties.MinimumPriceVariation

        # if not self.Order_Permission:
        #     if self.cash_symbol in self.algorithm.Portfolio.CashBook:
                  
        #         quantity = self.algorithm.Portfolio.CashBook[self.cash_symbol].Amount
        #         if quantity > 0:
        #             self.algorithm.MarketOrder(self.symbol, -quantity, tag = "QUANTITY WITHOUT PERMISSION")
        #         if quantity < 0:
        #             self.algorithm.MarketOrder(self.symbol, abs(quantity), tag = "QUANTITY WITHOUT PERMISSION")



        if self.algorithm.Securities[self.symbol].Price > self.Current_SMA:
            
            if self.cash_symbol in self.algorithm.Portfolio.CashBook:
        
                quantity = self.algorithm.Portfolio.CashBook[self.cash_symbol].Amount
                if quantity != 0: 
                    return

            else:
                if self.algorithm.Portfolio[self.symbol].Quantity != 0:
                    return

            if self.Order_Dictionary.get("LONG BUY") == "NOT PLACED":
             
                if self.cash_symbol in self.algorithm.Portfolio.CashBook:
                   
                  
                    quantity = self.algorithm.Portfolio.CashBook[self.cash_symbol].Amount
                    if quantity != 0:
                        self.algorithm.Debug("WTF")
                    if quantity == 0:
                        quantity = config.POSITION / (0.99 *(self.Current_Bid * self.Limit_Buy_Long))

            
                        entry_price = self.Current_Bid * self.Limit_Buy_Long
                        quantity = round(quantity, 3)
                        entry_price = round(entry_price, 5)
                     
                        if quantity * self.algorithm.Securities[self.symbol].Price > (self.Minimum_Order_Size * 1.0001):
                            self.algorithm.LimitOrder(self.symbol, quantity, entry_price, tag = "LONG BUY")
                            self.Order_Permission = False
                            self.Entry_Time_Long = self.algorithm.Time
                            self.Order_Dictionary["LONG BUY"] = "PLACED"
                else:
                   
                    quantity = config.POSITION / (0.99 *(self.Current_Bid * self.Limit_Buy_Long))

                    
                    entry_price = self.Current_Bid * self.Limit_Buy_Long
                    quantity = round(quantity, 3)
                    entry_price = round(entry_price, 5)
                 
                    if quantity > 0 and (quantity * entry_price) > self.Minimum_Order_Size:
                        
                        self.algorithm.LimitOrder(self.symbol, quantity, entry_price, tag = "LONG BUY")
                        self.Order_Permission = False
                        self.Entry_Time_Long = self.algorithm.Time
                        self.Order_Dictionary["LONG BUY"] = "PLACED"

        open_orders = self.algorithm.Transactions.GetOpenOrders(self.symbol)
        for Order in open_orders:
            if self.Order_Dictionary["LONG BUY"] == "PLACED":
                if Order.Status == OrderStatus.Submitted or Order.Status == OrderStatus.PartiallyFilled or Order.Status == OrderStatus.UpdateSubmitted:
                    
                    if Order.Quantity * self.Current_Bid > self.Minimum_Order_Size and Order.Quantity > 0:
                        # self.algorithm.Debug(self.algorithm.Time)
                        if self.algorithm.Time > (self.Entry_Time_Long + self.Interval):
                            order_tickets = self.algorithm.Transactions.GetOpenOrderTickets(self.symbol)
                            for order_ticket in order_tickets:
                                if order_ticket.OrderId == Order.Id:
                                    ticket = order_ticket
                            entry_price = self.Current_Bid * self.Limit_Buy_Long
                            entry_price = round(entry_price, 5)
                            quantity = round(Order.Quantity, 3)
                            Update_Settings = UpdateOrderFields()
                            Update_Settings.LimitPrice= entry_price
                            Update_Settings.Quantity = quantity
                            Update_Settings.Tag = "LONG BUY"
                            Update_Order = order_ticket.Update(Update_Settings)
                            self.Entry_Time_Long = self.algorithm.Time
                            if Update_Order.IsSuccess:
                                pass
                            else:
                                self.Order_Permission = False
                                
                               

        


        if self.Order_Dictionary["LONG BUY"] == "FILLED":
            # self.algorithm.Debug("PERMISSION")
            if self.cash_symbol in self.algorithm.Portfolio.CashBook:
                # self.algorithm.Debug("IN BOOK")
                quantity = self.algorithm.Portfolio.CashBook[self.cash_symbol].Amount
                if quantity > 0:
                    # self.algorithm.Debug("QUANTITY > 0") 
                    exit_price = self.Current_Ask * self.Limit_Sell_Long
                    exit_price = round(exit_price, 5)
                    self.algorithm.LimitOrder(self.symbol, -quantity, exit_price, tag = "LONG SELL")
                    self.Long_Stop_Price = self.algorithm.Portfolio[self.symbol].AveragePrice * self.Stop_Loss_Long
                    self.Long_Exit_Time = self.algorithm.Time
                    self.Order_Permission = False
                    self.Order_Dictionary["LONG BUY"] = "NOT PLACED"
                    self.Order_Dictionary["LONG SELL"] = "PLACED"





        open_orders = self.algorithm.Transactions.GetOpenOrders(self.symbol)
        for Order in open_orders:
            if self.Order_Dictionary["LONG SELL"] == "PLACED":
                if Order.Status == OrderStatus.Submitted or Order.Status == OrderStatus.PartiallyFilled or Order.Status == OrderStatus.UpdateSubmitted:
                    
                    if ((abs(Order.Quantity)) * self.Current_Ask) > self.Minimum_Order_Size and Order.Quantity < 0:
                        if self.algorithm.Time > (self.Long_Exit_Time + self.Interval):
                            order_tickets = self.algorithm.Transactions.GetOpenOrderTickets(self.symbol)
                            for order_ticket in order_tickets:
                                if order_ticket.OrderId == Order.Id:
                                    ticket = order_ticket
                            entry_price = self.Current_Ask * self.Limit_Sell_Long
                            entry_price = round(entry_price, 5)
                            quantity = round(Order.Quantity, 3)
                            Update_Settings = UpdateOrderFields()
                            Update_Settings.LimitPrice= entry_price
                            Update_Settings.Quantity = quantity
                            Update_Settings.Tag = "LONG SELL"
                            Update_Order = order_ticket.Update(Update_Settings)
                            self.Long_Exit_Time = self.algorithm.Time
                            if Update_Order.IsSuccess:
                                pass
                            else:
                                self.Order_Permission = False
                    
        if self.Long_Stop_Price is not None:
            if self.algorithm.Securities[self.symbol].Price < self.Long_Stop_Price:
                quantity = self.algorithm.Portfolio.CashBook[self.cash_symbol].Amount
                self.algorithm.MarketOrder(self.symbol, -quantity, tag = "LONG STOP")
                self.Order_Permission = False
                self.Order_Dictionary["LONG STOP"] == "PLACED"

                







    def OnOrderEvent(self, orderEvent):
        order = self.algorithm.Transactions.GetOrderById(orderEvent.OrderId)
        open_orders = self.algorithm.Transactions.GetOpenOrders(self.symbol)
        # cash_book = self.algorithm.Portfolio.CashBook[self.symbol]
        symbol_open_quantity = self.algorithm.Transactions.GetOpenOrdersRemainingQuantity(self.symbol)
   

        


        if order.Status == OrderStatus.Filled:
            if self.Order_Dictionary.get("LONG BUY") == "PLACED":
                self.Order_Dictionary["LONG BUY"] = "FILLED"
            
            if self.Order_Dictionary.get("LONG SELL") == "PLACED":
                self.Order_Dictionary["LONG SELL"] = "FILLED"

            if self.Order_Dictionary.get("LONG STOP") == "PLACED":
                self.Order_Dictionary["LONG STOP"] = "FILLED"

            self.Order_Permission = True
            # if self.cash_symbol in self.algorithm.Portfolio.CashBook:
            #     quantity = self.algorithm.Portfolio.CashBook[self.cash_symbol].Amount
                
            #     if not quantity > 0:
            #         self.Order_Permission = False
            #         self.algorithm.Transactions.CancelOpenOrders(self.symbol)
            #     if quantity > 0:
            #         self.Order_Permission = True
            # if self.cash_symbol not in self.algorithm.Portfolio.CashBook:
            #     if self.algorithm.Portfolio[self.symbol].Quantity == 0:
            #         # self.algorithm.Transactions.CancelOpenOrders(self.symbol)
            #         self.Order_Permission = True


        if order.Status == OrderStatus.PartiallyFilled:
            if (abs(order.AbsoluteFillQuantity * self.Securities[self.symbol].AskPrice)) < self.Minimum_Order_Size:
                self.algorithm.Transactions.CancelOrder(order.Id)
                if self.Order_Dictionary.get("LONG BUY") == "PLACED":
                    self.Order_Dictionary["LONG BUY"] = "FILLED"
                
                if self.Order_Dictionary.get("LONG SELL") == "PLACED":
                    self.Order_Dictionary["LONG SELL"] = "FILLED"

                if self.Order_Dictionary.get("LONG STOP") == "PLACED":
                    self.Order_Dictionary["LONG STOP"] = "FILLED"
            self.User_Cancelled = True
            if self.Time > (self.Entry_Time_Long + self.Interval + timedelta(seconds=10)):
                self.algorithm.Transactions.CancelOrder(order.Id)
                if self.Order_Dictionary.get("LONG BUY") == "PLACED":
                    self.Order_Dictionary["LONG BUY"] = "FILLED"
                
                if self.Order_Dictionary.get("LONG SELL") == "PLACED":
                    self.Order_Dictionary["LONG SELL"] = "FILLED"

                if self.Order_Dictionary.get("LONG STOP") == "PLACED":
                    self.Order_Dictionary["LONG STOP"] = "FILLED"

                self.User_Cancelled = True