
等级: 标准版
- 注册:
- 2021-6-15
- 曾用名:
|

楼主 |
发表于 2021-10-26 11:34
|
显示全部楼层
因为第一次写后台, 又没有教程, 按照你们的建议, 写了后台程序化, 你们帮忙看一下有什么问题?
TBUYHOLDINGEX('',品种,1), CALLSTOCK(品种连续,VTVOL,6,-1) , 品种:='IF2112'; 是否这样写? 等等。
开多:=开多的条件;
平多:=平多的条件;
品种:='IF2112';
品种连续:='IF00';
//下面语句是后台程序化
//成交量比例一般在0.2%到0.5% 之间, 输入2就是0.2%的意思。 用千分比。最大不建议超过0.5%. 主要就是限制开仓比例不能太大, 严格控制在千分之三左右。
//EMA_VolDay:=STKINDI(品种,'VOL.MA2(5,10,20)',0,6,-1)*成交量比例/1000;//找昨天的成交量10日均线量, 再乘以成交量比例
VolDay:=CALLSTOCK(品种连续,VTVOL,6,-1);
MA_VOLDAY:=MA(VolDay,10);
//如果之前的平多仓还有且大于900秒, 取消掉。 重新再开仓
//同时如果还有开空的信号, 取消它,IF00 就是取连续值
TCANCEL(TISREMAIN(2)=1 and TSUBMIT(2)>900,2);
//平多开仓数不能为0
//a.看成交量;b.看卖一和买一的中间价
// DYNAINFO2(34,品种)卖一价;DYNAINFO2(28,品种)买一价;DYNAINFO2(31,品种) 是卖一量, DYNAINFO2(25,品种) 是买一量; DYNAINFO(208)最小变动单位,
//成交量比例是自己设置的, 取5日的平均数。 千分之5那么多, 建议分两次下而且用加仓的方式来操作。
IF 平多 THEN //后台平多程序化
BEGIN
TCANCEL(TBUYHOLDINGEX('',品种,1)>=0,2);
平多开仓数:=TBUYHOLDINGEX('',品种,1);
IF TBUYHOLDINGEX('',品种,1)>=80 or 平多开仓数>MA_VolDay THEN
//a1
BEGIN
IF DYNAINFO2(34,品种)-DYNAINFO2(28,品种)>3*DYNAINFO2(208,品种) THEN
BEGIN
TSELL(1,平多开仓数/4,LMT,DYNAINFO2(34,品种)-DYNAINFO2(208,品种));
TSELL(1,平多开仓数/4,LMT,DYNAINFO2(34,品种)-2*DYNAINFO2(208,品种));
TSELL(1,平多开仓数/4,LMT,DYNAINFO2(34,品种)-3*DYNAINFO2(208,品种));
TSELL(1,平多开仓数/4+3,LMT,DYNAINFO2(28,品种)+DYNAINFO2(208,品种));
END
IF DYNAINFO2(34,品种)-DYNAINFO2(28,品种)>DYNAINFO2(208,品种) AND DYNAINFO2(34,品种)-DYNAINFO2(28,品种)<=3*DYNAINFO2(208,品种) THEN
BEGIN
TSELL(1,平多开仓数/3,LMT,DYNAINFO2(34,品种));
TSELL(1,平多开仓数/3,LMT,DYNAINFO2(34,品种)-DYNAINFO2(208,品种));
TSELL(1,平多开仓数/3+2,LMT,DYNAINFO2(28,品种)+DYNAINFO2(208,品种));
END
IF DYNAINFO2(34,品种)-DYNAINFO2(28,品种)=DYNAINFO2(208,品种) THEN
BEGIN
//DYNAINFO2(31,品种) 是卖一量, DYNAINFO2(25,品种) 是买一量,DYNAINFO2(34,品种)卖一价;DYNAINFO2(28,品种)买一价;
IF DYNAINFO2(25,品种)>DYNAINFO2(31,品种) THEN
BEGIN
TSELL(1,平多开仓数/2,LMT,DYNAINFO2(34,品种));
TSELL(1,平多开仓数/2+1,LMT,DYNAINFO2(28,品种));
END
IF DYNAINFO2(25,品种)<DYNAINFO2(31,品种) THEN TSELL(1,平多开仓数,LMT,DYNAINFO2(28,品种));
END
END
//a2
IF 平多开仓数<80 AND 平多开仓数>=12 AND 平多开仓数<=MA_VolDay THEN
BEGIN
//a2b1
IF DYNAINFO2(34,品种)-DYNAINFO2(28,品种)>3*DYNAINFO2(208,品种) THEN
BEGIN
TSELL(1,平多开仓数/3,LMT,DYNAINFO2(34,品种)-DYNAINFO2(208,品种));
TSELL(1,平多开仓数/3,LMT,DYNAINFO2(34,品种)-2*DYNAINFO2(208,品种));
TSELL(1,平多开仓数/3+2,LMT,DYNAINFO2(34,品种)-3*DYNAINFO2(208,品种));
END
//a2b2
IF DYNAINFO2(34,品种)-DYNAINFO2(28,品种)>DYNAINFO2(208,品种) AND DYNAINFO2(34,品种)-DYNAINFO2(28,品种)<=3*DYNAINFO2(208,品种) THEN
BEGIN
TSELL(1,平多开仓数/3,LMT,DYNAINFO2(34,品种)-DYNAINFO2(208,品种));
TSELL(1,平多开仓数/3,LMT,DYNAINFO2(28,品种)+DYNAINFO2(208,品种));
TSELL(1,平多开仓数/3+2,LMT,DYNAINFO2(28,品种));
END
//a2b3
IF DYNAINFO2(34,品种)-DYNAINFO2(28,品种)=DYNAINFO2(208,品种) THEN
BEGIN
IF DYNAINFO2(25,品种)>DYNAINFO2(31,品种) THEN
BEGIN
TSELL(1,平多开仓数/2,LMT,DYNAINFO2(34,品种));
TSELL(1,平多开仓数/2+1,LMT,DYNAINFO2(28,品种));
END
IF DYNAINFO2(25,品种)<DYNAINFO2(31,品种) THEN TSELL(1,平多开仓数,LMT,DYNAINFO2(28,品种));
END
END
//a3
IF 平多开仓数<12 AND 平多开仓数>3 AND 平多开仓数<=MA_VolDay THEN //注意holding是策略的理论持仓,他不管实际仓位
BEGIN //DYNAINFO2(31,品种) 是卖一量, DYNAINFO2(25,品种) 是买一量,DYNAINFO2(34,品种)卖一价;DYNAINFO2(28,品种)买一价;
//a3b1
IF DYNAINFO2(34,品种)-DYNAINFO2(28,品种)>=2*DYNAINFO2(208,品种) THEN
BEGIN
TSELL(1,平多开仓数/2+1,LMT,DYNAINFO2(34,品种)-DYNAINFO2(208,品种));
TSELL(1,平多开仓数/2,LMT,DYNAINFO2(28,品种)+DYNAINFO2(208,品种));
END
//a3b2
IF DYNAINFO2(34,品种)-DYNAINFO2(28,品种)=DYNAINFO2(208,品种) THEN
BEGIN
IF DYNAINFO2(25,品种)>DYNAINFO2(31,品种) THEN TSELL(1,平多开仓数,LMT,DYNAINFO2(34,品种));
IF DYNAINFO2(25,品种)<DYNAINFO2(31,品种) THEN TSELL(1,平多开仓数,LMT,DYNAINFO2(28,品种));
END
END
//a4
IF 平多开仓数<=3 AND 成交量比例<=1 THEN
BEGIN //DYNAINFO2(31,品种) 是卖一量, DYNAINFO2(25,品种) 是买一量,DYNAINFO2(34,品种)卖一价;DYNAINFO2(28,品种)买一价;
//a4b1
IF DYNAINFO2(34,品种)-DYNAINFO2(28,品种)>=2*DYNAINFO2(208,品种) THEN
BEGIN
IF DYNAINFO2(25,品种)>DYNAINFO2(31,品种) THEN TSELL(1,平多开仓数,LMT,DYNAINFO2(34,品种)-DYNAINFO2(208,品种));
IF DYNAINFO2(25,品种)<DYNAINFO2(31,品种) THEN TSELL(1,平多开仓数,LMT,DYNAINFO2(28,品种)+DYNAINFO2(208,品种));
END
//a4b2
IF DYNAINFO2(34,品种)-DYNAINFO2(28,品种)=DYNAINFO2(208,品种) THEN
BEGIN
IF DYNAINFO2(25,品种)>DYNAINFO2(31,品种) THEN TSELL(1,平多开仓数,LMT,DYNAINFO2(34,品种));
IF DYNAINFO2(25,品种)<DYNAINFO2(31,品种) THEN TSELL(1,平多开仓数,LMT,DYNAINFO2(28,品种));
END
END
END
IF 开多 THEN BEGIN//后台开多程序
多头开仓数:=myvolume;
//1.如果之前的开空持仓剩余数并且比现在多头开仓数还要多, 那就用之前的开空持仓剩余数,不需要开空。
IF TBUYHOLDINGEX('',品种,1)>=多头开仓数 THEN 多头开仓数:=TBUYHOLDINGEX('',品种,1);
//2.如果有平空挂单,之前的开空持仓剩余数比现在多头开仓数少, 总空头持仓比现在开仓数要多,那就用把要撤的单取消掉。
IF TBUYHOLDINGEX('',品种,2)>=多头开仓数 AND TBUYHOLDINGEX('',品种,1)<多头开仓数 THEN
BEGIN
TCANCEL(TBUYHOLDINGEX('',品种,3)>0,4);
多头开仓数:=TBUYHOLDINGEX('',品种,2);
END
//3.总空头持仓比现在开仓数要少
IF TBUYHOLDINGEX('',品种,2)<=多头开仓数 THEN
BEGIN
TCANCEL(TBUYHOLDINGEX('','',3)>0,2);
多头开仓数:=INTPART(多头开仓数-TBUYHOLDINGEX('',品种,1));
//3.1 达到开空条件, 先检测程序化是否平衡先, 如果是平衡状态, 开始空
IF(INTPART(多头开仓数)<1 ,1,INTPART(多头开仓数));//多头开仓数不能为0
//a.看成交量
//b.看卖一和买一的中间加个 DYNAINFO2(34,品种)卖一价;DYNAINFO2(28,品种)买一价; DYNAINFO(208)最小变动单位;
//成交量比例是自己设置的, 取5日的平均数。 千分之4那么多, 建议分两次下而且用加仓的方式来操作。
//a1
IF 多头开仓数>=80 or 成交量比例>=4 THEN
BEGIN//DYNAINFO2(31,品种) 是卖一量, DYNAINFO2(25,品种) 是买一量,DYNAINFO2(34,品种)卖一价;DYNAINFO2(28,品种)买一价;
//a1b1
IF DYNAINFO2(34,品种)-DYNAINFO2(28,品种)>3*DYNAINFO2(208,品种) THEN
BEGIN
TBUY(1,多头开仓数/8,LMT,DYNAINFO2(28,品种)-DYNAINFO2(208,品种)),NOATTACK;
TBUY(1,多头开仓数/8,LMT,DYNAINFO2(28,品种)),NOATTACK;
TBUY(1,多头开仓数/8,LMT,DYNAINFO2(28,品种)+DYNAINFO2(208,品种)),NOATTACK;
TBUY(1,多头开仓数/8,LMT,DYNAINFO2(28,品种)+2*DYNAINFO2(208,品种)),NOATTACK;
TBUY(1,多头开仓数/8,LMT,DYNAINFO2(28,品种)+3*DYNAINFO2(208,品种)),NOATTACK;
TBUY(1,多头开仓数/8,LMT,DYNAINFO2(34,品种)-3*DYNAINFO2(208,品种)),NOATTACK;
TBUY(1,多头开仓数/8,LMT,DYNAINFO2(34,品种)-2*DYNAINFO2(208,品种)),NOATTACK;
TBUY(1,多头开仓数/8,LMT,DYNAINFO2(34,品种)-DYNAINFO2(208,品种)),NOATTACK;
END
//a1b2
IF DYNAINFO2(34,品种)-DYNAINFO2(28,品种)>DYNAINFO2(208,品种) AND DYNAINFO2(34,品种)-DYNAINFO2(28,品种)<=3*DYNAINFO2(208,品种) THEN
BEGIN
TBUY(1,多头开仓数/4,LMT,DYNAINFO2(28,品种)-DYNAINFO2(208,品种)),NOATTACK;
TBUY(1,多头开仓数/4,LMT,DYNAINFO2(28,品种)),NOATTACK;
TBUY(1,多头开仓数/4,LMT,DYNAINFO2(28,品种)+DYNAINFO2(208,品种)),NOATTACK;
TBUY(1,多头开仓数/4,LMT,DYNAINFO2(34,品种)-DYNAINFO2(208,品种)),NOATTACK;
END
//a1b3
IF DYNAINFO2(34,品种)-DYNAINFO2(28,品种)=DYNAINFO2(208,品种) THEN
BEGIN
IF DYNAINFO2(25,品种)<DYNAINFO2(31,品种) THEN
BEGIN //DYNAINFO2(31,品种) 是卖一量, DYNAINFO2(25,品种) 是买一量,DYNAINFO2(34,品种)卖一价;DYNAINFO2(28,品种)买一价;
TBUY(1,多头开仓数/3,LMT,DYNAINFO2(28,品种)-DYNAINFO2(208,品种)),NOATTACK;
TBUY(1,2*多头开仓数/3,LMT,DYNAINFO2(28,品种)),NOATTACK;
END
IF DYNAINFO2(25,品种)>DYNAINFO2(31,品种) THEN
BEGIN
TBUY(1,多头开仓数/2,LMT,DYNAINFO2(28,品种)),NOATTACK;
TBUY(1,多头开仓数/2,LMT,DYNAINFO2(34,品种)),NOATTACK;
END
END
END
//a2
IF 多头开仓数<80 AND 多头开仓数>=12 AND 成交量比例<4 OR 成交量比例>=2 AND 成交量比例<4 THEN
BEGIN
//a2b1
IF DYNAINFO2(34,品种)-DYNAINFO2(28,品种)>3*DYNAINFO2(208,品种) THEN
BEGIN
TBUY(1,多头开仓数/3,LMT,DYNAINFO2(34,品种)-3*DYNAINFO2(208,品种)),NOATTACK;
TBUY(1,多头开仓数/3,LMT,DYNAINFO2(34,品种)-2*DYNAINFO2(208,品种)),NOATTACK;
TBUY(1,多头开仓数/3,LMT,DYNAINFO2(34,品种)-DYNAINFO2(208,品种)),NOATTACK;
END
//a2b2
IF DYNAINFO2(34,品种)-DYNAINFO2(28,品种)>DYNAINFO2(208,品种) AND DYNAINFO2(34,品种)-DYNAINFO2(28,品种)<=3*DYNAINFO2(208,品种) THEN
BEGIN
TBUY(1,多头开仓数/3,LMT,DYNAINFO2(28,品种)),NOATTACK;
TBUY(1,多头开仓数/3,LMT,DYNAINFO2(28,品种)+DYNAINFO2(208,品种)),NOATTACK;
TBUY(1,多头开仓数/3,LMT,DYNAINFO2(34,品种)-DYNAINFO2(208,品种)),NOATTACK;
END
//a2b3
IF DYNAINFO2(34,品种)-DYNAINFO2(28,品种)=DYNAINFO2(208,品种) THEN
BEGIN
IF DYNAINFO2(25,品种)>DYNAINFO2(31,品种) THEN
BEGIN
TBUY(1,多头开仓数/3,LMT,DYNAINFO2(28,品种)),NOATTACK;
TBUY(1,多头开仓数*2/3,LMT,DYNAINFO2(34,品种)),NOATTACK;
END
IF DYNAINFO2(25,品种)<DYNAINFO2(31,品种) THEN
BEGIN
TBUY(1,多头开仓数*2/3,LMT,DYNAINFO2(28,品种)),NOATTACK;
TBUY(1,多头开仓数/3,LMT,DYNAINFO2(34,品种)),NOATTACK;
END
END
END
//a3
IF 多头开仓数<12 AND 多头开仓数>3 AND 成交量比例<=2 THEN //注意holding是策略的理论持仓,他不管实际仓位
BEGIN //DYNAINFO2(31,品种) 是卖一量, DYNAINFO2(25,品种) 是买一量,DYNAINFO2(34,品种)卖一价;DYNAINFO2(28,品种)买一价;
//a3b1
IF DYNAINFO2(34,品种)-DYNAINFO2(28,品种)>=2*DYNAINFO2(208,品种) THEN
BEGIN
TBUY(1,多头开仓数/2,LMT,DYNAINFO2(28,品种)+DYNAINFO2(208,品种)),NOATTACK;
TBUY(1,多头开仓数/2,LMT,DYNAINFO2(34,品种)-DYNAINFO2(208,品种)),NOATTACK;
END
//a3b2
IF DYNAINFO2(34,品种)-DYNAINFO2(28,品种)=DYNAINFO2(208,品种) THEN
BEGIN
IF DYNAINFO2(25,品种)>DYNAINFO2(31,品种) THEN TBUY(1,多头开仓数,LMT,DYNAINFO2(34,品种)),NOATTACK;
IF DYNAINFO2(25,品种)<DYNAINFO2(31,品种) THEN TBUY(1,多头开仓数,LMT,DYNAINFO2(28,品种)),NOATTACK;
END
END
//a4
IF 多头开仓数<=3 AND 成交量比例<=1 THEN
BEGIN //DYNAINFO2(31,品种) 是卖一量, DYNAINFO2(25,品种) 是买一量,DYNAINFO2(34,品种)卖一价;DYNAINFO2(28,品种)买一价;
//a4b1
IF DYNAINFO2(34,品种)-DYNAINFO2(28,品种)>=2*DYNAINFO2(208,品种) THEN
BEGIN
IF DYNAINFO2(25,品种)>DYNAINFO2(31,品种) THEN TBUY(1,多头开仓数,LMT,DYNAINFO2(34,品种)-DYNAINFO2(208,品种));
IF DYNAINFO2(25,品种)<DYNAINFO2(31,品种) THEN TBUY(1,多头开仓数,LMT,DYNAINFO2(28,品种)+DYNAINFO2(208,品种));
END
//a4b2
IF DYNAINFO2(34,品种)-DYNAINFO2(28,品种)=DYNAINFO2(208,品种) THEN
BEGIN
IF DYNAINFO2(25,品种)>DYNAINFO2(31,品种) THEN TBUY(1,多头开仓数,LMT,DYNAINFO2(34,品种));
IF DYNAINFO2(25,品种)<DYNAINFO2(31,品种) THEN TBUY(1,多头开仓数,LMT,DYNAINFO2(28,品种));
END
END
END
END |
|