以文本方式查看主题

-  金字塔客服中心 - 专业程序化交易软件提供商  (http://www.weistock.com/bbs/index.asp)
--  公式模型编写问题提交  (http://www.weistock.com/bbs/list.asp?boardid=4)
----  模型可以运行,但信号不正确,且无法实现日内平仓,求高手支持  (http://www.weistock.com/bbs/dispbbs.asp?boardid=4&id=57485)

--  作者:拉普拉斯之魔
--  发布时间:2013/10/13 21:12:18
--  模型可以运行,但信号不正确,且无法实现日内平仓,求高手支持
INPUT:N(1,1,100,1),K1(0.7,0.1,1,0.1),K2(0.7,0.1,1,0.1),NMIN(10,1,100,1),SS(1,1,10000,1);

C1:="Y01$CLOSE";
C2:="M01$CLOSE";

Spread:=C1-C2;

CYC:=BARSLAST(DATE<>REF(DATE,1))+1;
Spread[1]:REF(Spread,1);
HH:HHV(Spread[1],225);
LL:=LLV(Spread[1],225);
OO:=valuewhen(date<>ref(date,1),Spread);

T1:=TIME>OPENTIME(1) AND TIMET2:=TIME>=CLOSETIME(0)-NMIN*100;
手数:=SS;
//交易条件


浮动区间:=HH-LL;//RANGE
上轨:OO+K1*浮动区间,,COLORYELLOW;
下轨:OO-K2*浮动区间,,COLORYELLOW;

//交易条件
开多条件:=Spread>上轨 AND HOLDING=0;
开空条件:=Spread<下轨 AND HOLDING=0;
//交易系统
开多:BUY(开多条件 AND T1 AND CYC>1 AND TIME<1445,手数,MARKET);
开空:BUYSHORT(开空条件 AND T1 AND CYC>1 AND TIME<1445,手数,MARKET);


IF STRCMP(STKLABEL,\'YO1\') = 0 THEN
BEGIN
SELL(T2,手数,MARKET);
BUY(开多条件 AND T1 AND CYC>1 AND TIME<1445,手数,MARKET);
BUYSHORT(开空条件 AND T1 AND CYC>1 AND TIME<1445,1,MARKET);
SELLSHORT(T2,手数,MARKET)
END

IF STRCMP(STKLABEL,\'M01\') = 0 THEN
BEGIN
SELL(T2,手数,MARKET);
BUY(开空条件 AND T1 AND CYC>1 AND TIME<14450,1,MARKET);
BUYSHORT(开多条件 AND T1 AND CYC>1 AND TIME<1445,1,MARKET);
SELLSHORT(T2,手数,MARKET)
end



--  作者:拉普拉斯之魔
--  发布时间:2013/10/13 21:15:10
--  

这是根据软件经典的DS日内模型改变的价差套利版本,因为今年行情反向套利机会很多,如七八九月份的豆油豆粕价差反向套利,鉴于此,我就把原先收盘价替换成价差,赌的是日内价差的持续扩大,但编写出来之后发现几个问题

1,豆粕可以开仓,豆油无法开仓

2,无法达成日内平仓

3,信号不准确

请版主提供一些思路或讲解,谢谢

 


--  作者:拉普拉斯之魔
--  发布时间:2013/10/13 23:01:04
--  

更正一下,函数为

 

INPUT:N(1,1,100,1),K1(0.7,0.1,1,0.1),K2(0.7,0.1,1,0.1),NMIN(10,1,100,1),SS(1,1,10000,1);

C1:="Y01$CLOSE";
C2:="M01$CLOSE";

Spread:=C1-C2;

CYC:=BARSLAST(DATE<>REF(DATE,1))+1;
Spread[1]:REF(Spread,1);
HH:HHV(Spread[1],225);
LL:=LLV(Spread[1],225);
OO:=valuewhen(date<>ref(date,1),Spread);

T1:=TIME>OPENTIME(1) AND TIMET2:=TIME>=CLOSETIME(0)-NMIN*100;
手数:=SS;
//交易条件


浮动区间:=HH-LL;//RANGE
上轨:OO+K1*浮动区间,,COLORYELLOW;
下轨:OO-K2*浮动区间,,COLORYELLOW;

//交易条件
开多条件:=Spread>上轨 AND HOLDING=0;
开空条件:=Spread<下轨 AND HOLDING=0;
//交易系统


IF STRCMP(STKLABEL,\'YO1\') = 0 THEN
BEGIN
SELL(T2,手数,MARKET);
BUY(开多条件 AND T1 AND CYC>1 AND TIME<1445,手数,MARKET);
BUYSHORT(开空条件 AND T1 AND CYC>1 AND TIME<1445,1,MARKET);
SELLSHORT(T2,手数,MARKET)
END

IF STRCMP(STKLABEL,\'M01\') = 0 THEN
BEGIN
SELL(T2,手数,MARKET);
BUY(开空条件 AND T1 AND CYC>1 AND TIME<14450,1,MARKET);
BUYSHORT(开多条件 AND T1 AND CYC>1 AND TIME<1445,1,MARKET);
SELLSHORT(T2,手数,MARKET)
end



--  作者:jinzhe
--  发布时间:2013/10/14 9:38:49
--  
T2定义在哪里?
--  作者:拉普拉斯之魔
--  发布时间:2013/10/14 9:46:12
--  

T1:=TIME>OPENTIME(1) AND TIME<CLOSETIME(0)-NMIN*100;
T2:=TIME>=CLOSETIME(0)-NMIN*100;

 

 

这是界定了日内阶段开平仓的时间


--  作者:拉普拉斯之魔
--  发布时间:2013/10/14 10:03:28
--  
不知道为什么复制的时候出错了
--  作者:jinzhe
--  发布时间:2013/10/14 11:02:09
--  

我了个去啊。。。什么小细节问题都出来了。。。而且这种小细节问题根本就不好找我调试了半天。。。

 

YO1

你写的这个,不是Y01 (大写Y 数字0数字1)而是YO1(大写Y,大写O,数字1)

 

在金字塔里面大写O和数字0从肉眼上看根本看不出来区别


--  作者:jinzhe
--  发布时间:2013/10/14 11:02:54
--  

还有些细节代码我做了下修改,比如上个周期的spread不能那样写,时代函数不能省略后面的0

 

INPUT:N(1,1,100,1),K1(0.7,0.1,1,0.1),K2(0.7,0.1,1,0.1),NMIN(10,1,100,1),SS(1,1,10000,1);

C1:"Y01$CLOSE";
C2:"M01$CLOSE";

Spread:C1-C2;

CYC:=BARSLAST(DATE<>REF(DATE,1))+1;
cc:=cyc>1;
Spread_1:=REF(Spread,1);
HH:=HHV(Spread_1,225);
LL:=LLV(Spread_1,225);
OO:=valuewhen(date<>ref(date,1),Spread);

T1:=TIME>OPENTIME(1) AND TIME<CLOSETIME(0)-NMIN*100;
T2:=TIME>=CLOSETIME(0)-NMIN*100;

 


手数:=SS;
//交易条件


浮动区间:=HH-LL;//RANGE
上轨:OO+K1*浮动区间,,COLORYELLOW;
下轨:OO-K2*浮动区间,,COLORYELLOW;

//交易条件
开多条件:=Spread>上轨 AND HOLDING=0;
开空条件:=Spread<下轨 AND HOLDING=0;
//交易系统


DRAWTEXT(ISLASTBAR,CLOSE,STKLABEL);
IF STRCMP(STKLABEL,\'Y01\')=0 THEN
BEGIN
SELLSHORT(T2,手数,MARKET);
BUY(开多条件 AND T1 AND CYC>1 AND TIME<144500,手数,MARKET);
SELL(T2,手数,MARKET);
BUYSHORT(开空条件 AND T1 AND CYC>1 AND TIME<144500,1,MARKET);

END

IF STRCMP(STKLABEL,\'M01\') = 0 THEN
BEGIN
SELLSHORT(T2,手数,MARKET);
BUY(开空条件 AND T1 AND CYC>1 AND TIME<144500,1,MARKET);
SELL(T2,手数,MARKET);
BUYSHORT(开多条件 AND T1 AND CYC>1 AND TIME<144500,1,MARKET);
 
end


--  作者:拉普拉斯之魔
--  发布时间:2013/10/14 11:06:13
--  

...................不好意思,麻烦版主了,万分感谢

之前那个不知道为啥复制成这样子的,后面那个确实是疏忽,谢谢帮忙