以文本方式查看主题 - 金字塔客服中心 - 专业程序化交易软件提供商 (http://222.73.7.161/bbs/index.asp) -- 公式模型编写问题提交 (http://222.73.7.161/bbs/list.asp?boardid=4) ---- 求助,跨周期改写的方法 (http://222.73.7.161/bbs/dispbbs.asp?boardid=4&id=182571) |
-- 作者:幸运60 -- 发布时间:2020/10/19 14:05:02 -- 求助,跨周期改写的方法 老师,跨周期调用很慢,改写成本周期的 如,1分钟调用10分钟的波动力 ================================== TRA:=MAX(MAX((HIGH-LOW),ABS(REF(CLOSE,1)-HIGH)),ABS(REF(CLOSE,1)-LOW)); ATR:=MA(TRA,3); TRA0:=MAX(MAX((CALLSTOCK(STKLABEL,VThigh,18,0)-CALLSTOCK(STKLABEL,VTlow,18,0)),ABS(REF(CALLSTOCK(STKLABEL,VTclose,18,0),1)-CALLSTOCK(STKLABEL,VThigh,18,0))),ABS(REF(CALLSTOCK(STKLABEL,VTclose,18,0),1)-CALLSTOCK(STKLABEL,VTlow,18,0))); TRA1:=MAX(MAX((CALLSTOCK(STKLABEL,VThigh,18,-1)-CALLSTOCK(STKLABEL,VTlow,18,-1)),ABS(REF(CALLSTOCK(STKLABEL,VTclose,18,-1),1)-CALLSTOCK(STKLABEL,VThigh,18,-1))),ABS(REF(CALLSTOCK(STKLABEL,VTclose,18,-1),1)-CALLSTOCK(STKLABEL,VTlow,18,-1))); TRA2:=MAX(MAX((CALLSTOCK(STKLABEL,VThigh,18,-2)-CALLSTOCK(STKLABEL,VTlow,18,-2)),ABS(REF(CALLSTOCK(STKLABEL,VTclose,18,-2),1)-CALLSTOCK(STKLABEL,VThigh,18,-2))),ABS(REF(CALLSTOCK(STKLABEL,VTclose,18,-2),1)-CALLSTOCK(STKLABEL,VTlow,18,-2))); ATRS:=(TRA0+TRA1+TRA2)/3; 经过这样改写,在1分钟周期上,轨道并不完全相同,请老师帮忙修改下 |
-- 作者:FireScript -- 发布时间:2020/10/19 14:16:28 -- 你这个需求描述的太笼统了。“轨道并不完全相同” 就这样我是无法处理的。我完全不清楚怎么改写你的代码的。 |
-- 作者:幸运60 -- 发布时间:2020/10/19 14:24:23 -- TRA:=MAX(MAX((HIGH-LOW),ABS(REF(CLOSE,1)-HIGH)),ABS(REF(CLOSE,1)-LOW)); ATR:=MA(TRA,3); up:今天开盘价+(W1/10)*ATR; down:今天开盘价-(W1/10)*ATR; ================== 上面为在1分钟周期内跨周期调用10分钟的轨道 想把波动力改为,下面代码,直接在1分钟周期内显示,不用跨周期调用,谢谢 TRA0:=MAX(MAX((CALLSTOCK(STKLABEL,VThigh,18,0)-CALLSTOCK(STKLABEL,VTlow,18,0)),ABS(REF(CALLSTOCK(STKLABEL,VTclose,18,0),1)-CALLSTOCK(STKLABEL,VThigh,18,0))),ABS(REF(CALLSTOCK(STKLABEL,VTclose,18,0),1)-CALLSTOCK(STKLABEL,VTlow,18,0))); TRA1:=MAX(MAX((CALLSTOCK(STKLABEL,VThigh,18,-1)-CALLSTOCK(STKLABEL,VTlow,18,-1)),ABS(REF(CALLSTOCK(STKLABEL,VTclose,18,-1),1)-CALLSTOCK(STKLABEL,VThigh,18,-1))),ABS(REF(CALLSTOCK(STKLABEL,VTclose,18,-1),1)-CALLSTOCK(STKLABEL,VTlow,18,-1))); TRA2:=MAX(MAX((CALLSTOCK(STKLABEL,VThigh,18,-2)-CALLSTOCK(STKLABEL,VTlow,18,-2)),ABS(REF(CALLSTOCK(STKLABEL,VTclose,18,-2),1)-CALLSTOCK(STKLABEL,VThigh,18,-2))),ABS(REF(CALLSTOCK(STKLABEL,VTclose,18,-2),1)-CALLSTOCK(STKLABEL,VTlow,18,-2))); ATRS:=(TRA0+TRA1+TRA2)/3; |
-- 作者:FireScript -- 发布时间:2020/10/19 14:39:03 -- TRA0:MAX(MAX((CALLSTOCK(STKLABEL,VThigh,18,0)-CALLSTOCK(STKLABEL,VTlow,18,0)),ABS(REF(CALLSTOCK(STKLABEL,VTclose,18,-1),1)-CALLSTOCK(STKLABEL,VThigh,18,0))),ABS(REF(CALLSTOCK(STKLABEL,VTclose,18,-1),1)-CALLSTOCK(STKLABEL,VTlow,18,0))); 下面的REf 你没有进行处理的。后面的TRA1,TRA2 也要相应处理下。在-1基础上变化为-2,-3 TRA:=MAX(MAX((HIGH-LOW),ABS(REF(CLOSE,1)-HIGH)),ABS(REF(CLOSE,1)-LOW));
|
-- 作者:幸运60 -- 发布时间:2020/10/19 14:55:55 -- 老师,能完全写到和调用的跨周期一致吗?就是完全相同? |
-- 作者:FireScript -- 发布时间:2020/10/19 15:02:32 -- 不对 还要改下。你源代码里面怎么还带了个ref 没注意到。要去掉。 CALLSTOCK(STKLABEL,VTclose,18,-1) 和 ref(CALLSTOCK(STKLABEL,VTclose,18,0) ,1) 不是等效的。ref是基于当前周期的。 下面这样就行了: TRA0:MAX(MAX((CALLSTOCK(STKLABEL,VThigh,18,0)-CALLSTOCK(STKLABEL,VTlow,18,0)),ABS(CALLSTOCK(STKLABEL,VTclose,18,-1)-CALLSTOCK(STKLABEL,VThigh,18,0))),ABS(CALLSTOCK(STKLABEL,VTclose,18,-1)-CALLSTOCK(STKLABEL,VTlow,18,0))); 我本地测试和跨周期调用过来的是一致的。
|
-- 作者:幸运60 -- 发布时间:2020/10/19 15:17:05 -- 谢谢,老师,老师,牛逼 |