以文本方式查看主题

-  金字塔客服中心 - 专业程序化交易软件提供商  (http://weistock.com/bbs/index.asp)
--  公式模型编写问题提交  (http://weistock.com/bbs/list.asp?boardid=4)
----  请问怎样引用不同周期上的判断数据  (http://weistock.com/bbs/dispbbs.asp?boardid=4&id=424)

--  作者:gwdpacific
--  发布时间:2009/12/9 18:48:03
--  请问怎样引用不同周期上的判断数据

我看了《设计指南》里关于跨周期引用数据的说明,还不能很好领会,我想,引用几条不同的指标线应该没问题,但如果是一条变色线,该怎么跨周期引用呢,就如我写的下面这个程序交易公式,想用于做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

[此贴子已经被作者于2009-12-9 19:06:45编辑过]

--  作者:金字塔
--  发布时间:2009/12/9 19:29:43
--  
 

第一步,制作一个名为“变色龙”的指标

 拉升力:=(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

 

[此贴子已经被作者于2009-12-9 19:31:05编辑过]

--  作者:gwdpacific
--  发布时间:2009/12/9 19:37:10
--  非常感谢!

刚接了学舞蹈的女儿回来,一看管理员回复了,还这么仔细严谨,感动!


--  作者:gwdpacific
--  发布时间:2009/12/11 1:27:14
--  请问象这样不用多周期同向来过滤信号,而是加上判断是否逆向持仓的语句是否可行

也就是可能会有不成功的交易,但也会多一些成功的交易,并且及时补救因信号消失而造成了逆向持仓的情况,并且在红线空仓时补上多仓,绿线空仓时补上空仓。如果可行的话,怎么能让检查逆向持仓的动作发生在开仓一个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

 

[此贴子已经被作者于2009-12-11 1:31:56编辑过]