Python 算法交易实验78 QTV200日常推进-经典策略2 RSI

发布于:2024-08-13 ⋅ 阅读:(123) ⋅ 点赞:(0)

说明

例行的推进,保持一个习惯。

上次对SMA和EMA进行了一次暴力搜索,跑了两天,进度正常。
在这里插入图片描述
跑数用了两个worker在处理,所以比较慢。主要是平时事太多,这两个worker肯定比我回过神要快,哈哈。如果是正儿八经跑的话,我觉得给100个worker跑是没问题的,其实速度不是事。

我想了想,所谓对经典策略的变体,目前在我这也就是时隙单位变为分钟,以及我搜索了更大的参数空间,从而选定了一组或几组合适的空间。另外就是这些策略会作为强化学习框架的元素,最后的结果不仅取决于算法,还取决于强化学习框架。

在这里插入图片描述
就目前处理的3000组参数中,没有一组参数能够在总体、最近3年和最近1年都获胜的。有些赢得多的,这两年输的也多。就策略本身的获益水平来说还不是特别吸引我。

但是从反过来看可能更有意思。就是不以赢为目标,而是以不输为目标。那么符合条件的case就多了。「不输」可以作为一种模式或者precondition来服务与其他一般判别模型。(双刃剑模型)

接下来,我会继续把一些基准的策略都纳入,通过变体,产生可实盘的工程结果。

内容

接下来是RSI策略。

RSI指标的计算有点类似与净买入、净卖出的意思,体会一下就好。

数据模型

from Basefuncs import * 

from typing import List, Optional
from pydantic import BaseModel

class RSI(BaseModel):
    clickhouse_ip : str 
    clickhouse_db : str 
    clickhouse_table_name : str
    clickhouse_select_cols : list = ['shard','part','block','brick','code','amt','close','high','low',
        'open', 'data_dt', 'pid', 'ts','vol']
    gfgo_lite_server : str 
    current_year : int  = 2024
    t : int 
    buy_rsi : float
    sell_rsi: float 

t的话没啥好说,从300一直往后轰到12000差不多了。rsi会做一些变换
在这里插入图片描述
反正deepseek说是70和30,但是在变换了时隙之后,以及标的不对应股票,这些会发生变化。我更倾向与相信rsi会来自与一个稳定的分布,所以我觉得用分位数作为实际的控制参数比较好。

中间耽搁了一下,结果都跑完了。不过这次参数没有完全展开,其实完全可以让参数无脑的在5,95之间自己尝试。

在这里插入图片描述
看看结果吧,我发现rabbitmq很适合干这种(元数据、块数据任务)。我甚至都不想把消息拿出来ack掉。

rm = RabbitManager()
# 获取1个数据
data_list = rm.get_message('rsi510300_result', count=2000)

df = pd.DataFrame(data_list)

sel1 = (df['rsi.total_mean_npr'] > 0) & (df['rsi.last3_mean_npr'] > 0) & (df['rsi.last1_mean_npr'] > 0)
df[sel1]

Amazing, 竟然有一直赚钱的策略,不过这区间也够窄的
在这里插入图片描述

不错哦,冠军恰好就是全赢的
在这里插入图片描述
嗯,看来可以收货几个candidates了。下一步搞搞MACD,然后布林带,然后就结束经典策略的类型 。


网站公告

今日签到

点亮在社区的每一天
去签到