self.log(f'Bought @{order.executed.price:.2f}, Cost={order.executed.value:.2f}, Comm={order.executed.comm:.2f}') elif order.issell(): # Заявка на продажу self.log(f'Sold @{order.executed.price:.2f}, Cost={order.executed.value:.2f}, Comm={order.executed.comm:.2f}') self.order = None # Сбрасываем заявку на вход в позицию def notify_trade(self, trade): """Изменение статуса позиции""" if trade.isclosed: # Если позиция закрыта self.log(f'Trade Profit, Gross={trade.pnl:.2f}, NET={trade.pnlcomm:.2f}') if __name__ == '__main__': # Точка входа при запуске этого скрипта cerebro = bt.Cerebro() # Инициируем "движок" BackTrader clientCode = '<Ваш код клиента>' # Код клиента (присваивается брокером) firmId = '<Код фирмы>' # Код фирмы (присваивается брокером) # symbol = 'TQBR.GAZP' symbol = 'SPBFUT.SiH2' cerebro.addstrategy(Brackets, LimitPct=1) # Добавляем торговую систему с лимитным входом в n% store = QKStore() # Хранилище QUIK (QUIK на локальном компьютере) # store = QKStore(Host='<Ваш IP адрес>') # Хранилище QUIK (К QUIK на удаленном компьютере обращаемся по IP или названию) broker = store.getbroker(use_positions=False) # Брокер со счетом по умолчанию (срочный рынок РФ) # broker = store.getbroker(use_positions=False, ClientCode=clientCode, FirmId=firmId, TradeAccountId='L01-00000F00', LimitKind=2, CurrencyCode='SUR', IsFutures=False) # Брокер со счетом фондового рынка РФ cerebro.setbroker(broker) # Устанавливаем брокера data = store.getdata(dataname=symbol, timeframe=bt.TimeFrame.Minutes, compression=1, fromdate=datetime(2022, 2, 16), sessionstart=time(7, 0), LiveBars=True) # Исторические и новые минутные бары за все время cerebro.adddata(data) # Добавляем данные cerebro.addsizer(bt.sizers.FixedSize, stake=1000) # Кол-во акций для покупки/продажи cerebro.run() # Запуск торговой системы
if not trade.isclosed: # Если позиция не закрыта return # то статус позиции не изменился, выходим, дальше не продолжаем self.log( f'Trade Profit, Gross={trade.pnl:.2f}, NET={trade.pnlcomm:.2f}') if __name__ == '__main__': # Точка входа при запуске этого скрипта cerebro = bt.Cerebro() # Инициируем "движок" BackTrader symbol = 'SPBFUT.SiH1' # clientCode = '<Ваш код клиента>' # Код клиента (присваивается брокером) # symbol = 'TQBR.GAZP' cerebro.addstrategy(LiveTradingEvents) # Добавляем торговую систему # broker = QKBroker(Host='192.168.1.7') # Можно вызывать данные напрямую (не рекомендуется) store = QKStore(Host='192.168.1.7') # Хранилище QUIK broker = store.getbroker( ) # Брокер со счетом по умолчанию (срочный рынок РФ) # broker = store.getbroker(ClientCode=clientCode, FirmId='MC0063100000', TradeAccountId='L01-00000F00', LimitKind=2, CurrencyCode='SUR') # Брокер со счетом фондового рынка РФ cerebro.setbroker(broker) # Устанавливаем брокера data = store.getdata( dataname=symbol, timeframe=bt.TimeFrame.Minutes, compression=1, fromdate=datetime(2021, 2, 15, 10, 00), LiveBars=True) # Исторические и новые минутные бары за все время cerebro.adddata(data) # Добавляем данные cerebro.run() # Запуск торговой системы