我看了《设计指南》里关于跨周期引用数据的说明,还不能很好领会,我想,引用几条不同的指标线应该没问题,但如果是一条变色线,该怎么跨周期引用呢,就如我写的下面这个程序交易公式,想用于做5分钟周期的交易,当“做空”线变红时可以买多和平空,“做空”线变绿时平多和做空,但是考虑到,当30分钟或60分钟周期指标线的颜色与当前5分钟周期的颜色相反时,按发出的交易信号去做就会亏损或利润很小,不值得去做。那么我怎么把对30或60分钟周期的判断加在里面呢?就是当30或60分钟线为红时,系统才采用5分钟周期指标线变红的信号,或者反过来,同为绿时做空。
拉升力:=(CLOSE-LLV(LOW,28))/(HHV(HIGH,30)-LLV(LOW,36))*0.6*CLOSE;
拉升力A:=SMA(拉升力,6.3,1);
波峰波谷:=SMA(拉升力A,3,1);
拉升力B:=3*拉升力A-2.1*波峰波谷;
空方:=3*波峰波谷-1* 拉升力A;
做空:=IF(空方>拉升力B,拉升力B,空方);
多头:IF(做空>=REF(做空,1) ,做空,DRAWNULL),COLORRED,LINETHICK3;
空头:IF(做空<REF(做空,1),做空,DRAWNULL),COLORGREEN,LINETHICK3;
D:=(做空>=REF(做空,1) AND REF(做空,1)<REF(做空,2));
K:=(做空<=REF(做空,1) AND REF(做空,1)>REF(做空,2));
begin
if D then
begin
//平空开多
TSELLSHORT(D,1,LMT,C);
TBUY(D,1,LMT,C);
end
if K then
begin
//平多开空
TSELL(K,1,LMT,C);
TBUYSHORT(K,1,LMT,C);
end
if TIME=145500 AND THOLDING>0 then
begin
TSELL(TIME=145500 AND THOLDING>0,0,MKT);
end
IF TIME=145500 AND THOLDING<0 then
begin
TSELLSHORT(TIME=145500 AND THOLDING<0,0,MKT);
end
end
第一步,制作一个名为“变色龙”的指标
拉升力:=(CLOSE-LLV(LOW,28))/(HHV(HIGH,30)-LLV(LOW,36))*0.6*CLOSE;
拉升力A:=SMA(拉升力,6.3,1);
波峰波谷:=SMA(拉升力A,3,1);
拉升力B:=3*拉升力A-2.1*波峰波谷;
空方:=3*波峰波谷-1* 拉升力A;
做空:=IF(空方>拉升力B,拉升力B,空方);
多头:IF(做空>=REF(做空,1) ,做空,DRAWNULL),COLORRED,LINETHICK3;
空头:IF(做空<REF(做空,1),做空,DRAWNULL),COLORGREEN,LINETHICK3;
D0:做空>=REF(做空,1),LINETHICK0;
K0:做空<=REF(做空,1),LINETHICK0;
第二步,交易模型为:
拉升力:=(CLOSE-LLV(LOW,28))/(HHV(HIGH,30)-LLV(LOW,36))*0.6*CLOSE;
拉升力A:=SMA(拉升力,6.3,1);
波峰波谷:=SMA(拉升力A,3,1);
拉升力B:=3*拉升力A-2.1*波峰波谷;
空方:=3*波峰波谷-1* 拉升力A;
做空:=IF(空方>拉升力B,拉升力B,空方);
多头:=IF(做空>=REF(做空,1) ,做空,DRAWNULL),COLORRED,LINETHICK3;
空头:=IF(做空<REF(做空,1),做空,DRAWNULL),COLORGREEN,LINETHICK3;
D:=(做空>=REF(做空,1) AND REF(做空,1)<REF(做空,2));
K:=(做空<=REF(做空,1) AND REF(做空,1)>REF(做空,2));
D30:="变色龙.D0#MIN30";
K30:="变色龙.K0#MIN30";
D60:="变色龙.D0#MIN60";
K60:="变色龙.K0#MIN60";
begin
if D then
begin
//平空开多
TSELLSHORT(D,1,LMT,C);
TBUY(D AND D30 AND D60,1,LMT,C);
end
if K then
begin
//平多开空
TSELL(K,1,LMT,C);
TBUYSHORT(K AND K30 AND K60,1,LMT,C);
end
if TIME=145500 AND THOLDING>0 then
begin
TSELL(TIME=145500 AND THOLDING>0,0,MKT);
end
IF TIME=145500 AND THOLDING<0 then
begin
TSELLSHORT(TIME=145500 AND THOLDING<0,0,MKT);
end
end
刚接了学舞蹈的女儿回来,一看管理员回复了,还这么仔细严谨,感动!
也就是可能会有不成功的交易,但也会多一些成功的交易,并且及时补救因信号消失而造成了逆向持仓的情况,并且在红线空仓时补上多仓,绿线空仓时补上空仓。如果可行的话,怎么能让检查逆向持仓的动作发生在开仓一个K线后?
第一步,制作一个名为“变色龙”的指标
拉升力:=(CLOSE-LLV(LOW,28))/(HHV(HIGH,30)-LLV(LOW,36))*0.6*CLOSE;
拉升力A:=SMA(拉升力,6.3,1);
波峰波谷:=SMA(拉升力A,3,1);
拉升力B:=3*拉升力A-2.1*波峰波谷;
空方:=3*波峰波谷-1* 拉升力A;
做空:=IF(空方>拉升力B,拉升力B,空方);
多头:IF(做空>=REF(做空,1) ,做空,DRAWNULL),COLORRED,LINETHICK3;
空头:IF(做空<REF(做空,1),做空,DRAWNULL),COLORGREEN,LINETHICK3;
D0:做空>=REF(做空,1),LINETHICK0;
K0:做空<=REF(做空,1),LINETHICK0;
第二步,交易模型为:
拉升力:=(CLOSE-LLV(LOW,28))/(HHV(HIGH,30)-LLV(LOW,36))*0.6*CLOSE;
拉升力A:=SMA(拉升力,6.3,1);
波峰波谷:=SMA(拉升力A,3,1);
拉升力B:=3*拉升力A-2.1*波峰波谷;
空方:=3*波峰波谷-1* 拉升力A;
做空:=IF(空方>拉升力B,拉升力B,空方);
多头:=IF(做空>=REF(做空,1) ,做空,DRAWNULL),COLORRED,LINETHICK3;
空头:=IF(做空<REF(做空,1),做空,DRAWNULL),COLORGREEN,LINETHICK3;
D:=(做空>=REF(做空,1) AND REF(做空,1)<REF(做空,2));
K:=(做空<=REF(做空,1) AND REF(做空,1)>REF(做空,2));
D30:="变色龙.D0#MIN30";
K30:="变色龙.K0#MIN30";
D60:="变色龙.D0#MIN60";
K60:="变色龙.K0#MIN60";
多头方向:=多头 AND D30 AND D60;
空头方向:=空头 AND K30 AND K60;
begin
if D then
begin
//平空开多
TSELLSHORT(D,1,LMT,C);
TBUY(D,1,LMT,C);
end
if 空头方向 AND THOLDING>=0 then
//若因信号出现又消失造成逆向持多,平多补空
TSELL(空头方向 AND THOLDING>0,1,LMT,C);
TBUYSHORT(空头方向 AND THOLDING=0,1,LMT,C);
end
if K then
begin
//平多开空
TSELL(K,1,LMT,C);
TBUYSHORT(K,1,LMT,C);
end
if 多头方向 AND THOLDING<=0 then
//若因信号出现又消失造成逆向持空,平空补多
TSELLSHORT(多头方向 AND THOLDING<0,1,LMT,C);
TBUY(多头方向 AND THOLDING=0,1,LMT,C);
end
if TIME=145500 AND THOLDING>0 then
begin
TSELL(TIME=145500 AND THOLDING>0,0,MKT);
end
IF TIME=145500 AND THOLDING<0 then
begin
TSELLSHORT(TIME=145500 AND THOLDING<0,0,MKT);
end
end