以文本方式查看主题

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

--  作者:没啥事
--  发布时间:2020/2/3 13:55:43
--  请编写一个简单的模型
麻烦编写一个简单的交易模型
5,15.30分钟三个周期,3条线,5,20.60.开多条件:15分钟站上60线,且5分钟周期站上5.20.60线三线,开多,如果破前一根K线最低点止损;
开空:如果5分钟周期20线和60线交叉向下,突破60日线,且15分钟周期5,20线向下交叉,开空,站上5分钟60线止损

--  作者:wenarm
--  发布时间:2020/2/3 14:13:17
--  

当前是什么周期?,使用的是5,15,30分钟周期的收盘价?

5,20,60是当前周期的均线还是别的什么?

[此贴子已经被作者于2020/2/3 14:13:41编辑过]

--  作者:FireScript
--  发布时间:2020/2/3 14:22:26
--  
需要明确:
1.当前运行的周期
2.“15分钟站上60线,且5分钟周期站上5.20.60线三线”   这个没说清除。你现在一共有三个周期的三种均线 那么一共是九条线了。
5min_ma5:STKINDI(\'\',\'ma.ma1\',0,2,0);//5分钟的5日均线
5min_ma20:STKINDI(\'\',\'ma.ma3\',0,2,0);//5分钟的20日均线
5min_ma60:STKINDI(\'\',\'ma.ma4\',0,2,0);//5分钟的60日均线

30min_ma5:STKINDI(\'\',\'ma.ma1\',0,4,0);//30分钟的5日均线
30min_ma20:STKINDI(\'\',\'ma.ma3\',0,4,0);//30分钟的20日均线
30min_ma60:STKINDI(\'\',\'ma.ma4\',0,4,0);//30分钟的60日均线

60min_ma5:STKINDI(\'\',\'ma.ma1\',0,5,0);//60分钟的5日均线
60min_ma20:STKINDI(\'\',\'ma.ma3\',0,5,0);//60分钟的20日均线
60min_ma60:STKINDI(\'\',\'ma.ma4\',0,5,0);//60分钟的60日均线


请在上面这三个周期 三种均线上描述下你的需求逻辑。

--  作者:没啥事
--  发布时间:2020/2/3 14:47:28
--  
老师,不知你有没有看到我的回复
我的逻辑其实就是在开仓看15分钟周期里现价是否站上60线,如果站上,再看看5分钟周期里面,是不是也站上5分钟周期里的60均线,且5分钟周期里,..5,20.60均线是多头排列形态。我不知道这样的逻辑能否实现,谢谢

--  作者:FireScript
--  发布时间:2020/2/3 14:51:51
--  
意思是15分钟和5分钟 里 都满足现价(5分钟和15分钟)大于60周期均线   且五分钟周期满足5,20,60均线多头排列  是这样对吗?
--  作者:没啥事
--  发布时间:2020/2/3 14:54:54
--  
是的
--  作者:FireScript
--  发布时间:2020/2/3 15:07:36
--  
以多头为例:
5min_ma5:STKINDI(\'\',\'ma.ma1\',0,2,0);//5分钟的5日均线
5min_ma20:STKINDI(\'\',\'ma.ma3\',0,2,0);//5分钟的20日均线
5min_ma60:STKINDI(\'\',\'ma.ma4\',0,2,0);//5分钟的60日均线

5min_dtpl:5min_ma60<5min_ma20  and 5min_ma20<5min_ma5;//5分钟周期上多头排列

15min_ma60:STKINDI(\'\',\'ma.ma4\',0,3,0);//15分钟的60日均线

5min_c:CALLSTOCK(\'\',vtCLOSE,5);//5分钟现价
15min_c:CALLSTOCK(\'\',vtCLOSE,3);//15分钟现价

cd1:5min_c>5min_ma60;//5分钟现价大于5分钟的60周期均线
cd2:15min_c>15min_ma60;

if cd1 and cd2 and 5min_dtpl then buy(holding=0,1,market);//开仓
if L<ref(l,1) and holding>0 then sell(holding>0,holding,market);//平多

--  作者:没啥事
--  发布时间:2020/2/3 15:25:24
--  
谢谢老师的快速回复,现在的服务跟文华一样了,
能否把空头开单的也写一下,然后我想去跑一下回测,谢谢!

--  作者:FireScript
--  发布时间:2020/2/3 15:45:47
--  
请稍等。
--  作者:FireScript
--  发布时间:2020/2/3 15:53:56
--  
之前的代码可以弃用掉。按照之前的方式 代码太冗余了。代码稍微改进下吧。
新建一个指标MAZ:
INPUT:N1(5,1,100,10),N2(10,1,120,12),N3(20,1,200,20),N4(60,1,200,20);
ma1:ma(c,n1);
ma2:ma(c,n2);
ma3:ma(c,n3);
ma4:ma(c,n4);

dtpl:ma3>ma4 and ma3>ma1;//多头排列
xp:c>ma4;//现价大于60周期均线

sc1:cross(ma1,ma4);//5周期下穿60周期
sc2:cross(ma3,ma4);//20周期下穿60周期
sc3:cross(ma3,ma1);//5分钟下穿20周期

sc:sc1 and sc2;



上面这部分是被调用的代码:

下面这里是交易的部分:

dtpl:STKINDI(\'\',\'MAZ.dtpl\',0,2,0);//5分钟的5日均线

15min_xp:STKINDI(\'\',\'MAZ.xp\',0,3,0);//15分钟 现价大于60周期均线
5min_xp:STKINDI(\'\',\'MAZ.xp\',0,2,0);//5分钟 现价大于60周期均线

sc1:STKINDI(\'\',\'MAZ.sc\',0,2,0);//5分钟的5周期,20周期均线分别下破60周期均线
sc2:STKINDI(\'\',\'MAZ.sc3\',0,3,0);//15分钟 5周期均线下破20周期均线


if L<ref(l,1) and holding>0 then sell(holding>0,holding,market);//多头平仓
if 15min_xp and 5min_xp and dtpl then buy(holding=0,1,market);//多头开仓

if 5min_xp and holding<0 then sellshort(holding<0,holding,market);//空头平
if sc1 and sc2 and holding=0 then buyshort(holding=0,1,market);//空头开仓


2部分代码 是需要分开的:

图片点击可在新窗口打开查看此主题相关图片如下:temp.png
图片点击可在新窗口打开查看