Rss & SiteMap

金字塔客服中心 - 专业程序化交易软件提供商 http://www.weistock.com/bbs/

专业程序化软件提供商
共27 条记录, 每页显示 10 条, 页签: [1] [2][3]
[浏览完整版]

标题:[求助]stkindi的参数传送问题

1楼
mcza30 发表于:2019/10/2 23:16:01
我在测试stkindi的参数传送,代码如下

//tp:=12345678;//ok
tp:=c;               //error

m1:=NUMTOSTR(tp,0);
y:=stkindi('','sub02.aa('&m1&')',0,1,0);

当tp为常数时传送正常,tp为c时报错“公式过多,超过50个”

请教如何理解“公式过多,超过50个”这个信息?
这里“公式”是指什么?





2楼
FireScript 发表于:2019/10/8 9:01:30
就是指跨周期调用的那个公式 ,大致意思就是进行的跨周期调用的次数太多了。
你这里是个特殊情况。系统序列变量如 O H L C 不能这样作为参数传递进去,否则K线数多了就会出现这个报错。序列变量是特殊的变量,差不多相当于一个数组,一组数据,这就会导致在每个K上都会被视作参数不一样的跨周期调用了。从而导致上面的报错。 
3楼
mcza30 发表于:2019/10/9 9:41:03
谢谢超级版主FireScript!

我想跨周期引用交易系统函数,公式2引用公式1。
程序如下,但是没有结果。请版主帮我看看有什么问题。谢谢


//------sub1008公式1
input: cmd(0,0,10,1);
if cmd=1 then  sell(1,0,marketr);     //平多
if cmd=2 then  sellshort(1,0,marketr);//平空
aa:=holding;


//------------公式2
T1:=TIME>=140000 and TIME<141000;//开多时间
T2:=TIME>=142000;                //平多时间
T3:=TIME>=143000 and TIME<144000;//开空时间
T4:=TIME>=145000;                //平多时间

buy(T1 and holding=0,1,MARKETR);
if T2 then y1:stkindi('','sub1008.aa(1)',0,0,0);

buyshort(T3 and holding=0,1,MARKETR);
if T4 then y2:stkindi('','sub1008.aa(2)',0,0,0);

4楼
FireScript 发表于:2019/10/9 9:49:12
 第一个公式有问题。holding是虚拟持仓,在图表策略里面如果没有开仓语句,这个holding初始是0. 你公式1只有平仓语句,holding只会是0

此外还需要注意的就是 一般被引用的变量 最好用 “:” 定义 而不是用“:=”定义。
5楼
FireScript 发表于:2019/10/9 9:56:19
然后就是第二个公式里面:
T1:=TIME>=140000 and TIME<141000;//开多时间
T2:=TIME>=142000;                //平多时间
T3:=TIME>=143000 and TIME<144000;//开空时间
T4:=TIME>=145000;                //平多时间

time返回的一般默认是金字塔时间:

图片点击可在新窗口打开查看此主题相关图片如下:temp.png
图片点击可在新窗口打开查看

你上面代码里面 如果你想表达北京时间的这个区间,你可能要改成金字塔时间的表达方式,也就是加上四个小时。

6楼
mcza30 发表于:2019/10/9 11:28:49
lk:time;
显示时间,返回结果与金字塔时间是一致的。
我的电脑上没有你图片上括号显示部分,仅显示北京时间


7楼
mcza30 发表于:2019/10/9 13:02:13
我作了修改,不用时间函数,如下:

//------sub1008公式1
aa:sell(1,0,marketr);     //平多


//------------公式2
T1:=count(c>o,2)=2;
buy(T1 and holding=0,1,MARKETR);  //开多

T2:=count(c<o,2)=2;
//sell(T2 and holding>0,0,marketr); //ok
if T2 then y1:stkindi('','sub1008.aa',0,0,0);  //跨周期引用没有反应

不知哪里出错,请版主指教,谢谢。



8楼
FireScript 发表于:2019/10/9 13:10:44
能引用过来,但是值应该恒为0。


图片点击可在新窗口打开查看此主题相关图片如下:temp.png
图片点击可在新窗口打开查看


这句代码 你直接加载看下就知道了。恒为0的。
aa:sell(1,0,marketr);     //平多

就光裸一个平仓语句 aa只会是0.
[此贴子已经被作者于2019/10/9 13:12:16编辑过]
9楼
mcza30 发表于:2019/10/9 13:45:50
aa我是作为一个引用标号,没有指定意义。

问题主要是sell(1,0,marketr); 没有平多操作,实盘和回测都没有动作。


10楼
FireScript 发表于:2019/10/9 14:00:51
 图表策略 上没有开仓语句,这个平多是无论如何都不会触发的。图表策略加载在图表上,有开才能有平。图表策略在K线图上的信号是基于K线数据 和策略代码逻辑 进行的模拟下单 所产生的。你如果只写一个平仓语句是不行的。
共27 条记录, 每页显示 10 条, 页签: [1] [2][3]


Powered By Dvbbs Version 8.3.0
Processed in 0.03125 s, 3 queries.