def __init__(self, *args, **kwargs) -> None: super(ReadOnlyStrategy, self).__init__(*args, **kwargs) async def onStart(self, event: Event) -> None: pprint(self.instruments()) pprint(self.positions()) for i in self.instruments(): await self.subscribe(i) async def onTrade(self, event: Event) -> None: pprint(event) async def onOrder(self, event): pprint(event) async def onExit(self, event: Event) -> None: print('Finishing...') if __name__ == "__main__": from aat import TradingEngine, parseConfig cfg = parseConfig(['--trading_type', 'backtest', '--load_accounts', '--exchanges', 'aat.exchange.generic:CSV,{}'.format(os.path.join(os.path.dirname(__file__), 'data', 'aapl.csv')), '--strategies', 'aat.strategy.sample.readonly:ReadOnlyStrategy' ]) print(cfg) t = TradingEngine(**cfg) t.start()
trade.exchange, )) self._trade = False async def onReceived(self, event: Event) -> None: pprint(event) self._trade = True self._received_count += 1 async def onExit(self, event: Event) -> None: print("Finishing...") if __name__ == "__main__": from aat import TradingEngine, parseConfig cfg = parseConfig([ "--trading_type", "backtest", "--load_accounts", "--exchanges", "aat.exchange.generic:CSV,{}".format( os.path.join(os.path.dirname(__file__), "data", "aapl.csv")), "--strategies", "aat.strategy.sample.csv.received:ReceivedStrategy", ]) print(cfg) t = TradingEngine(**cfg) t.start() assert t.strategies[0]._received_count == 64
super(TestCancelAll, self).__init__(*args, **kwargs) self._count = 0 async def onTrade(self, event: Event) -> None: if self._count < 5: await self.newOrder( Order( 1, 10000000, Side.SELL, self.instruments()[0], order_type=OrderType.LIMIT, )) self._count += 1 assert len(self.orders()) == self._count else: await self.cancelAll() assert len(self.orders()) == 0 if __name__ == "__main__": from aat import TradingEngine, parseConfig cfg = parseConfig([ '--trading_type', 'backtest', '--exchanges', 'aat.exchange:SyntheticExchange,1,1000', '--strategies', 'aat.tests.strategy.test_strategies.test_cancel_all::TestCancelAll' ]) print(cfg) t = TradingEngine(**cfg) t.start()
self._trades.append(event.target) # type: ignore async def onPeriodic(self) -> None: o = Order(1, 1, Side.BUY, self.instruments()[0], ExchangeType("testharness")) _ = await self.newOrder(o) self._orders.append(o) async def onExit(self, event: Event) -> None: assert len(self._orders) == len(self._trades) assert len(self._trades) == 334 assert self._trades[0].price == 2 assert self._trades[1].price == 3 assert self._trades[-1].price == 999 if __name__ == "__main__": from aat import TradingEngine, parseConfig cfg = parseConfig([ "--trading_type", "backtest", "--exchanges", "aat.exchange.test.harness:Harness", "--strategies", "aat.exchange.test.harness:TestStrategy", ]) print(cfg) t = TradingEngine(**cfg) t.start()
sys.exit(0) async def onExit(self, event: Event) -> None: print("Finishing...") if __name__ == "__main__": from aat import TradingEngine, parseConfig cfg = parseConfig( [ "--trading_type", "sandbox", "--load_accounts", "--exchanges", "aat.exchange.crypto.coinbase:CoinbaseProExchange,,,,l2", "--strategies", "aat.strategy.sample.coinbase.buy_and_hold:BuyAndHoldCBStrategy", ] ) # OR via config file """ [general] verbose=0 trading_type=sandbox load_accounts=1 [exchange] exchanges=
1, 10000000, Side.SELL, self.instruments()[0], order_type=OrderType.LIMIT, ) ) self._count += 1 assert len(self.orders()) == self._count else: await self.cancelAll() assert len(self.orders()) == 0 if __name__ == "__main__": from aat import TradingEngine, parseConfig cfg = parseConfig( [ "--trading_type", "backtest", "--exchanges", "aat.exchange:SyntheticExchange,1,1000", "--strategies", "aat.tests.strategy.test_strategies.test_cancel_all::TestCancelAll", ] ) print(cfg) t = TradingEngine(**cfg) t.start()
sys.exit(0) async def onExit(self, event: Event) -> None: print("Finishing...") if not os.environ.get("TESTING"): self.performanceCharts(render=True, save=True, save_data=True) if __name__ == "__main__": from aat import TradingEngine, parseConfig cfg = parseConfig([ "--trading_type", "backtest", "--exchanges", "aat.exchange.public.iex:IEX,Tpk_ecc89ddf30a611e9958142010a80043c,True,1m,,,,", # "aat.exchange.public.iex:IEX,Tpk_ecc89ddf30a611e9958142010a80043c,True,1d,20210821", "--strategies", "aat.strategy.sample.iex.momentum:MomentumStrategy,SPY-EQUITY,25,45,-10,10000", ]) """ [general] verbose=0 trading_type=backtest [exchange] exchanges= aat.exchange.public.iex:IEX,Tpk_ecc89ddf30a611e9958142010a80043c,True,1m,,,, [strategy] strategies =
async def onTrade(self, event: Event) -> None: pass async def onTraded(self, event: Event) -> None: self._trades.append(event.target) # type: ignore async def onPeriodic(self): o = await self.newOrder( Order(1, 1, Side.BUY, self.instruments()[0], ExchangeType('testharness'))) self._orders.append(o) async def onExit(self, event: Event) -> None: assert len(self._orders) == len(self._trades) assert len(self._trades) == 334 assert self._trades[0].price == 2 assert self._trades[1].price == 3 assert self._trades[-1].price == 999 if __name__ == "__main__": from aat import TradingEngine, parseConfig cfg = parseConfig([ '--trading_type', 'backtest', '--exchanges', 'aat.exchange.test.harness:Harness', '--strategies', 'aat.exchange.test.harness:TestStrategy' ]) print(cfg) t = TradingEngine(**cfg) t.start()
assert trade.my_order == self._order async def onRejected(self, event: Event) -> None: print("order rejected") import sys sys.exit(0) async def onExit(self, event: Event) -> None: print("Finishing...") if not os.environ.get("TESTING"): self.performanceCharts() if __name__ == "__main__": from aat import TradingEngine, parseConfig cfg = parseConfig( [ "--trading_type", "backtest", "--exchanges", "aat.exchange.public.iex:IEX,Tpk_ecc89ddf30a611e9958142010a80043c,True,1m,,,,", "--strategies", "aat.strategy.sample.iex.buy_and_hold:BuyAndHoldIEXStrategy,FB", ] ) print(cfg) t = TradingEngine(**cfg) t.start()
sys.exit(0) async def onExit(self, event: Event) -> None: print("Finishing...") if not os.environ.get("TESTING"): self.performanceCharts() if __name__ == "__main__": from aat import TradingEngine, parseConfig cfg = parseConfig([ "--trading_type", "backtest", "--exchanges", "aat.exchange.public.iex:IEX,Tpk_ecc89ddf30a611e9958142010a80043c,True,1m,,,,", "--strategies", "aat.strategy.sample.iex.golden_death:GoldenDeathStrategy,SPY", ]) """ [general] verbose=0 trading_type=backtest [exchange] exchanges= aat.exchange.public.iex:IEX,Tpk_ecc89ddf30a611e9958142010a80043c,True,1m,,,, [strategy] strategies = aat.strategy.sample.iex.momentum:MomentumStrategy,SPY-EQUITY,25,45,-10,10000
# pprint(event) pass async def onExit(self, event: Event) -> None: print("Finishing...") if __name__ == "__main__": from aat import TradingEngine, parseConfig cfg = parseConfig( [ "--trading_type", "sandbox", "--load_accounts", "--exchanges", "aat.exchange.crypto.coinbase:CoinbaseProExchange,,,,l2", "--strategies", "aat.strategy.sample.coinbase.readonly:ReadOnlyStrategy", ] ) # or via config file """ [general] verbose=0 trading_type=sandbox load_accounts=1 [exchange] exchanges=
type=InstrumentType.EQUITY, exchange=ExchangeType("iex")) async def onStart(self, event: Event) -> None: await self.subscribe(self._inst) async def onTrade(self, event: Event) -> None: pprint(event) async def onOrder(self, event: Event) -> None: pprint(event) async def onExit(self, event: Event) -> None: print("Finishing...") if __name__ == "__main__": from aat import TradingEngine, parseConfig cfg = parseConfig([ "--trading_type", "backtest", "--exchanges", "aat.exchange.public.iex:IEX,Tpk_ecc89ddf30a611e9958142010a80043c,True,1m,,,,", "--strategies", "aat.strategy.sample.iex.readonly:ReadOnlyStrategy,F", ]) print(cfg) t = TradingEngine(**cfg) t.start()
if __name__ == "__main__": from aat import TradingEngine, parseConfig cfg = parseConfig( [ "--trading_type", "live", "--load_accounts", "--exchanges", "aat.exchange.public.ib:InteractiveBrokersExchange", "--strategies", "aat.strategy.sample.readonly:ReadOnlyStrategy", ] ) print(cfg) t = TradingEngine(**cfg) t.start()