以文本方式查看主题
- 金字塔客服中心 - 专业程序化交易软件提供商 (http://weistock.com/bbs/index.asp)
-- 公式模型编写问题提交 (http://weistock.com/bbs/list.asp?boardid=4)
---- 请老师帮忙改进程序 (http://weistock.com/bbs/dispbbs.asp?boardid=4&id=86197)
|
-- 作者:syc
-- 发布时间:2015/10/15 9:01:03
-- 请老师帮忙改进程序
唐奇安通道模型在模拟使用中遇到开多条件成立时当期K线以T20HI开多不能成交的问题,想改成当开多条件成立后,依次检测接着的3根K线是否满足最低价小于开多条件成立时的T20HI,如满足,则以开多条件成立时的T20HI开多,否则,以第3根K线的收盘价开多;同理,开空条件成立后,依次检测接着的3根K线是否满足最高价大于开空条件成立时的T20LO,如满足,则以开空条件成立时的T20LO开空,否则,以第3根K线的收盘价开空; 平多及平空条件不变。 麻烦老师帮改写,多谢。
原代码如下: INPUT : T20(20,15,60,1); INPUT : SS(15,1,20,1); T20HI : REF(HHV(H,T20),1); T20LO : REF(LLV(L,T20),1); 开多平空条件:= H > T20HI; 开空平多条件:= L < T20LO; 平空:sellshort(开多平空条件 and holding<0,SS,limitr,T20HI); 平多: sell(开空平多条件 and holding>0,SS,limitr,T20LO); 开空: buyshort(开空平多条件 and holding=0,SS,limitr,T20LO); 开多: buy(开多平空条件 and holding=0,SS,limitr,T20HI);
|
-- 作者:jinzhe
-- 发布时间:2015/10/15 9:06:50
--
开多平空条件:= barslast(H > T20HI)=4 and all(l<ref(t20hi,barslast(H > T20HI)),3);
开空平多条件:= barslast(L < T20LO)=4 and all(h>ref(t20lo,barslast(L < T20LO)),3);
|
-- 作者:syc
-- 发布时间:2015/10/15 9:29:17
--
是我不会用?和我描述的不符合啊,老师再仔细看看?
|
-- 作者:jinzhe
-- 发布时间:2015/10/15 9:38:28
--
请解释说明哪里不符合
|
-- 作者:syc
-- 发布时间:2015/10/15 9:56:57
--
原文:使用中遇到开多条件成立时当期K线以T20HI开多不能成交的问题,想改成当开多条件成立后,依次检测接着的3根K线是否满足最低价小于开多条件成立时的T20HI,如满足,则以开多条件成立时的T20HI开多,否则,以第3根K线的收盘价开多; 我意图是:当开多条件成立时,此时设定TT=T20HI,检测下一根K最低价如小于TT,则以TT开多;否则,检测再下一根K最低价如小于TT,则以TT开多;否则,检测再下一根K最低价如小于TT,则以TT开多;(最多检测开多条件成立后3根K)否则,以开多条件成立后第3根K的收盘价开多。 开空单同样道理。 平空平多单还是按原代码执行,即H > T20HI 平空,L< T20LO 平多。
|
-- 作者:jinzhe
-- 发布时间:2015/10/15 10:18:09
--
开多平空条件:= barslast(H > T20HI)<4 and barslast(H > T20HI)>0 and barslast(l<valuewhen(H > T20HI,t20hi))<4 and barslast(l<valuewhen(H > T20HI,t20hi))>0;
开空平多条件:= barslast(L <T20LO)<4 and barslast(L < T20LO)>0 and barslast(h>valuewhen(L < T20LO,t20li))<4 and barslast(h>valuewhen(L < T20LO,t20li))>0;
|
-- 作者:syc
-- 发布时间:2015/10/15 10:32:39
--
老师,在原代码执行结果上有两个信
此主题相关图片如下:原代码执行结果.jpg

此主题相关图片如下:老师第一次改进后执行结果.png
 号,按段K线来说,我要的结果是:平仓按原信号位置及价格执行,开仓按原信号价格执行,开仓位置后移一根K.
|
-- 作者:syc
-- 发布时间:2015/10/15 10:42:08
--
像这种形况,平仓信号不变,需要的开仓信号是在原信号后第3根K的收盘价。
[此贴子已经被作者于2015/10/15 10:42:59编辑过]
|
-- 作者:syc
-- 发布时间:2015/10/15 10:51:00
--
怎么上传图?
此主题相关图片如下:原代码执行后的一种情况.jpg

|
-- 作者:jinzhe
-- 发布时间:2015/10/15 10:56:47
--
INPUT : T20(20,15,60,1);
INPUT : SS(15,1,20,1);
T20HI : REF(HHV(H,T20),1);
T20LO : REF(LLV(L,T20),1);
开多平空条件:= H > T20HI;
开空平多条件:= L < T20LO;
kd:= barslast(H > T20HI)<4 and barslast(H > T20HI)>0 and barslast(l<valuewhen(H > T20HI,t20hi))<4 and barslast(l<valuewhen(H > T20HI,t20hi))>0;
kk:= barslast(L <T20LO)<4 and barslast(L < T20LO)>0 and barslast(h>valuewhen(L < T20LO,t20li))<4 and barslast(h>valuewhen(L < T20LO,t20li))>0; 平空:sellshort(开多平空条件 and holding<0,SS,limitr,T20HI);
开多:buy(kd and holding=0,SS,limitr,valuewhen(h>t20hi,T20HI));
平多:sell(开空平多条件 and holding>0,SS,limitr,T20LO);
开空: buyshort(kk and holding=0,SS,limitr,valuewhen(l<t20lo,T20LO));
|