金字塔决策交易系统

 找回密码
 

微信登录

微信扫一扫,快速登录

搜索
查看: 90|回复: 6

#.#函数

[复制链接]

15

主题

27

帖子

27

积分

Rank: 4

等级: 专业版

注册:
2024-11-1
曾用名:
发表于 2025-4-21 08:57 | 显示全部楼层 |阅读模式
第一、
          指VOL1:#指定日盘中值.ZZVOL(250416,3)#,COLORYELLOW,NODRAW;
    可以正确输出:250416的第3根K线的成交量
第二、   
        VARIABLE:昨D=0,当日当前BARS=1;
        昨D:=IF(DATE<>REF(DATE,1),REF(DATE,1),昨D);//记录上一交易日日期
        当日当前BARS:=IF(DATE<>REF(DATE,1),1,当日当前BARS+1);//计算当天第几根K线
        指VOL2:#指定日盘中值.ZZVOL(昨D,当日当前BARS)#,COLORWHITE,NODRAW;
   输出结果为:0,这是为什么?

//指定日盘中值
INPUT: 指定日期(250417,1,991231,1),指定BAR(3,1,36,1);
VARIABLE:当前B=1,ZVOL=0;

当前B:=IF(DATE<>REF(DATE,1),1,当前B+1);
IF DATE-1000000=指定日期 AND 当前B=指定BAR THEN
  BEGIN
          ZVOL:=VOL;
          ZOI:=OPENINT;
  END
  ZZVOL:ZVOL;
  ZZOI:ZOI;


回复

使用道具 举报

2

主题

4903

帖子

4903

积分

Rank: 8Rank: 8

等级: 超级版主

注册:
2021-5-24
曾用名:
发表于 2025-4-21 10:05 | 显示全部楼层
不支持这种动态调用。

你直接传递数值和用变量传递数值是不太一样的情况的,前者是静态的,后者是动态的 每一个K上都是一个新的参数组合调用,对系统来说本来只需要在后台执行一个调用的副本,如果是动态参数 就有可能是无数个了~
回复

使用道具 举报

15

主题

27

帖子

27

积分

Rank: 4

等级: 专业版

注册:
2024-11-1
曾用名:
 楼主| 发表于 2025-4-21 10:30 | 显示全部楼层
那我要取指定日期的指定K线的数据怎么办?而这个指定日期及K线是会变化的。
回复

使用道具 举报

2

主题

4903

帖子

4903

积分

Rank: 8Rank: 8

等级: 超级版主

注册:
2021-5-24
曾用名:
发表于 2025-4-21 10:41 | 显示全部楼层
在PEL框架下,这种动态的取值方式 暂时不好处理。我们这边也没有现成的可用的方案。


回复

使用道具 举报

15

主题

27

帖子

27

积分

Rank: 4

等级: 专业版

注册:
2024-11-1
曾用名:
 楼主| 发表于 2025-4-21 10:48 | 显示全部楼层
你们不是可以调用PYTHON吗?就不能告诉一个可行的办法?
回复

使用道具 举报

2

主题

4903

帖子

4903

积分

Rank: 8Rank: 8

等级: 超级版主

注册:
2021-5-24
曾用名:
发表于 2025-4-21 15:51 | 显示全部楼层
py引用部分的代码
[Python] 复制代码
def init(context):
    pass

# Pel公式中调用FIREPYHANDLEBAR函数将触发该方法的调用
def handle_bar(context):
    todaybar = context.todaybar
    date = context.date
    vol = context.z
    #参数
    p1 = context.p1 #日期
    p2 = context.p2 #K位置
    
    index = [v for td, dt, v in zip(todaybar, date, vol) if int(td)==int(p2) and  int(dt)==int(p1)]
    if len(index):
        context.result = index[-1]
    else:
        #获取不到时候返回-1
        context.result = -1
        
        
        

    
# exit函数会在公式结束时被调用,整个过程只会被调用一次
def exit(context):
    pass
    



[PEL] 复制代码
/

//引用python代码模块 需要注意大小写敏感(Py_Import 必须是大写)
Py_Import MyPython6;

variable:x[]:=0,y[]=0,z[]:=0;
x:=todaybar;
y:=date;
z:=vol;

setpythonval(x,'todaybar');
setpythonval(y,'date');
setpythonval(z,'z');


setpythonval('p1',0,1250418);//参数1
setpythonval('p2',0,todaybar);//参数2


firepyhandlebar;

last_vol:getpythonval('result'); 



注意PEL中调用的模块名称,需要保持一致,我这里是MyPython6 ,你自己新建的要对应上。
回复

使用道具 举报

15

主题

27

帖子

27

积分

Rank: 4

等级: 专业版

注册:
2024-11-1
曾用名:
 楼主| 发表于 2025-4-22 08:33 | 显示全部楼层
资深技术05 发表于 2025-4-21 15:51
py引用部分的代码
[mw_shl_code=python,true]
def init(context):

多谢
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 微信登录

本版积分规则

手机版|小黑屋|上海金之塔信息技术有限公司 ( 沪ICP备13035422号 )

GMT+8, 2025-5-1 18:37 , Processed in 0.102769 second(s), 21 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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