以文本方式查看主题

-  金字塔客服中心 - 专业程序化交易软件提供商  (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));