Rss & SiteMap

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

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

标题:咨询DUALTHRUST模型问题

1楼
paigutangcu 发表于:2014/12/10 19:23:24
大神好:
今天学习编写DUALTHRUST模型,测试的时候发现。如图。当选用RB1505合约测试的时候,到了午盘后上下轨发生变化。但是选用RB00连续合约的时候午盘后上下轨值发生的变化情况会不一样,比如说最近几天,请问这个是什么情况?
INPUT:N(7,1,10,1),NMIN(50,1,1000,1),SS(5,1,100,1);
VARIABLE:OPEN_COUNT=0;
CYC:=BARSLAST(DATE<>REF(DATE,1))+1;
昨高:=CALLSTOCK(STKLABEL,VTHIGH,6,-1);
昨低:=CALLSTOCK(STKLABEL,VTLOW,6,-1);
昨收:=CALLSTOCK(STKLABEL,VTCLOSE,6,-1);
开盘价:=VALUEWHEN(CYC=1,OPEN);
HH:=HHV(昨高,N);//N日HIGH的最高价
HC:=HHV(昨收,N);//N日CLOSE的最高价
LC:=LLV(昨收,N);//N日CLOSE的最低价
LL:=LLV(昨低,N);//N日LOW的最低价
浮动区间:=MAX(HH-LL,HC-LL);//RANGE 
上轨:开盘价+K1*浮动区间;
下轨:开盘价-K2*浮动区间;

图片点击可在新窗口打开查看此主题相关图片如下:qq截图20141210192342.jpg
图片点击可在新窗口打开查看

图片点击可在新窗口打开查看此主题相关图片如下:qq截图20141210192311.jpg
图片点击可在新窗口打开查看






2楼
jinzhe 发表于:2014/12/11 8:49:04
CYC:=BARSLAST(DATE<>REF(DATE,1))+1;
昨高:=CALLSTOCK(STKLABEL,VTHIGH,6,-1);
昨低:=CALLSTOCK(STKLABEL,VTLOW,6,-1);
昨收:=CALLSTOCK(STKLABEL,VTCLOSE,6,-1);
开盘价:=VALUEWHEN(CYC=1,OPEN);
HH:=HHV(昨高,N);//N日HIGH的最高价
HC:=HHV(昨收,N);//N日CLOSE的最高价
LC:=LLV(昨收,N);//N日CLOSE的最低价
LL:=LLV(昨低,N);//N日LOW的最低价
 
跨周期极值这样算是错的
3楼
paigutangcu 发表于:2014/12/11 13:54:22
那要如何计算?
4楼
paigutangcu 发表于:2014/12/11 13:55:28
这个代码就是系统自带的模型代码。
5楼
pyd 发表于:2014/12/11 14:11:52

要用stkindi函数调用日线周期的最高最低价,要再建一个公式1,公式1的内容:

input:n(1,1,100,1);
HH:=HHV(h,N);//N日HIGH的最高价
HC:=HHV(c,N);//N日CLOSE的最高价
LC:=LLV(c,N);//N日CLOSE的最低价
LL:=LLV(l,N);//N日LOW的最低价

 

公式Dual Thrust

//下面红色部分是Dual Thrust里改变的部分

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);
CYC:=BARSLAST(DATE<>REF(DATE,1))+1;
昨高:=CALLSTOCK(STKLABEL,VTHIGH,6,-1);
昨低:=CALLSTOCK(STKLABEL,VTLOW,6,-1);
昨收:=CALLSTOCK(STKLABEL,VTCLOSE,6,-1);
开盘价:=VALUEWHEN(CYC=1,OPEN);
hh:=stkindi('','公式1.hh',0,6,-1);//N日HIGH的最高价
hc:=stkindi('','公式1.hc',0,6,-1);//N日CLOSE的最高价
lc:=stkindi('','公式1.lc',0,6,-1);//N日CLOSE的最低价
ll:=stkindi('','公式1.ll',0,6,-1);//N日LOW的最低价

浮动区间:=MAX(HH-LL,HC-LL);//RANGE
上轨:开盘价+K1*浮动区间;
下轨:开盘价-K2*浮动区间;
T1:=TIME>OPENTIME(1) AND TIME<CLOSETIME(0)-NMIN*100;
T2:=TIME>=CLOSETIME(0)-NMIN*100;
手数:=SS;
//交易条件
开多条件:=C>上轨 AND HOLDING=0;
开空条件:=C<下轨 AND HOLDING=0;
//交易系统
开多:BUY(开多条件 AND T1 AND CYC>1,手数,MARKET);
开空:BUYSHORT(开空条件 AND T1 AND CYC>1,手数,MARKET);
收盘平多:SELL(T2,手数,MARKET);
收盘平空:SELLSHORT(T2,手数,MARKET);

当前持仓:HOLDING,COLORGRAY,LINETHICK0;
当前资产:ASSET,NOAXIS,COLORGRAY;//输出当前资产,但不影响坐标最高最低值

[此贴子已经被作者于2014/12/11 14:12:27编辑过]
6楼
jinzhe 发表于:2014/12/11 14:14:18
CYC:=BARSLAST(DATE<>REF(DATE,1))+1;
昨高:=CALLSTOCK(STKLABEL,VTHIGH,6,-1);
昨低:=CALLSTOCK(STKLABEL,VTLOW,6,-1);
昨收:=CALLSTOCK(STKLABEL,VTCLOSE,6,-1);
开盘价:=VALUEWHEN(CYC=1,OPEN);
HH:=HHV(昨高,N);//N日HIGH的最高价
HC:=HHV(昨收,N);//N日CLOSE的最高价
LC:=LLV(昨收,N);//N日CLOSE的最低价
LL:=LLV(昨低,N);//N日LOW的最低价
 

改成下面这样的: 

公式1:

hh:hhv(ref(h,1),7);

hc:hhv(ref(c,1),7);

lc:llv(ref(c,1),7);

ll:llv(ref(l,1),7);

 

公式2:

hh:stkindi('','公式1.hh',0,6);

hc:stkindi('','公式1.hc',0,6);

lc:stkindi('','公式1.lc',0,6);

ll:stkindi('','公式1.ll',0,6);

 

公式1用来引用,不做实际操作,公式2是实际操作的公式

[此贴子已经被作者于2014/12/11 14:14:37编辑过]
7楼
jinzhe 发表于:2014/12/11 14:15:06
然后把剩下的代码接着写入公式2里面
8楼
paigutangcu 发表于:2014/12/11 14:43:17
好,谢谢。
9楼
paigutangcu 发表于:2014/12/11 14:43:40
好,谢谢。。
10楼
paigutangcu 发表于:2014/12/11 19:22:28
那么我们更近一步。比如说为了调试方便,我要在本页调用这个公式,我设想是这样子的。
HH:=stkindi('','hhv(ref(h,1),'+NUMTOSTR(N,0)+')',0,6);//N日HIGH的最高价
这样子写?可是调试发现行不通。这个要怎么破????
共11 条记录, 每页显示 10 条, 页签: [1] [2]


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