コード例 #1
0
    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()
コード例 #2
0
                    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
コード例 #3
0
        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()
コード例 #4
0
        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()
コード例 #5
0
        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=
コード例 #6
0
                    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()
コード例 #7
0
ファイル: momentum.py プロジェクト: ynzheng/aat
        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 =
コード例 #8
0
ファイル: harness.py プロジェクト: galdamour/aat
    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()
コード例 #9
0
        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()
コード例 #10
0
ファイル: golden_death.py プロジェクト: ynzheng/aat
        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
コード例 #11
0
        # 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=
コード例 #12
0
ファイル: readonly.py プロジェクト: ynzheng/aat
                                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()
コード例 #13
0
ファイル: readonly.py プロジェクト: ynzheng/aat
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()