底层替换了pybroker,其实我们仅依赖pandas(numpy),大家读起代码更容易了。
现在我们要把传统一些经典的规则策略和系统实现一下。
有同学问,为何为直接把gplearn整合进来,deepalphagen端对端因子挖掘整合进来。
这是一个递进的过程。
机器学习时代,不意味着传统规则量化就完全失效了。
咱们的框架这么写指标,我们支持大家引入ta-lib或者tulipy(这个可以直接使用pip安装)
def SMA(arr: pd.Series, n: int) -> pd.Series:
"""
Returns `n`-period simple moving average of array `arr`.
"""
return pd.Series(arr).rolling(n).mean()
def HIGH(arr: pd.Series, n: int) -> pd.Series:
return pd.Series(arr).shift(1).rolling(n).max()
def LOW(arr: pd.Series, n: int) -> pd.Series: return pd.Series(arr).shift(1).rolling(n).min() import tulipy as ti def ATR(high: pd.Series, low: pd.Series, close: pd.Series, n: int) -> pd.Series: hi, lo, c_prev = pd.Series(high).shift(1), pd.Series(low).shift(1),pd.Series(close).shift(1) tr = np.max([hi - lo, (c_prev - hi).abs(), (c_prev - lo).abs()], axis=0) atr = pd.Series(tr).rolling(n).mean().bfill() return atr
类似于tradingview,指标可以直接可视化显示出来,这个还是非常方便的。
简单的海龟策略的代码——这里仅实现了“突破”买入卖出:
from backtesting import Backtest, Strategy from backtesting.lib import crossover from backtesting.test import * class TurtleStrategy(Strategy): def init(self): price = self.data.Close self.high = self.I(HIGH, price, 20) self.low = self.I(LOW, price, 10) self.atr = self.I(ATR, self.data.High, self.data.Low, price, 20) print(self.atr) def next(self): if self.data.Close[-1] > self.high[-1]: self.buy() if self.data.Close[-1] < self.low[-1]: self.sell() bt = Backtest(GOOG, TurtleStrategy, commission=.002, exclusive_orders=True) stats = bt.run() print(stats) bt.plot()
大家可以前往星球下载最新版本代码:
quantlab3.0系统代码预发布:附年化42%+的机器学习策略案例(小时级数据+代码下载)
发布者:股市刺客,转载请注明出处:https://www.95sca.cn/archives/103604
站内所有文章皆来自网络转载或读者投稿,请勿用于商业用途。如有侵权、不妥之处,请联系站长并出示版权证明以便删除。敬请谅解!