以文本方式查看主题

-  金字塔客服中心 - 专业程序化交易软件提供商  (http://weistock.com/bbs/index.asp)
--  策略编写求助区  (http://weistock.com/bbs/list.asp?boardid=11)
----  求全局变量的编程示例  (http://weistock.com/bbs/dispbbs.asp?boardid=11&id=86304)

--  作者:双飞燕
--  发布时间:2015/10/16 23:39:03
--  求全局变量的编程示例
<!--[if gte mso 9]> Normal 0 7.8 磅 0 2 false false false MicrosoftInternetExplorer4 <![endif]-->

策略加载,15K线,分笔速率扫描,有信号立即成交。

日内开单最大手数:lot=10

开仓条件:1,价格>日线的开盘价+30*最小变动价位

                2,如果买入信号出现在收盘前5分钟内,那么开仓量为0.5*lot-原有的多单持仓,其他时间的开仓的量为lot-原有的多单持仓;

                3,采用挂单的方式,价格为当时成交价-3*最小变动价位。

                4,如果价格>委托价+10*最小变动价位或者计算机时间进入收盘前3分钟,那么立即撤未成交单,并追单,追单价位涨停价。追单的数量参照开仓条件2

 

 

平仓条件:1,价格<日线的开盘价-10*最小变动价位,那么平所有仓;

                2,如果计算机时间进入收盘前3分钟,平仓条件1不成立,那么留0.5*lot过夜,其余的平仓;

                3,平仓的委托价为当时成交价+3*最小变动价位。

             4,如果价格<委托价-10*最小变动价位或者计算机时间进入收盘前1分钟,那么立即撤未成交单,并追单,追单价位跌停价。

 

 

说明:1,如果由于某些些原因,不得不中途启动预警,如果当时开仓或平仓的条件成立,也必须立即挂单,进入交易状态。

         2,策略是多账户交易,请用多账户交易的相关函数。

         3,一天的开多次数最多2次;

<!--[if gte mso 9]> <![endif]--><!--[if gte mso 10]> <![endif]-->
--  作者:双飞燕
--  发布时间:2015/10/16 23:48:35
--  
 4,要求该策略能监控和交易多个品种
--  作者:yukizzc
--  发布时间:2015/10/20 15:47:36
--  

//时间用的商品做例子,如对中金所自己修改下时间那边即可。账户组用的TA这个用户自己做修改

//平仓条件中的2和4未写,不太明白你这不满足平仓条件然后平仓的意思。

//范例仅供参考,具体使用时客户还请先经一番测试

CloseDay:=callstock(\'\',vtopen,6,0);
KD:=close-CLOSEDAY>30*MINDIFF;
PD:=CLOSEDAY-close>10*MINDIFF;
lot:=10;
GLOBALVARIABLE:KDNUM=0,KDTIMES=0;//num表示开多手数,times表示开多次数

if KD and DYNAINFO(207)<185500 and KDNUM<11 and KDTIMES<3 THEN
begin
tbuy(1,lot-TBUYHOLDING(1),lmt,DYNAINFO(7)-3*MINDIFF,0,\'TA\',\'\');
KDTIMES:=KDTIMES+1;
KDNUM:=KDNUM+TENTERVOL;
end

if KD and DYNAINFO(207)>185500 and KDNUM<11 and KDTIMES<3 THEN
begin
tbuy(1,lot*0.5-TBUYHOLDING(1),lmt,DYNAINFO(7)-3*MINDIFF,0,\'TA\',\'\');
KDTIMES:=KDTIMES+1;
KDNUM:=KDNUM+TENTERVOL;
end

if close>TENTERPRICE+10*MINDIFF or DYNAINFO(207)>185700 then
BEGIN
TCANCELex(1,1,\'\',\'\');
tbuy(DYNAINFO(207)<185500,lot-TBUYHOLDING(1),mkt,0,0,\'TA\',\'\');
tbuy(DYNAINFO(207)>185500,0.5*lot-TBUYHOLDING(1),mkt,0,0,\'TA\',\'\');
end

if PD THEN
tsell(1,tbuyholding(1),lmt,DYNAINFO(7)+3*MINDIFF,0,\'TA\',\'\');