关闭
您正在使用的浏览器版本较低,无法支持聚宽的某些特性。
为了获得更好的体验,推荐使用:
Google Chrome
或者
Mozilla Firefox
或者
IE9以上
。
返回主题列表
【变种小狮子】带涨停基因的股池轮动V2.2(BUGFIX)
0xtao
发布于2025-12-18
回复 91
浏览 8556
180
listen
分享到:
微信
微博
雪球
汇总了一下之前帖子里的问题,集中修复一下 这才是社区该有的氛围,有错误有想法一起提出来,理性探讨,把策略做得更好,再次感谢各位提出的问题! * 一、**rise**提出,把策略的买卖时间分开来,更加贴近实盘 * 二、**叮叮当当钉钉**提出,get_price方法的fill_paused默认参数是True,停牌股票的股价会用pre_close价格填充,那么假设某只股票在停牌前一天涨停,会导致重复多计算涨停次数 * 三、**韭神~**提出,调仓时间不同会导致选出来的股票不一样,这是因为策略在计算偏移量时,会用到最新价,不同调仓时间的股票价格不一会导致选股不同,这块我没有修改,因为我认为还是需要用最新价计算,如果你希望固定每日股池,可以修改145行为:last_price = current_data[code].day_open * 四、**1204**提出,计算涨停价时使用不复权价格,这里我理解策略计算涨停计数时,用的当天的收盘价和当天的涨停价对比,应该不涉及除权? * 五、**hl1**提出,一个票是走了一个主升浪之后的宽幅震荡中的涨停,这种情况下的启动点好像就有失真;如果把启动点往前推3个月检测是否涨停,再以最低的启动点作为真正的启动点是不是更好,这块的确还没想好怎么能更好地计算启动点,欢迎大家提出想法 最后,多说一嘴,近期市场风险大于机会,各位JQer谨慎实盘!
180
listen
分享到:
微信
微博
雪球
评论
榆木~
神奇,回测多了4个点,年化多了两个点,真就风险收益同步增长
2025-12-19
小路发财
第五点我觉得可以增加涨停价之间的对比?差值百分比过大的过滤掉,比如原来5块,主升浪翻了50%后7.5,又来个震荡涨停8.25,用8.25和5块对比,防止主升浪之后的宽幅震荡中的涨停失真
2025-12-19
聚德聚财
很早有个大路888的神人,喜欢用近期曾涨停的小市值进行选股,延伸出很多通达信版的策略,但他的思路是,留下上涨的股,去掉表现不佳的股票,依靠这个来获取整体收益。 量化股池轮动就是机械的择时,不好说前景怎么样。 6个月,走出了2/3月的高收益,走出了一个不断回撤的5/6月
2025-12-19
次仁多吉
wellfuture在你V2.1(BUGFIX)版本 整了一个优化版,回测速度提升了,收益也提高了
2025-12-19
杰西·利弗莫尔
这个策略,过滤掉创业板:以‘30’ 开头的票后,收益缩水很多了
2025-12-19
lucas3060
五年回测结果如下:    
2025-12-19
世界奶茶
@次仁多吉 那个也叫修改?太水了
2025-12-19
Charlessssss
@lucas3060 感谢,直观多了,看起来近期的回撤也是避不开的
2025-12-19
Charlessssss
@次仁多吉 那是AI直接搞得
2025-12-19
次仁多吉
@Charlessssss AI写不出来 那么牛逼的
2025-12-19
lucas3060
@Charlessssss 本质上还是小市值策略,关键因子还是市值,马上一月了,没必要直接实盘,先模拟看看
2025-12-19
红牛牛
点赞克隆,欢迎加入交流V:liaonui,备注聚宽
2025-12-19
榆木~
我记得学的python is判断是内存地址判断不是等值判断呀,现在改了吗,我看到代码里面两处g.reason_to_sell is 'limitup',这个返回的永远是false吧
2025-12-19
JL-Wu
很不错的策略,逻辑挺好了,小市值就是碰涨停的几率,然后调仓继续碰。
2025-12-19
榆木~
固定比例止损改成了ATR固定止损加ATR移动止损,好像效果不是很好,顺带修复了is判定的问题
2025-12-19
龙哥123
风险收益同步增长
2025-12-19
山红
@榆木~ limit_flag = 'limitup' print("DDDDDDD", limit_flag, limit_flag is 'limitup', limit_flag == 'limitup') 输出: DDDDDDD limitup True True
2025-12-19
榆木~
@山红 感谢,我仔细查了下AI,你举例的这种情况是因为python对于字符串字面量的「驻留优化机制」,虽然应该确实不影响,但是不是一个好用法。 ------- 要理解这个现象,核心是分清 `is` 和 `==` 的本质区别,以及 Python 对**字符串字面量**的「驻留优化机制」。 ### 一、先明确 `is` 和 `==` 的核心差异 | 运算符 | 作用 | 判断维度 | |--------|------|----------| | `==` | 判断「值相等」 | 内容/值 | | `is` | 判断「身份相等」 | 内存地址(是否是同一个对象) | 你说的「is 是地址判断」完全正确,但这里返回 `True`,是因为两个 `'limitup'` 指向了**同一块内存地址**——这是 Python 的「字符串驻留(String Interning)」机制导致的。 ### 二、字符串驻留:为什么两个 `'limitup'` 地址相同? Python 为了优化内存和性能,会对**字符串字面量**(直接写的 `'xxx'` 形式)做「驻留」处理: - 解释器启动时会创建一个「字符串驻留池」,将短字符串、纯字母/数字/下划线的字符串字面量缓存起来; - 当你再次创建相同的字符串字面量时,不会新建对象,而是直接复用驻留池里已有的对象(即指向同一个内存地址)。 你的代码中: ```python limit_flag = 'limitup' # 赋值的是字符串字面量,存入驻留池 print(limit_flag is 'limitup') # 右边的'limitup'也是字面量,复用同一个对象 → True ``` ### 三、反例:什么时候 `is` 会返回 `False`? 如果字符串不是「字面量」,而是**运行时动态生成**的(比如拼接、输入、切片等),则不会触发驻留,此时 `is` 会返回 `False`(但 `==` 仍为 `True`)。 示例1:运行时拼接字符串 ```python # 动态拼接(运行时生成,不驻留) s1 = 'limit' limit_flag = s1 + 'up' # 不是字面量,新建对象 print(limit_flag == 'limitup') # 值相等 → True print(limit_flag is 'limitup') # 地址不同 → False ``` 示例2:含特殊字符的字符串(不驻留) ```python limit_flag = 'limit-up' # 含横线,不满足驻留规则 print(limit_flag is 'limit-up') # False(不同Python版本可能有差异,但不依赖此规则) ``` 示例3:从输入/文件读取的字符串 ```python # 模拟输入(运行时生成) limit_flag = input().strip() # 假设输入 limitup print(limit_flag is 'limitup') # False ``` ### 四、关键结论 1. `is` 判断的是「内存地址」,`==` 判断的是「值」; 2. 字符串字面量会触发「驻留优化」,导致相同字面量的 `is` 为 `True`; 3. **永远不要用 `is` 判断字符串是否相等**!驻留是 Python 的优化行为,规则可能随版本/环境变化,判断值相等必须用 `==`。 (补充:小整数 `-5 ~ 256` 也有类似的缓存机制,比如 `a=100; a is 100 → True`,但同样不要依赖 `is` 判断整数相等。)
2025-12-19
0xtao
@小路发财 嗯,是这个理,即寻找最低启动点,下个版本试试
2025-12-19
0xtao
@聚德聚财 少妇战法哈哈
2025-12-19
首页
上一页
1
2
3
4
5
下一页
尾页
您尚未登录,请
登录
或者
注册
聚宽发表回复。
取 消
提 交