以文本方式查看主题

-  金字塔客服中心 - 专业程序化交易软件提供商  (http://weistock.com/bbs/index.asp)
--  公式模型编写问题提交  (http://weistock.com/bbs/list.asp?boardid=4)
----  两个系统相互调用持仓量的问题  (http://weistock.com/bbs/dispbbs.asp?boardid=4&id=70621)

--  作者:lc1227
--  发布时间:2014/9/30 16:57:47
--  两个系统相互调用持仓量的问题
我两个程序 互相调用 对方的持仓量,软件提示调用超过50次,我按照论坛里的办法修改Option.ini文件,参数设置成500,结果就提示超过500,应该如何解决?


第一个程序 VKONG
MA1:MA(C,20);
MA2:MA(C,200);
VAR1:=CROSS(MA1,MA2);
VAR2:=CROSS(MA2,MA1);
HHL:STKINDI(\'\',\'VDUO.HL\',0,22,0);
IF VAR1 THEN BEGIN 
SELLSHORT(1,1,MARKET);
END
IF VAR2 THEN BEGIN 
BUYSHORT(1,1,MARKET);
END
HL:HOLDING;

第二个程序 VDUO
MA1:MA(C,20);
MA2:MA(C,200);
VAR1:=CROSS(MA1,MA2);
VAR2:=CROSS(MA2,MA1);
HHL:STKINDI(\'\',\'VKONG.HL\',0,22,0);
IF VAR2 THEN BEGIN 
SELL(1,1,MARKET);
END
IF VAR1 THEN BEGIN 
BUY(1,1,MARKET);
END
HL:HOLDING;

麻烦看一下,我怎么做才能实现相互调用对方的持仓量?

--  作者:admin
--  发布时间:2014/9/30 22:41:33
--  

你这么相互调用肯定是不行的,建议你使用全局变量数据库来解决

 

参考

EXTGBDATA( )
EXTGBDATASET( , )

这2个函数,

 

2个公式分别写入自己的持仓量数据, 然后再相互分别读出.

 

记住在公式属性里,勾选这里

 


图片点击可在新窗口打开查看此主题相关图片如下:qq截图20140609131028.jpg
图片点击可在新窗口打开查看

--  作者:klc
--  发布时间:2014/10/1 0:27:57
--  

这不就是死循环了吗?建议对程序流程控制方面逻辑还搞不太清楚的,就不要写这么复杂的公式了嘛

 

你那样写相当于我对你说,你先把持仓告诉我,然后我继续下一步,你也根我说,让我把持仓告诉你,然后你继续下一步。。。。没玩没了,永远都运行不完啊


--  作者:lc1227
--  发布时间:2014/10/9 8:50:03
--  
你好,我试了你给的两个函数,还是搞不明白,能否麻烦把完整的写法写一下?
--  作者:lc1227
--  发布时间:2014/10/9 8:56:44
--  
EXTGBDATA( )
EXTGBDATASET( , )
管理员说用上面两个函数可以解决,但是我搞不明白怎么写,能烦劳帮忙写一下么

--  作者:jinzhe
--  发布时间:2014/10/9 9:05:11
--  
MA1:MA(C,20);
MA2:MA(C,200);
VAR1:=CROSS(MA1,MA2);
VAR2:=CROSS(MA2,MA1);
IF VAR1 THEN BEGIN 
SELLSHORT(1,1,MARKET);
END
IF VAR2 THEN BEGIN 
BUYSHORT(1,1,MARKET);
END
extgbdataset(\'chicang1\',holding);

 
第二个程序 VDUO
MA1:MA(C,20);
MA2:MA(C,200);
VAR1:=CROSS(MA1,MA2);
VAR2:=CROSS(MA2,MA1);
HHL:STKINDI(\'\',\'VKONG.HL\',0,22,0);
IF VAR2 THEN BEGIN 
SELL(1,1,MARKET);
END
IF VAR1 THEN BEGIN 
BUY(1,1,MARKET);
END
extgbdataset(\'chicang2\',holding);
 
 
第一个程序的持仓是extgbdata(\'chicang1\')
第二个程序的持仓是extgbdata(\'chicang2\')

--  作者:lc1227
--  发布时间:2014/10/9 13:32:11
--  
MA1:MA(C,20);
MA2:MA(C,200);
VAR1:=CROSS(MA1,MA2);
VAR2:=CROSS(MA2,MA1);
XX:extgbdata(\'chicang1\');
IF VAR1 THEN BEGIN 
SELLSHORT(1,1,MARKET);
END
IF VAR2 THEN BEGIN 
BUYSHORT(1,1,MARKET);
END
extgbdataset(\'chicang1\',holding);


我这个第一个程序的数据,但是xx并不显示数值,是什么原因?
另外,我下面这种写法
MA1:MA(C,20);
MA2:MA(C,200);
VAR1:=CROSS(MA1,MA2);
VAR2:=CROSS(MA2,MA1);
XX:extgbdata(\'chicang1\');
XY:XX+1;
IF VAR1 THEN BEGIN 
SELLSHORT(1,1,MARKET);
END
IF VAR2 THEN BEGIN 
BUYSHORT(1,1,MARKET);
END
extgbdataset(\'chicang1\',holding);
如果XX读不到数值,那么XY有数值么?XY还有意义么?

--  作者:jinzhe
--  发布时间:2014/10/9 13:35:22
--  

你把读信息写在写信息前面?那能读到信息?

 

MA1:MA(C,20);
MA2:MA(C,200);
VAR1:=CROSS(MA1,MA2);
VAR2:=CROSS(MA2,MA1);
IF VAR1 THEN BEGIN 
SELLSHORT(1,1,MARKET);
END
IF VAR2 THEN BEGIN 
BUYSHORT(1,1,MARKET);
END
extgbdataset(\'chicang1\',holding);

XX:extgbdata(\'chicang1\');

 


此主题相关图片如下:1.png
按此在新窗口浏览图片

--  作者:lc1227
--  发布时间:2014/10/9 13:38:15
--  
哦 我重新问一下这个问题,不好意思

MA1:MA(C,20);
MA2:MA(C,200);
VAR1:=CROSS(MA1,MA2);
VAR2:=CROSS(MA2,MA1);
XX:extgbdata(\'chicang2\');
IF VAR1 THEN BEGIN 
SELLSHORT(1,1,MARKET);
END
IF VAR2 THEN BEGIN 
BUYSHORT(1,1,MARKET);
END
extgbdataset(\'chicang1\',holding);


我这个第一个程序的数据,但是xx并不显示数值,是什么原因?
另外,我下面这种写法
MA1:MA(C,20);
MA2:MA(C,200);
VAR1:=CROSS(MA1,MA2);
VAR2:=CROSS(MA2,MA1);
XX:extgbdata(\'chicang2\');
XY:XX+1;
IF VAR1 THEN BEGIN 
SELLSHORT(1,1,MARKET);
END
IF VAR2 THEN BEGIN 
BUYSHORT(1,1,MARKET);
END
extgbdataset(\'chicang1\',holding);
如果XX读不到数值,那么XY有数值么?XY还有意义么?


--  作者:jinzhe
--  发布时间:2014/10/9 13:55:49
--  

你先把我给你写的chicang2公式放到k线图上,不然公式只是写好但是没有运行没有数据