Rss & SiteMap

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

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

标题:两个系统相互调用持仓量的问题

1楼
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;

麻烦看一下,我怎么做才能实现相互调用对方的持仓量?
2楼
admin 发表于:2014/9/30 22:41:33

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

 

参考

EXTGBDATA( )
EXTGBDATASET( , )

这2个函数,

 

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

 

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

 


图片点击可在新窗口打开查看此主题相关图片如下:qq截图20140609131028.jpg
图片点击可在新窗口打开查看
3楼
klc 发表于:2014/10/1 0:27:57

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

 

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

4楼
lc1227 发表于:2014/10/9 8:50:03
你好,我试了你给的两个函数,还是搞不明白,能否麻烦把完整的写法写一下?
5楼
lc1227 发表于:2014/10/9 8:56:44
EXTGBDATA( )
EXTGBDATASET( , )
管理员说用上面两个函数可以解决,但是我搞不明白怎么写,能烦劳帮忙写一下么
6楼
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')
7楼
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还有意义么?
8楼
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
按此在新窗口浏览图片
9楼
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还有意义么?

10楼
jinzhe 发表于:2014/10/9 13:55:49

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

共13 条记录, 每页显示 10 条, 页签: [1] [2]


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