以文本方式查看主题

-  金字塔客服中心 - 专业程序化交易软件提供商  (http://weistock.com/bbs/index.asp)
--  公式模型编写问题提交  (http://weistock.com/bbs/list.asp?boardid=4)
----  咨询一个STKINDI函数问题  (http://weistock.com/bbs/dispbbs.asp?boardid=4&id=68897)

--  作者:paigutangcu
--  发布时间:2014/8/19 1:17:48
--  咨询一个STKINDI函数问题
大神们,好!.
今天试着编写一个带STKINDI函数的模型。要实现的交易系统为:假如当前周期的收盘价大于上一级周期的20均线时,只开多、平多。反之则只开空、平空。现贴代码如下:
INPUT:A(20,20,60,5),B(120,60,120,5),S1(26,5,30,5),P1(4,3,8,1),P(26,20,40,2),S(12,5,30,2),M(9,2,20,2),StopLost(20,10,40,5),A1(5,5,20,5),B1(60,40,80,5);


//P1为上一级周期数。
DIFF:=EMA(CLOSE,S)-EMA(CLOSE,P);
DEA:=EMA(DIFF,M);
MACD1:=2*(DIFF,M);



LS:=STKINDI(\'\',\'MA.MA1(20,12,26,60)\',0,P1,0);

Long1:=REF(CLOSE>LS,1) and REF(CROSS(DIFF,DEA),1);
Long2:=REF(CLOSE>LS,1) and REF(CROSS(DEA,DIFF),1);
if Long1 then 
begin

BUY(HOLDING=0,1,THISCLOSE);
end

if Long2 then 
begin 
SELL(HOLDING>0,1,THISCLOSE);
end

c1:STKINDI(‘’,’MA.MA1(60,12,26,60)’,0,P1,0);
//c2:MA2;
当前持仓:HOLDING,COLORGRAY,LINETHICK0;
当前资产:ASSET,NOAXIS,COLORGRAY;
可用现金:CASH(0),LINETHICK0

但是奇葩的是当当前周期的收盘价小于上一级周期的20均线时,也会开多,平多。
我选用的是菜粕连续合约5分钟图表。请问这个是哪里的错误?谢谢。


图片点击可在新窗口打开查看此主题相关图片如下:qq截图20140819011721.jpg
图片点击可在新窗口打开查看
[此贴子已经被作者于2014/8/19 1:19:01编辑过]

--  作者:jinzhe
--  发布时间:2014/8/19 9:03:40
--  

LS:=STKINDI(\'\',\'MA.MA1(20,12,26,60)\',0,P1,0);


Long1:=REF(CLOSE>LS,1) and REF(CROSS(DIFF,DEA),1);
Long2:=REF(CLOSE>LS,1) and REF(CROSS(DEA,DIFF),1);

 

 

 

ref被引用对象是错误的,做下修改:

LS:=STKINDI(\'\',\'MA.MA1(20,12,26,60)\',0,P1,-1);


Long1:=REF(CLOSE,1)>LS and REF(CROSS(DIFF,DEA),1);
Long2:=REF(CLOSE,1)>LS and REF(CROSS(DEA,DIFF),1);

[此贴子已经被作者于2014/8/19 9:03:55编辑过]

--  作者:paigutangcu
--  发布时间:2014/8/19 13:34:18
--  
大神,请问这样子改写跟原先的写法有何区别捏?
--  作者:jinzhe
--  发布时间:2014/8/19 13:48:54
--  
被引用对象的偏移是-1,而不是ref
--  作者:paigutangcu
--  发布时间:2014/8/19 15:35:12
--  
对不起,还是看不明白哦,有没有更详细的说明哈?感激不尽。
--  作者:jinzhe
--  发布时间:2014/8/19 15:51:52
--  
就是

LS:=STKINDI(\'\',\'MA.MA1(20,12,26,60)\',0,P1,0);

ref(ls,1)是不对的,要改成

LS:=STKINDI(\'\',\'MA.MA1(20,12,26,60)\',0,P1,-1);

 


--  作者:paigutangcu
--  发布时间:2014/8/19 16:48:32
--  
呃,为何用–1来控制呢?用ref来控制不行么?
--  作者:pyd
--  发布时间:2014/8/19 16:59:51
--  

在stkindi函数里是用-1表示上一个

单独表示上一个可以用ref

要样按照函数说明写


--  作者:paigutangcu
--  发布时间:2014/8/19 17:37:37
--  
呃?单独表示上一个是什么意思?
--  作者:pyd
--  发布时间:2014/8/20 8:56:04
--  

例如取上一根k的收盘价就是ref(c,1); 2根k前的开盘价是ref(open,2);

在callstock,stkindi函数里引用上一个周期要用-1,函数就这么规定的。