请教版主、高手,下面策略方案怎样在老图表上实现------(如果不行也可在新图表上编策略)
新建一个综合指标,名称VCR(含一个缺省N),其中有4条指标线分别是VX、CX、R、RX
策略方案如下:
缺省设置
D缺省=350,最小=0.00001,最大=1000;
M1缺省=1.5最小=0.0001,最大=100;
M2缺省=0.8,最小=0.0001,最大=100;
A1缺省=75最小=0,最大=100;
A2缺省=25最小=0,最大=100;
B1缺省=8最小=-60,最大=60;
B2缺省=12最小=-60,最大=60;
首次开多条件(程序开启后只执行一次):
一、60分钟分析周期VCR指标中VX >=M1并且5分钟分析周期VCR指标中的R <=A1并且5分钟分析周期VCR指标中的 RX>=B2或者
二、60分钟分析周期VCR指标中RX>=B1并且5分钟分析周期VCR指标中RX>=B2并且5分钟分析周期VCR指标中的
R <=A1 或者
三、60分钟分析周期VCR指标中CX>=M1并且5分钟分析周期VCR指标中的R <=A1并且5分钟分析周期VCR指标中的RX>=B2
首次开空条件(程序开启后只执行一次):
一、60分钟分析周期VCR指标中VX <=M2并且5分钟分析周期VCR指标中的R >=A2并且5分钟分析周期VCR指标中的
RX<=-B2 或者
二、60分钟分析周期VCR指标中RX<=-B1并且5分钟分析周期VCR指标中RX<=-B2并且5分钟分析周期VCR指标中的
R >=A2 或者
三、60分钟分析周期VCR指标中CX<=M2并且5分钟分析周期VCR指标中的R >=A2并且5分钟分析周期VCR指标中的
RX<=-B2
开多仓条件(程序开启后循环执行):CLOSE>=开空以来的最低价+D;
平多仓条件(程序开启后循环执行):CLOSE<=开多以来的最高价-D;
开空仓条件(程序开启后循环执行):CLOSE<=开多以来的最高价-D;
平空仓条件(程序开启后循环执行):CLOSE>=开空以来的最低价+D;
问题正在解决中
补充说明一下,以上程序涉及三个周期。是加载在1分钟或30秒的图表分析周期上运行的。
不知行不行
input:D(350,0.00001,1000,0.00001),M1(1.5,0.0001,100,0.0001),M2(0.8,0.0001,100,0.0001);
input:A1(75,0,100,1),A2(25,0,100,1),B1(8,-60,60,1),B2(12,-60,60,1);
//下列变量用于区别首次,和完成后面的条件 开多以来和开空以来
VARIABLE:kkyl=0,kdyl=0;
VX:"vcr.vx";
CX:"vcr.cx";
R:"vcr.r";
RX:"vcr.rx";
//首次开多条件(程序开启后只执行一次):
if STKINDI('','vcr.vx',2,5)>=M1 and STKINDI('','vcr.r',2,2)<=A1 and STKINDI('','vcr.rx',2,2)>=B2 and kdyl=0 then
begin
BUY(kdyl=0,1,market);
kdyl=BARPOS;
end
if STKINDI('','vcr.rx',2,5)>=B1 and STKINDI('','vcr.rx',2,2)>=B2 and STKINDI('','vcr.r',2,2)<=A1 and kdyl=0 then
begin
BUY(kdyl=0,1,market);
kdyl=BARPOS;
end
if STKINDI('','vcr.cx',2,5)>=M1 and STKINDI('','vcr.r',2,2)<=A1 and STKINDI('','vcr.rx',2,2)>=B2 and kdyl=0 then
begin
BUY(kdyl=0,1,market);
kdyl=BARPOS;
end
//首次开空条件(程序开启后只执行一次):
if STKINDI('','vcr.vx',2,5)<=M2 and STKINDI('','vcr.r',2,2)>=A2 and STKINDI('','vcr.rx',2,2)<=-B2 and kkyl=0 then
begin
BUYSHORT( kkyl=0,1,market);
kkyl=BARPOS;
end
if STKINDI('','vcr.rx',2,5)<=-B1 and STKINDI('','vcr.rx',2,2)<=-B2 and STKINDI('','vcr.r',2,2)>=A2 and kkyl=0 then
begin
BUYSHORT( kkyl=0,1,market);
kkyl=BARPOS;
end
if STKINDI('','vcr.cx',2,5)<=M2 and STKINDI('','vcr.r',2,2)>=A2 and STKINDI('','vcr.rx',2,2)<=-B2 and kkyl=0 then
begin
BUYSHORT( kkyl=0,1,market);
kkyl=BARPOS;
end
//开多仓条件(程序开启后循环执行):CLOSE>=开空以来的最低价+D;
if close>=LLV(c,BARPOS-kkyl)+D and kkyl<>0 then BUY(HOLDING<>0,1,market);
//平多仓条件(程序开启后循环执行):CLOSE<=开多以来的最高价-D;
if close<=HHV(c,BARPOS-kdyl)-D and kdyl<>0 then SELL(HOLDING<>0,1,market);
//开空仓条件(程序开启后循环执行):CLOSE<=开多以来的最高价-D;
if close<=HHV(c,BARPOS-kdyl)-D and kdyl<>0 then BUYSHORT(HOLDING<>0,1,market);
//平空仓条件(程序开启后循环执行):CLOSE>=开空以来的最低价+D;
if close>=LLV(c,BARPOS-kkyl)+D and kkyl<>0 then BUY(HOLDING<>0,1,market);
不论可行与否,都倍感谢意!
我这几天试试了下,可以自动交易,但是主要跟X的值有关系,希望有帮助,其他真没啥办法了
input:X(350,0.00001,1000),N(60,1,1000),E(10,1,1000),M1(1.5,0.01,100),M2(0.5,0.01,100);
variable:AA=0,BB=0,CC=0;
IF C>O AND AA=0 AND HOLDING=0 AND CROSS(MA(C,5),MA(C,30)) THEN BEGIN
BUY(1,1,MARKET);
AA:=AA+1;
END
IF C<O AND HOLDING=0 AND CROSS(MA(C,30),MA(C,5)) THEN BEGIN
BUYSHORT(1,1,MARKET);
AA:=AA+1;
END
开多以来的最高价:=HHV(H,ENTERBARS);
开空以来的最低价:=LLV(L,EXITBARS);
开多仓条件:=CLOSE>=开空以来的最低价+X*MINDIFF;
平多仓条件:=CLOSE<=开多以来的最高价-X*MINDIFF;
开空仓条件:=CLOSE<=开多以来的最高价-X*MINDIFF;
平空仓条件:=CLOSE>=开空以来的最低价+X*MINDIFF;
IF HOLDING>=0 THEN BEGIN
SELL(平多仓条件,HOLDING,market);
BUYSHORT(开空仓条件,1,market);
END
IF HOLDING<=0 THEN BEGIN
SELLSHORT(平空仓条件,HOLDING,market);
BUY(开多仓条件,1,market);
END
持仓量:holding,linethick0;
资产:ASSET,NOAXIS,colorblue;