做了一个支持多策略的全球市场投资交易提醒工具

57 天前
 bmpidev2019

这个产品断断续续做了好几年了,之前已经有两个版本废弃了,具体 i 可以看这个开源项目: https://github.com/myinvestpilot/gravestones

产品的初始念头是基于我自身的需求,一方面我不想浪费太多时间在投资交易上,这是因为没时间盯盘以及盯盘会受到市场的影响,再就是本金不多的情况下花太多时间在投资上挺浪费时间的,时间应该花在提高本金的事情上。

要解决这个问题,有多种办法,没有钱可以选择选好的公募基金,好的大 V 来跟投,有钱可以选择好的私募。但是这些方式并不适合我,我并不信任公募基金,也不信任大 V 的操作,虽然我认可某些大 V 的理念,但是我并不想去长期跟投一个人,这很容易出现公募基金的问题。

所以解决办法只能是通过一些量化回测的方式,通过一些策略去做自动化的交易,但股票的流动是个大问题,所以这里可选的也就只有 ETF 了。于是这个产品的雏形出现了,早期是一个双均线策略的提醒工具,策略非常简单,甚至没有去优化,因为我担心过拟合的问题,因为似乎双均线在 A 股的效果还不错,我甚至还专门做过一些回测:双均线交易策略

但这个系统存在一些问题,不支持美股与加密币,我也不想一棵树上吊死,显然全球投资是必然的,那么从资产配置的角度看,A 股、美股与加密币就是一个不错的选择。为了支持全球市场以及多种资金策略与交易策略,去年开始我把系统升级成了现在这个产品的形态。目前创建各种策略的组合非常简单,甚至在未来会把策略与组合创建的权限下放给所有用户。现在你可以查看支持全球市场的十几个组合的历史表现: https://www.myinvestpilot.com/portfolios

另外一个需要注意的是,为了展示策略的有效性,我会通过创建一些模拟组合,通过组合的历史表现风险数据来评估策略的有效性,这也是为什么策略与组合在一起出现的原因。

当然这个产品也有一个面向海外的子产品:Chat2Invest,这是基于 LLM 的一个 AI 工具,能帮助分析个股的一些技术与基本面消息面的问题,但是因为模型的不稳定,目前这个子产品还处于试验阶段,我会在后续把策略选股及组合分析的功能也加入进去,更重要的是可以监控个股或市场,这个目的都是为了降低时间成本,让长期投资变得更容易一些。

现在提供一个免费申请试用的活动,首页里填写一个调查问卷,大概十几个小问题就可能获得试用的机会,如果感兴趣,请直接提供反馈给我吧,谢谢!

17037 次点击
所在节点    分享创造
120 条回复
bmpidev2019
55 天前
@Livid 我也很好奇,但我手头的 API 的日内数据,如果是 15 分钟级别只能提供最近两天的,日线可以提供到 2021 年前的,所以现在需要找到一个能有 BTC 日内历史数据的 API 接口才能回测。
Livid
55 天前
@bmpidev2019 有意思,我也来研究一下怎么找这样的数据。我目前用的是 TradingView.com ,不过还没有到自己写程序这一步。

话说,如果买了你的那个服务,是不是可以自己 DIY 这样的图出来?

https://img.bmpi.dev/5af30e19-6841-7886-fe35-87980b8d9ab3.png
Livid
55 天前
@bmpidev2019 刚才在看你的网站,注意到你的 TQQQ 的策略确实避开了 2022 年的雷?赞。

bmpidev2019
55 天前
@Livid 现在策引的多策略回测框架支持日线级别的股票、ETF ( A 股和美股都可以)与加密币的历史回测表现分析。刚才我做那个分析就是几分钟写策略(代码让 chatgpt 来写),然后配置一个组合,执行后就能产生那个走势图以及一个包含全部交易信号的 sqlite 数据库及组合表现(净值、benchmark 指数对比、交易记录、资金记录、持仓记录)的 sqlite 数据库,然后还能产生全部的回测日志供分析。

目前策引的组合都是我写策略然后发布的,还没有对会员开放自定义策略的功能,但是今年年底左右估计能开放给所有用户。如果会员有好的策略,我也可以帮忙创建相关的组合出来,包括策略的编写之类。

日内的数据理论上应该也行,因为底层回测引擎是 backtrader ,但是估计要做一些改动,目前还没有直接对日内数据做支持。
paopjian
55 天前
楼上的对话我除了字以外一句也没看懂, 好高端
bmpidev2019
55 天前
@Livid TQQQ 的策略就是我一直提到的吊灯止损均线策略,这个策略在美股和加密币表现都不错,但是 A 股不行,A 股反而双均线策略非常好😂

我还对 A 股二号,其实类似与美股 2 号( TQQQ ),都是单个标的全仓交易,都能规避大跌。但是针对 A 股的创业板组合,我还做过进一步的研究分析,这里可以分享下,以及设计策略的取舍经验:

---

尝试优化下 A 股 2 号,一开始我尝试用三重均线的策略来测试,如图 1 所示,看起来三重均线要比双均线好很多,完全规避了近几年的大跌,但当把组合模拟时间从 2018 年回退到 2013 年开始,这十年创业版刚好经历两个大的周期。三重均线的适应性出现了很大的问题,如图二所示,甚至都不如直接持有创业板指数,而且资金利用率很低,大部分都是空仓状态。而双均线的适应性如图三所示,比单独持有创业板要好很多,我尝试优化双均线的参数,得到了一个比 11/22 日更好的效果,目前这个参数是 12/24 ,所以我会把组合二的策略参数调整成这一组。但需要注意的是,就算双均线策略,在 2013 年到 2018 年表现的甚至不如直接持有创业板的收益好(进一步分析是因为在 2013 年组合是有一段时间空仓导致没能赶上创业板大爆发的阶段,这是因为数据不够导致的,如果数据能到 2010 年,那说不定能看到更好的表现,所以目前看到策略在 2013 年到 2018 年表现差可能是回测数据不够导致的),这说明很难找到一个在横跨十年时间都能完美处理止损的策略参数,我们能做的还是选择一些基础不错的主流指数,适当分散投资,这样能让组合的整体持仓表现更稳定一些,也能让长期投资跟更容易坚持下来。

![图 1]( https://img.bmpi.dev/03166bc5-9207-3b68-9ef8-a6d8a18730cd.png)

![图 2]( https://img.bmpi.dev/4e22192b-fbed-7e6a-ac3d-2540f725d2e8.png)

![图 3]( https://img.bmpi.dev/0e86a626-d583-908d-28c1-d8821ee07959.png)
laaaaaa
55 天前
牛哇;
但是没有试用详细看,想问一下,高频超短的( 15min 内)的策略,是类似网格吃震荡?
bmpidev2019
55 天前
@bmpidev2019 上面图一和图二反了,实际图一是 https://img.bmpi.dev/4e22192b-fbed-7e6a-ac3d-2540f725d2e8.png 图二是 https://img.bmpi.dev/03166bc5-9207-3b68-9ef8-a6d8a18730cd.png
图三是最终用优化后双均线的表现。

在这里想说的是周期对策略会有大的影响,盈亏同源,所以难点在于平衡取舍,尽可能选择分散的标的来规避过拟合以及让策略的容错能更高一些,这样就能横跨多种周期了。
Livid
55 天前
@bmpidev2019 Crypto 策略里可以关注一下 SOL
bmpidev2019
55 天前
@laaaaaa 网格吃震荡我不觉得是什么好策略,因为震荡行情赚钱效果不如趋势行情,当一个策略在震荡里赚钱时就可能错过了大趋势,所以震荡只能作为一种辅助工具来使用。
Livid
55 天前
全自动的高频网格很容易遇到的问题就是暴跌的时候全部套住没有钱抄底,暴涨的时候已经空仓了。
bmpidev2019
55 天前
@Livid SOL 看起来是个短线高频策略了,我刚看了下,这种策略难道要接入自动化交易来执行?
Livid
55 天前
@bmpidev2019 SOL 从去年 10 月行情启动之后,目前我的做法就是 15m/1d RSI 下 30 的时候放心买,然后感觉差不多了就出,当然也遇到过很多次事与愿违的情况,但目前大环境好像容错度很高,至少不是 2022 年的地狱模式。接下来我就是想把这件事情给尽可能自动化。大的交易所都有交易 API ,15m 甚至 5m 级别的交易信号,可以在 TradingView 上配置 webhook 。
bmpidev2019
55 天前
@Livid 看了下,2022 年的行情里,策引加密币 2 号( https://www.myinvestpilot.com/portfolios/myinvestpilot_cc_2 )产生了 30%多的回撤,虽然空仓时段比较多,但是大的回撤还是很难避免。但是加密币 1 号: https://www.myinvestpilot.com/portfolios/myinvestpilot_cc_1 在 2022 年反而都是空仓状态,两个组合的差异在于资金策略,2 号时满仓交易 BTC ,1 号是限制单个标的不能超过 20%,关注的币也包括:"BTC", "ETH", "XRP", "LTC", "BCH", "ADA", "BNB", "LINK", "XLM", "DOT" 都是一些主流币,这样反而能控制回撤,不过表现没有 2 号那么好,1 号的年复合收益是 20%多,2 号是 30%多,但是这只是在 BTC 处于牛市状态下,如果再回到熊市,1 号的表现可能会更好一些。
Livid
55 天前
@bmpidev2019 除了 BTC/ETH/SOL 之外的其他币种,大部分时候是跟随 BTC ,偶尔会比 BTC 涨得多,但如果一旦 BTC 跌,这些只会跌更多。
bmpidev2019
55 天前
@Livid 是的,我在设计组合的时候,会建立分散的组合,也有单个标的如 A 股 2 号、美股 3 号、加密币 2 号这种全仓交易一个标的的组合,这样的组合进攻型足够高,但是回撤都不小,适合风险承受能力高的人,而回撤小的组合更适合风险承受小的人。

之所以要关注风险指标是因为,如果一个策略与交易者的承受能力不匹配,实际的交易则很难进行下去,最终会让交易结果变差,因为交易者可能中途会放弃这个策略。
eokol
55 天前
hold 真香
bmpidev2019
55 天前
@Livid 搞到 15m 和 1h 的 BTC 日内数据了,2021 年到现在,大概几十 MB ,我测试了下你的策略效果都是负的。

https://imgur.com/a/dOfRibG

无论设置到 2021 年开始,还是 2022 年牛市开始,这种高频策略最终的收益都是亏损的。策略代码如下:

```python
class RsiStrategy(bt.Strategy):
params = (
('rsi_period', 14),
('rsi_overbought', 70),
('rsi_oversold', 30),
)

def __init__(self):
# 为两个不同的时间框架数据分别计算 RSI
self.rsi_15m = bt.indicators.RSI(self.datas[0].close, period=self.params.rsi_period)
self.rsi_1h = bt.indicators.RSI(self.datas[1].close, period=self.params.rsi_period)

def next(self):
# 获取当前时间戳
timestamp = self.datas[0].datetime.datetime(0)

# 买入条件:当 15 分钟和 1 小时的 RSI 都低于 30 时
if not self.position:
if self.rsi_15m[0] < self.params.rsi_oversold and self.rsi_1h[0] < self.params.rsi_oversold:
self.buy(data=self.datas[0]) # 使用 15 分钟数据源的价格买入
logging.info(f"{timestamp} BUY EXECUTED, Price: {self.datas[0].close[0]}, RSI 15m: {self.rsi_15m[0]}, RSI 1h: {self.rsi_1h[0]}")

# 卖出条件:当 15 分钟和 1 小时的 RSI 都高于 70 时
elif self.rsi_15m[0] > self.params.rsi_overbought and self.rsi_1h[0] > self.params.rsi_overbought:
self.close(data=self.datas[0]) # 使用 15 分钟数据源的价格卖出
logging.info(f"{timestamp} SELL EXECUTED, Price: {self.datas[0].close[0]}, RSI 15m: {self.rsi_15m[0]}, RSI 1h: {self.rsi_1h[0]}")
```
Livid
55 天前
@bmpidev2019 我看了你的代码,我要表达的不是这样的逻辑,我没有说 15m 和 1h 都必须同时满足才是交易信号……而且实际运作的时候,卖出策略用的是等比 OTO 订单卖出,不可能最终出现负数的。
Livid
55 天前
没事,是我之前的表达太含糊了,毕竟只是在论坛的简短发帖,又不是什么严谨的需求文档。根据这样的含糊描述写出来的代码跑出来负数,那就负数吧。:-)

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/1031232

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX