以文本方式查看主题

-  金字塔客服中心 - 专业程序化交易软件提供商  (http://www.weistock.com/bbs/index.asp)
--  公式模型编写问题提交  (http://www.weistock.com/bbs/list.asp?boardid=4)
----  请帮忙写个代码  (http://www.weistock.com/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分钟数据覆盖到的地方才可能出信号。


图片点击可在新窗口打开查看此主题相关图片如下:temp.png
图片点击可在新窗口打开查看
[此贴子已经被作者于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
--  
可以用指数信号映射主力合约交易吗?如果可以,麻烦老师帮我在代码里实现这个需求