年化18.9%的创业板趋势策略,使用模块化策略模板重构(代码+数据)

原创文章第590篇,专注“AI量化投资、世界运行的规律、个人成长与财富自由"。

昨天咱们分享的文章:”以交易为生“,基础设施很重要。

传统backtrader写策略的步骤是如下:

1、定义因子,比如动量roc:

self.roc = bt.indicators.ROC(self.data, period=self.p.period)

2、写策略逻辑,主要是next:

class roc_trend(bt.Strategy):
    # 参数定义
    params = dict(
        period=20,  # 动量周期
    )

    def __init__(self):
        self.roc = bt.indicators.ROC(self.data, period=self.p.period)
        # self.roc = bt.talib.ROC(self.data, period=self.p.period)

    def next(self):
        if not self.position:  # not in the market
            if self.roc[0] > 0.08:  # if fast crosses slow to the upside
                self.order_target_percent(self.data, 0.99)  # enter long
                # self.buy()  # enter long

        elif self.roc[0] < 0:  # in the market & cross to the downside
            self.close()  # close long position

我们看下在算子化的模式下,如何写策略:

数据通过calc_expr直接计算,无论多少个因子:

df = CSVDataloader.get_df(['159915.SZ'], set_index=True, start_date='20120101')
df = CSVDataloader.calc_expr(df, ['roc(close,20)'], ['roc_20'])
df

图片

然后通过SelectBySignal即可,输入买入信号规则,卖出信号规则即可:

engine = BacktraderEngine(df, start=datetime(2005, 1, 1))
engine.run_algo_strategy(algo_list=[
    SelectBySignal(rules_buy=['roc_20>0.08'], rules_sell=['roc_20<0']),
    WeightEqually(),
    ReBalance()
])

打印出交易记录:

图片

然后看下回测结果:

图片

图片

大家拿到代码,直接运行对比这两个策略的写法,能够直观地感受到模块化的效率:

图片

代码下载:AI量化实验室——2024量化投资的星辰大海

交易为生之美

应该没有人天生就是坏的。

多数我们认为的坏人,都是相对自己的标准。

这个标准是什么?更多是利益,披着道德外衣的利益。

哪里存在最多利益冲突?

职场,邻里—尤其是农村,类似地缘冲突。城市里关系冲突,以职场为主。

出去参加活动,大家都温文尔雅,表现的风度翩翩。

职场里尤其公司下行时,刷锅,扣帽子,争底盘,抢功劳,事情就多了。

人生苦短,有意义吗?——其实很没意思。我们应该花心思在创造性的研究上

你有足够的价值,有就有交换的选择权。

进一步讲,如果你够强,你的周遭的环境就会变好。——盖茨说,在你强大之前,不要太在意你的自尊,没有人在意你的自尊。

你要做的事情,专注让自己变强大,然后周围的人都会变友善。

而不是讨好,讨好获得的只有怜悯——而且不是所有人都会共情。

交易的江湖

有没有没有人际江湖的地方——交易。

除了交易很难外—只要你具备稳定获利的能力,交易几乎应有一切优点。

完全线上,没有交付环节,没有客户要服务,不需要销售或营销技巧。

更没有同事要讨好,没有上司要伺候。

策略在精不在多,有一两项武艺在身,足以行走江湖,忘情山水。

教学相长,通过输出倒逼学习与成长。

吾日三省吾身

突发的时间,打算原本既定的生活与工作节奏。

顺其自然,让自己偶尔停一会,发现也挺好。

这世界离了谁都一样转,不要认为自己多重要。

停下来想想,看看。

想起《世界尽头的咖啡馆》——

图片

你为什么来到这里?——你的PFE(Perpose For Existing)是什么?

你害怕死亡吗?

你满足吗?

我们大多数人活在别人定义的规则里。

好好学习,找份好工作,结婚,生娃,孩子教育…

在别人眼里,也许你是成功的,你应该是幸福的。

但,你满足吗?

你想过什么样的生活?

很多人如此害怕失业,不敢有一点点的,GAP时间?

在一些故事里,比如生病的蔡磊,如果再给他几年,他应该不会像之前那帮卖命工作和无趣生活。

想清楚自己要什么,想过什么样的生活,然后尽全力去追求。

历史文章:

想”以交易为生“,基础设施很重要。

quantlab5.1代码发布,含10+个策略以及期货实盘对接(代码+数据)

AI量化实验室——2024量化投资的星辰大海

相关推荐

  1. 使用一等对象函数重构策略模式

    2024-07-20 14:02:01       26 阅读
  2. 策略模式代码实践示例

    2024-07-20 14:02:01       37 阅读
  3. Redis 数据持久策略数据过期策略

    2024-07-20 14:02:01       22 阅读
  4. 设计模式(19):策略模式

    2024-07-20 14:02:01       31 阅读
  5. 策略模式详解+代码案例

    2024-07-20 14:02:01       30 阅读
  6. 设计模式-策略模式-使用

    2024-07-20 14:02:01       27 阅读
  7. 策略模式--在SpringBoot中使用

    2024-07-20 14:02:01       44 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-07-20 14:02:01       52 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-07-20 14:02:01       54 阅读
  3. 在Django里面运行非项目文件

    2024-07-20 14:02:01       45 阅读
  4. Python语言-面向对象

    2024-07-20 14:02:01       55 阅读

热门阅读

  1. Vue中Key的作用

    2024-07-20 14:02:01       14 阅读
  2. VMware 虚拟机 ping 不通原因排查

    2024-07-20 14:02:01       20 阅读
  3. 数据响应式(Object.defineProperty和Proxy)

    2024-07-20 14:02:01       14 阅读
  4. 云计算的三种服务模式

    2024-07-20 14:02:01       17 阅读
  5. wps的xls文件,如何过滤掉空白没有数据的行

    2024-07-20 14:02:01       16 阅读
  6. Provider(5) - AdjustChannelsBufferProvider

    2024-07-20 14:02:01       16 阅读
  7. lua 游戏架构 之 SceneLoad场景加载(一)

    2024-07-20 14:02:01       19 阅读
  8. Thread类的基本用法

    2024-07-20 14:02:01       15 阅读
  9. C?C++?

    2024-07-20 14:02:01       16 阅读
  10. ArcGIS Pro SDK (九)几何 10 弧

    2024-07-20 14:02:01       15 阅读
  11. AB测试介绍

    2024-07-20 14:02:01       18 阅读