mirror of
https://github.com/microsoft/qlib.git
synced 2026-07-23 04:01:00 +08:00
* Workflow runnable * CI * Slight changes to make the workflow runnable. The changes of handler/provider should be reverted before merging. * Train experiment successful * Refine handler & provider * test passed * Ready to test on server * Minor * Test passed * TWAP training * Add PPOReward * Add a FIXME * Refine PPO reward according to PR comments * Minor * Resolve PR comments * CI issues * CI issues * CI issues
34 lines
1.0 KiB
Python
34 lines
1.0 KiB
Python
# Copyright (c) Microsoft Corporation.
|
|
# Licensed under the MIT License.
|
|
|
|
from __future__ import annotations
|
|
|
|
from qlib.backtest import Order
|
|
from qlib.backtest.decision import OrderHelper, TradeDecisionWO, TradeRange
|
|
from qlib.strategy.base import BaseStrategy
|
|
|
|
|
|
class SingleOrderStrategy(BaseStrategy):
|
|
"""Strategy used to generate a trade decision with exactly one order."""
|
|
|
|
def __init__(
|
|
self,
|
|
order: Order,
|
|
trade_range: TradeRange | None = None,
|
|
) -> None:
|
|
super().__init__()
|
|
|
|
self._order = order
|
|
self._trade_range = trade_range
|
|
|
|
def generate_trade_decision(self, execute_result: list | None = None) -> TradeDecisionWO:
|
|
oh: OrderHelper = self.common_infra.get("trade_exchange").get_order_helper()
|
|
order_list = [
|
|
oh.create(
|
|
code=self._order.stock_id,
|
|
amount=self._order.amount,
|
|
direction=self._order.direction,
|
|
),
|
|
]
|
|
return TradeDecisionWO(order_list, self, self._trade_range)
|