Rss & SiteMap

金字塔客服中心 - 专业程序化交易软件提供商 http://www.weistock.com/bbs/

专业程序化软件提供商
共9 条记录, 每页显示 10 条, 页签: [1]
[浏览完整版]

标题:模型可以运行,但信号不正确,且无法实现日内平仓,求高手支持

1楼
拉普拉斯之魔 发表于: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


2楼
拉普拉斯之魔 发表于:2013/10/13 21:15:10

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

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

2,无法达成日内平仓

3,信号不准确

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

 

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


4楼
jinzhe 发表于:2013/10/14 9:38:49
T2定义在哪里?
5楼
拉普拉斯之魔 发表于:2013/10/14 9:46:12

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

 

 

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

6楼
拉普拉斯之魔 发表于:2013/10/14 10:03:28
不知道为什么复制的时候出错了
7楼
jinzhe 发表于:2013/10/14 11:02:09

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

 

YO1

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

 

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

8楼
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

9楼
拉普拉斯之魔 发表于:2013/10/14 11:06:13

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

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

共9 条记录, 每页显示 10 条, 页签: [1]


Powered By Dvbbs Version 8.3.0
Processed in 0.01367 s, 3 queries.