[Add] virtual decorator
This commit is contained in:
parent
2f674f2019
commit
0e67e75d6c
@ -1,6 +1,7 @@
|
|||||||
from vnpy.trader.engine import BaseEngine
|
from vnpy.trader.engine import BaseEngine
|
||||||
from vnpy.trader.object import TickData, OrderData, TradeData
|
from vnpy.trader.object import TickData, OrderData, TradeData
|
||||||
from vnpy.trader.constant import OrderType, Offset, Direction
|
from vnpy.trader.constant import OrderType, Offset, Direction
|
||||||
|
from vnpy.trader.utility import virtual
|
||||||
|
|
||||||
|
|
||||||
class AlgoTemplate:
|
class AlgoTemplate:
|
||||||
@ -63,22 +64,27 @@ class AlgoTemplate:
|
|||||||
""""""
|
""""""
|
||||||
pass
|
pass
|
||||||
|
|
||||||
|
@virtual
|
||||||
def on_stop(self):
|
def on_stop(self):
|
||||||
""""""
|
""""""
|
||||||
pass
|
pass
|
||||||
|
|
||||||
|
@virtual
|
||||||
def on_tick(self, tick: TickData):
|
def on_tick(self, tick: TickData):
|
||||||
""""""
|
""""""
|
||||||
pass
|
pass
|
||||||
|
|
||||||
|
@virtual
|
||||||
def on_order(self, order: OrderData):
|
def on_order(self, order: OrderData):
|
||||||
""""""
|
""""""
|
||||||
pass
|
pass
|
||||||
|
|
||||||
|
@virtual
|
||||||
def on_trade(self, trade: TradeData):
|
def on_trade(self, trade: TradeData):
|
||||||
""""""
|
""""""
|
||||||
pass
|
pass
|
||||||
|
|
||||||
|
@virtual
|
||||||
def on_timer(self):
|
def on_timer(self):
|
||||||
""""""
|
""""""
|
||||||
pass
|
pass
|
||||||
|
@ -4,6 +4,7 @@ from typing import Any, Callable
|
|||||||
|
|
||||||
from vnpy.trader.constant import Interval, Direction, Offset
|
from vnpy.trader.constant import Interval, Direction, Offset
|
||||||
from vnpy.trader.object import BarData, TickData, OrderData, TradeData
|
from vnpy.trader.object import BarData, TickData, OrderData, TradeData
|
||||||
|
from vnpy.trader.utility import virtual
|
||||||
|
|
||||||
from .base import StopOrder, EngineType
|
from .base import StopOrder, EngineType
|
||||||
|
|
||||||
@ -87,48 +88,56 @@ class CtaTemplate(ABC):
|
|||||||
}
|
}
|
||||||
return strategy_data
|
return strategy_data
|
||||||
|
|
||||||
|
@virtual
|
||||||
def on_init(self):
|
def on_init(self):
|
||||||
"""
|
"""
|
||||||
Callback when strategy is inited.
|
Callback when strategy is inited.
|
||||||
"""
|
"""
|
||||||
pass
|
pass
|
||||||
|
|
||||||
|
@virtual
|
||||||
def on_start(self):
|
def on_start(self):
|
||||||
"""
|
"""
|
||||||
Callback when strategy is started.
|
Callback when strategy is started.
|
||||||
"""
|
"""
|
||||||
pass
|
pass
|
||||||
|
|
||||||
|
@virtual
|
||||||
def on_stop(self):
|
def on_stop(self):
|
||||||
"""
|
"""
|
||||||
Callback when strategy is stopped.
|
Callback when strategy is stopped.
|
||||||
"""
|
"""
|
||||||
pass
|
pass
|
||||||
|
|
||||||
|
@virtual
|
||||||
def on_tick(self, tick: TickData):
|
def on_tick(self, tick: TickData):
|
||||||
"""
|
"""
|
||||||
Callback of new tick data update.
|
Callback of new tick data update.
|
||||||
"""
|
"""
|
||||||
pass
|
pass
|
||||||
|
|
||||||
|
@virtual
|
||||||
def on_bar(self, bar: BarData):
|
def on_bar(self, bar: BarData):
|
||||||
"""
|
"""
|
||||||
Callback of new bar data update.
|
Callback of new bar data update.
|
||||||
"""
|
"""
|
||||||
pass
|
pass
|
||||||
|
|
||||||
|
@virtual
|
||||||
def on_trade(self, trade: TradeData):
|
def on_trade(self, trade: TradeData):
|
||||||
"""
|
"""
|
||||||
Callback of new trade data update.
|
Callback of new trade data update.
|
||||||
"""
|
"""
|
||||||
pass
|
pass
|
||||||
|
|
||||||
|
@virtual
|
||||||
def on_order(self, order: OrderData):
|
def on_order(self, order: OrderData):
|
||||||
"""
|
"""
|
||||||
Callback of new order data update.
|
Callback of new order data update.
|
||||||
"""
|
"""
|
||||||
pass
|
pass
|
||||||
|
|
||||||
|
@virtual
|
||||||
def on_stop_order(self, stop_order: StopOrder):
|
def on_stop_order(self, stop_order: StopOrder):
|
||||||
"""
|
"""
|
||||||
Callback of stop order update.
|
Callback of stop order update.
|
||||||
@ -255,12 +264,14 @@ class CtaSignal(ABC):
|
|||||||
""""""
|
""""""
|
||||||
self.signal_pos = 0
|
self.signal_pos = 0
|
||||||
|
|
||||||
|
@virtual
|
||||||
def on_tick(self, tick: TickData):
|
def on_tick(self, tick: TickData):
|
||||||
"""
|
"""
|
||||||
Callback of new tick data update.
|
Callback of new tick data update.
|
||||||
"""
|
"""
|
||||||
pass
|
pass
|
||||||
|
|
||||||
|
@virtual
|
||||||
def on_bar(self, bar: BarData):
|
def on_bar(self, bar: BarData):
|
||||||
"""
|
"""
|
||||||
Callback of new bar data update.
|
Callback of new bar data update.
|
||||||
@ -292,6 +303,7 @@ class TargetPosTemplate(CtaTemplate):
|
|||||||
)
|
)
|
||||||
self.variables.append("target_pos")
|
self.variables.append("target_pos")
|
||||||
|
|
||||||
|
@virtual
|
||||||
def on_tick(self, tick: TickData):
|
def on_tick(self, tick: TickData):
|
||||||
"""
|
"""
|
||||||
Callback of new tick data update.
|
Callback of new tick data update.
|
||||||
@ -301,12 +313,14 @@ class TargetPosTemplate(CtaTemplate):
|
|||||||
if self.trading:
|
if self.trading:
|
||||||
self.trade()
|
self.trade()
|
||||||
|
|
||||||
|
@virtual
|
||||||
def on_bar(self, bar: BarData):
|
def on_bar(self, bar: BarData):
|
||||||
"""
|
"""
|
||||||
Callback of new bar data update.
|
Callback of new bar data update.
|
||||||
"""
|
"""
|
||||||
self.last_bar = bar
|
self.last_bar = bar
|
||||||
|
|
||||||
|
@virtual
|
||||||
def on_order(self, order: OrderData):
|
def on_order(self, order: OrderData):
|
||||||
"""
|
"""
|
||||||
Callback of new order data update.
|
Callback of new order data update.
|
||||||
|
@ -385,3 +385,14 @@ class ArrayManager(object):
|
|||||||
if array:
|
if array:
|
||||||
return up, down
|
return up, down
|
||||||
return up[-1], down[-1]
|
return up[-1], down[-1]
|
||||||
|
|
||||||
|
|
||||||
|
def virtual(func: "callable"):
|
||||||
|
"""
|
||||||
|
mark a function as "virtual", which means that this function can be override.
|
||||||
|
any base class should use this or @abstractmethod to decorate all functions
|
||||||
|
that can be (re)implemented by subclasses.
|
||||||
|
"""
|
||||||
|
return func
|
||||||
|
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user