mirror of
https://github.com/microsoft/qlib.git
synced 2026-07-06 20:41:09 +08:00
* Use dict-like configuration * Rename from_neutrader to integration * SAOE strategy * Optimize file structure * Optimize code * Format code * create_state_maintainer_recursive * Remove explicit time_per_step * CI test passed * Resolve PR comments * Pass all CI * Minor test issue * Refine SAOE adapter logic * Minor bugfix * Cherry pick updates * Resolve PR comments * CI issues * Refine adapter & saoe_data logic * Resolve PR comments * Resolve PR comments * Rename ONE_SEC to EPS_T; complete backtest loop * CI issue * Resolve Yuge's PR comments
32 lines
999 B
Python
32 lines
999 B
Python
# Copyright (c) Microsoft Corporation.
|
|
# Licensed under the MIT License.
|
|
|
|
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:
|
|
super().__init__()
|
|
|
|
self._order = order
|
|
self._trade_range = trade_range
|
|
|
|
def generate_trade_decision(self, execute_result: list = 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)
|