AI量化实验室

 找回密码
 免费注册
楼主: ailabx

Quantlab代码结构讲解:datafeed数据加载与因子表达式。

[复制链接]

86

主题

183

帖子

958

积分

管理员

积分
958
 楼主| 发表于 2024-8-19 14:12:12 | 显示全部楼层
18898757577 发表于 2024-8-19 10:14
pset.addPrimitive(dummy, [Expr, Expr], Expr, name='fadd')
    pset.addPrimitive(dummy, [Expr,  ...

set.addPrimitive(dummy, [Expr, Expr], Expr, name='fadd'),参数有两个表达式,比如 fadd(a,b),返回值一个

0

主题

6

帖子

32

积分

量化新人

积分
32
发表于 2024-8-19 14:54:35 | 显示全部楼层
ts_mean(ts_pct_change(high-low-10, 1), 60)-rank(neg(changepct)/3)/s_sqrt(cube(ts_mean(open, 3)))
7it [00:04,  1.92it/s]Traceback (most recent call last):
  File "D:\python_ycsf\datafeed\dataloader.py", line 76, in calc_expr
    se = calc_expr(df, field)
  File "D:\python_ycsf\datafeed\expr.py", line 21, in calc_expr
    se = eval(expr)
  File "<string>", line 1, in <module>
NameError: name 'changepct' is not defined

麻烦问下我在这里添加了这个字段,读取文件中也有这个字段,为什么还会报这个字段没有定义呢?
def add_factors(pset):
    pset.addTerminal(1, Expr, name='open')
    pset.addTerminal(1, Expr, name='high')
    pset.addTerminal(1, Expr, name='low')
    pset.addTerminal(1, Expr, name='close')
    pset.addTerminal(1, Expr, name='volume')
    pset.addTerminal(1, Expr, name='changepct')

86

主题

183

帖子

958

积分

管理员

积分
958
 楼主| 发表于 2024-8-19 15:18:22 | 显示全部楼层
datafeed/ __init__.py里要引用的。这是因子表达式来计算。

86

主题

183

帖子

958

积分

管理员

积分
958
 楼主| 发表于 2024-8-19 15:19:58 | 显示全部楼层
from .expr_unary import *
from .expr_binary import *
from .expr_unary_rolling import *
from .expr_binary_rolling import *
from .expr_funcs_talib import *

0

主题

3

帖子

66

积分

注册会员

积分
66
发表于 2024-8-19 15:55:02 | 显示全部楼层
二元和二元动态算子加入的时候会报错,如何修正啊?另外如果想加入自己定义的二元算子,怎么调试出错少哈……
def add_operators(pset):
    """添加算子"""
    pset = add_operators_base(pset)
    add_unary_ops(pset)
    add_binary_ops(pset)
    add_unary_rolling_ops(pset)
    add_binary_rolling_ops(pset)

    return pset

86

主题

183

帖子

958

积分

管理员

积分
958
 楼主| 发表于 2024-8-19 16:40:53 | 显示全部楼层
18898757577 发表于 2024-8-19 14:54
ts_mean(ts_pct_change(high-low-10, 1), 60)-rank(neg(changepct)/3)/s_sqrt(cube(ts_mean(open, 3)))
7it ...

这个不是加在这里的。需要理解一下整理代码逻辑。
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

AI量化实验室 ( 京ICP备16049031号-2 )

GMT+8, 2024-11-24 02:35 , Processed in 0.066931 second(s), 18 queries .

Powered by Discuz! X3.5

Copyright © 2001-2024 Tencent Cloud.

快速回复 返回顶部 返回列表