以文本方式查看主题 - 金字塔客服中心 - 专业程序化交易软件提供商 (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分钟图表。请问这个是哪里的错误?谢谢。 [此贴子已经被作者于2014/8/19 1:19:01编辑过]
|
-- 作者:jinzhe -- 发布时间:2014/8/19 9:03:40 -- LS:=STKINDI(\'\',\'MA.MA1(20,12,26,60)\',0,P1,0);
ref被引用对象是错误的,做下修改: LS:=STKINDI(\'\',\'MA.MA1(20,12,26,60)\',0,P1,-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,函数就这么规定的。 |