以文本方式查看主题 - 金字塔客服中心 - 专业程序化交易软件提供商 (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=188167) |
-- 作者:悠莲 -- 发布时间:2021/5/7 10:22:14 -- 请帮忙写个代码 当价格大于N日MA后,并且价格持续60分钟都在MA以上,平空开多;假如收盘前10分钟,价格又回到N日MA以下,则恢复原持仓方向,即平多开空; 当价格小于N日MA后,并且价格持续60分钟都在MA以下,平多开空;假如收盘前10分钟,价格又回到N日MA以上,则恢复原持仓方向,即平空开多;
|
-- 作者:FireScript -- 发布时间:2021/5/7 10:27:29 -- 交易周期是什么周期?“持续60分钟”这个判断是和周期关联的,不是所有周期都可以做这个判断的。而且也是按照周期数,而不是实际60分钟,比如1分钟周期,那就是60个周期,5分钟就是12个周期。 |
-- 作者:悠莲 -- 发布时间:2021/5/7 11:00:09 -- 日线周期 |
-- 作者:悠莲 -- 发布时间:2021/5/7 11:10:57 -- 这应该是跨周期的,看日线MA指标,在分钟级别上确认信号 |
-- 作者:FireScript -- 发布时间:2021/5/7 14:07:30 -- 新建一个处理小周期判断的指标A,代码如下: INPUT:N(10,1,100,1); maN:((N-1)*"MA.MA1##DAY"(N-1)+C)/N;//小周期的当前价格+(N-1)*(日线上个周期的(N-1)周期均价)。 以这种方式计算出均线值。否则直接调用小周期始终会引用到最新的日线均线。无法体现这中间的过程。 t:=timetot0(CLOSETIME(0))-time0;//距离收盘K的跨度(秒) kd:all(c>maN,60);//是否连续60周期满足 pd:t<=60*10 and c<man;//收盘前10分钟 且c<maN kk:all(c<maN,60);//是否连续60周期满足 pk:t<=60*10 and c>man;//收盘前10分钟 且c>maN 当前日线级别上调用这个指标A里的判断: INPUT:N(10,1,100,1),ss(1,1,100,1); kd:c>ma(c,N) and "A.kd#MIN1"(N); pd:"A.pd#MIN1"; kk:c<ma(c,N) and "A.kK#MIN1"(N); pk:"A.pk#MIN1"; if kd or pk then begin sellshort(1,holding,market); buy(holding=0,ss,market); END if kk or pd then begin sell(1,holding,market); buyshort(holding=0,ss,market); END 然后就是这个实际交易中 适用于固定轮训模式。因此这个在图表中进行回测的话,小周期变化的过程是无法体现出来的。只能在实际模拟交易中体现这个过程了。 |
-- 作者:悠莲 -- 发布时间:2021/5/10 14:52:54 -- 老师好! 因为上述代码编译中有点问题,我在微信群中询问了一下。值班老师帮我写成了两个公式 A公式: INPUT:N(10,1,100,1); maN:((N-1)*"MA.MA1##DAY"(N-1)+C)/N;//小周期的当前价格+(N-1)*(日线上个周期的(N-1)周期均价)。 以这种方式计算出均线值。否则直接调用小周期始终会引用到最新的日线均线。无法体现这中间的过程。 t:=timetot0(CLOSETIME(0))-time0;//距离收盘K的跨度(秒) kd:all(c>maN,60);//是否连续60周期满足 pd:t<=60*10 and c<man;//收盘前10分钟 且c<maN kk:all(c<maN,60);//是否连续60周期满足 pk:t<=60*10 and c>man;//收盘前10分钟 且c>maN 交易用公式: INPUT:N(10,1,100,1),ss(1,1,100,1); kd:c>ma(c,N) and "A.kd#MIN1"(N); pd:"A.pd#MIN1"; kk:c<ma(c,N) and "A.kK#MIN1"(N); pk:"A.pk#MIN1"; if kd or pk then begin sellshort(1,holding,market); buy(holding=0,ss,market); END if kk or pd then begin sell(1,holding,market); buyshort(holding=0,ss,market); END 现在的问题是:1、麻烦把上述公式的MA指标改成EMA 2、昨天微信群值班老师说加载之后可以回测。但我加载上去没有任何信号显示
|
-- 作者:FireScript -- 发布时间:2021/5/10 14:58:03 -- 没有信号是因为,你这个需求大量的历史1分钟数据。日线就几个K,但是对应的1分钟数据量是非常大的。1分钟数据覆盖到的地方才可能出信号。 [此贴子已经被作者于2021/5/10 14:58:20编辑过]
|
-- 作者:FireScript -- 发布时间:2021/5/10 15:04:16 -- 你可以直接切换到1分钟上,然后键盘上上下键 这样直接补充下这个品种历史1分钟数据即可。 |
-- 作者:FireScript -- 发布时间:2021/5/10 15:22:54 -- ema的稍微麻烦些。迟点发上来。 另外 http://www.weistock.com/bbs/dispbbs.asp?boardid=10&id=9439&authorid=0&page=0&star=3 阿火这个帖子里23楼就是处理 这里小周期判断的思路来源,你可以单独先看下。总之就是单纯的小周期调用大周期,只能调用到大周期下最新一个K的值,其内部变化过程是无法纪录下来的。
|
-- 作者:悠莲 -- 发布时间:2021/5/11 10:26:30 -- 可以用指数信号映射主力合约交易吗?如果可以,麻烦老师帮我在代码里实现这个需求 |