欢迎使用金字塔普通技术服务论坛,您可以在相关区域发表技术支持贴。
我司技术服务人员将优先处理 VIP客服论坛 服务贴,普通区问题处理速度慢,请耐心等待。谢谢您对我们的支持与理解。


金字塔客服中心 - 专业程序化交易软件提供商金字塔软件金字塔软件问题提交 → 您好,请老师帮我看下关于EXPMA 的策略编写求职

   

欢迎使用金字塔普通技术服务论坛,您可以在相关区域发表技术支持贴。
我司技术服务人员将优先处理 VIP客服论坛 服务贴,普通区问题处理速度慢,请耐心等待。谢谢您对我们的支持与理解。    


  共有4945人关注过本帖树形打印复制链接

主题:您好,请老师帮我看下关于EXPMA 的策略编写求职

帅哥哟,离线,有人找我吗?
FireScript
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:14496 积分:0 威望:0 精华:0 注册:2017/7/4 13:40:18
  发帖心情 Post By:2017/9/5 9:00:21 [显示全部帖子]

input:N(60,1,200,20),S(10,2,300,30),P(50,10,300,29),M(10,1,300,30),P1(5,1,300,30),P2(10,1,300,30),P3(20,1,300,30),P4(60,1,300,30),N1(4,1,8,1),SS(1,1,300,1);
//ss参数是手数,其他参数可参照ma,dma,以及expma里对应参数。
//(expma+ma) 条件或者单独dma条件成立 开仓
maN:ma(c,n);//ma里面的绿线

DDD : (MA(CLOSE,S)-MA(CLOSE,P));//DMA白线
AMA : MA(DDD,M);//DMA黄线

wx:=DRAWNULL;
M1:EMA(CLOSE,P1);//EXPMA白线
M2:EMA(CLOSE,P2)*if(n1<2,wx,1);//EXPMA黄线
M3:EMA(CLOSE,P3)*if(n1<3,wx,1);//EXPMA紫线
M4:EMA(CLOSE,P4)*if(n1<4,wx,1);//EXPMA绿线

cond1:=cross(low,maN);
cond2:=cross(ama,ddd);
cond3:=cross(maN,high);
cond4:=cross(ddd,ama);


if (cross(m1,m4) and cross(m2,m4) and cross(m3,m4) and cond1) or cond4  then  //平空开多
begin
sellshort(1,holding,market);buy(1,ss,market);
end

if (cross(m4,m1) and cross(m4,m2) and cross(m4,m3) and cond3) or cond2 then //平多开空
begin
sell(1,holding,market);buyshort(1,ss,market);
end

 

 

 

运行周期不是在代码中操作,是在软件外部设置。图表上什么周期,你交易的时候就什么周期。可以自行选择的。



命数如织,当如磐石。
 回到顶部
帅哥哟,离线,有人找我吗?
FireScript
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:14496 积分:0 威望:0 精华:0 注册:2017/7/4 13:40:18
  发帖心情 Post By:2017/9/6 15:51:25 [显示全部帖子]

几个问题:

1、如果ddi和macd条件同时成立如何处理。下单与否?

2、ddi和macd条件一前一后成立,但是条件成立的K线跨度不能无限长吧。比如上一次ddi和最近的macd条件跨度超过100周期?

3.打个比方 现在有三个K线,第一个符合macd开多,第二个符合ddi开多,第三个又符合ddi开多,那么你这样你要开几次。在第二个K肯定要开,但是第三个按理说也是符合完整的开多条件的。意思就是开仓之后是要重新开始计算这个条件了吧,不重复使用之前开仓位置的条件。



命数如织,当如磐石。
 回到顶部
帅哥哟,离线,有人找我吗?
FireScript
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:14496 积分:0 威望:0 精华:0 注册:2017/7/4 13:40:18
  发帖心情 Post By:2017/9/7 9:21:22 [显示全部帖子]

INPUT:N(13,1,100,10),N1(30,1,100,10),M(10,1,100,10),M1(5,1,100,10),S(12,5,40,4),P(26,20,100,8),M2(9,2,60,5),SS(1,1,300,1),Length(100,100,500,10);
//上面最后2个参数:SS是手数,Length控制信号周期跨度,默认是100,意思是信号跨度不超过100个K。
//DDI部分
DMZ:=IF((H+L)<=(REF(H,1)+REF(L,1)),0,MAX(ABS(H-REF(H,1)),ABS(L-REF(L,1))));
DMF:=IF((H+L)>=(REF(H,1)+REF(L,1)),0,MAX(ABS(H-REF(H,1)),ABS(L-REF(L,1))));
DIZ:=SUM(DMZ,N)/(SUM(DMZ,N)+SUM(DMF,N));
DIF:=SUM(DMF,N)/(SUM(DMF,N)+SUM(DMZ,N));
DDI:DIZ-DIF,COLORSTICK;
ADDI:SMA(DDI,N1,M);//DDI黄线
AD:MA(ADDI,M1);//DDI紫色线

//MACD部分
DIFF : EMA(CLOSE,S) - EMA(CLOSE,P);//MACD白线
DEA  : EMA(DIFF,M2);//Macd黄线
MACD1 :2*(DIFF-DEA), COLORSTICK;


cond1:cross(ADDI,AD);//黄线上穿紫线
cond2:cross(AD,ADDI);
cond3:cross(DIFF,DEA);//白线上穿黄线
cond4:cross(DEA,DIFF);

 

if (cond1 and BARSLAST(cond3)>0 and BARSLAST(cond3)<Length ) or (cond3 and BARSLAST(cond1)>0 and BARSLAST(cond1)<Length ) then
begin
sellshort(holding<0,holding,market);
buy(holding=0,SS,market);
end


if (cond2 and BARSLAST(cond4)>0 and BARSLAST(cond4)<Length ) or (cond4 and BARSLAST(cond2)>0 and BARSLAST(cond2)<Length ) then
begin
sell(holding>0,holding,market);
buyshort(holding=0,SS,market);
end

 

 

 



命数如织,当如磐石。
 回到顶部
帅哥哟,离线,有人找我吗?
FireScript
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:14496 积分:0 威望:0 精华:0 注册:2017/7/4 13:40:18
  发帖心情 Post By:2017/9/21 15:05:43 [显示全部帖子]

你其实就是要在交易的时候限价是吧。而不是市价对吧。


命数如织,当如磐石。
 回到顶部
帅哥哟,离线,有人找我吗?
FireScript
  5楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:14496 积分:0 威望:0 精华:0 注册:2017/7/4 13:40:18
  发帖心情 Post By:2017/9/21 16:22:34 [显示全部帖子]

以下是引用梦想家在2017/9/21 16:19:34的发言:
对,自动加的

你的价格需要引用螺纹钢价格来交易?你本身交易的可是螺纹钢。



命数如织,当如磐石。
 回到顶部
帅哥哟,离线,有人找我吗?
FireScript
  6楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:14496 积分:0 威望:0 精华:0 注册:2017/7/4 13:40:18
  发帖心情 Post By:2017/9/21 16:28:59 [显示全部帖子]

input:N(60,1,200,20),S(10,2,300,30),P(50,10,300,29),M(10,1,300,30),P1(5,1,300,30),P2(10,1,300,30),P3(20,1,300,30),P4(60,1,300,30),N1(4,1,8,1),SS(1,1,300,1),Price(1,0,300,1);
//ss参数是手数,其他参数可参照ma,dma,以及expma里对应参数。
//(expma+ma) 条件或者单独dma条件成立 开仓
maN:ma(c,n);//ma里面的绿线

DDD : (MA(CLOSE,S)-MA(CLOSE,P));//DMA白线
AMA : MA(DDD,M);//DMA黄线

wx:=DRAWNULL;
M1:EMA(CLOSE,P1);//EXPMA白线
M2:EMA(CLOSE,P2)*if(n1<2,wx,1);//EXPMA黄线
M3:EMA(CLOSE,P3)*if(n1<3,wx,1);//EXPMA紫线
M4:EMA(CLOSE,P4)*if(n1<4,wx,1);//EXPMA绿线

cond1:=cross(low,maN);
cond2:=cross(ama,ddd);
cond3:=cross(maN,high);
cond4:=cross(ddd,ama);


if (cross(m1,m4) and cross(m2,m4) and cross(m3,m4) and cond1) or cond4  then  //平空开多
begin
sellshort(1,holding,market);buy(1,ss,LIMIT,close+price);//当前最新价加上price(0-300)的价格限价交易
end

if (cross(m4,m1) and cross(m4,m2) and cross(m4,m3) and cond3) or cond2 then //平多开空
begin
sell(1,holding,market);buyshort(1,ss,limit,close+price);//当前最新价加上price(0-300)的价格限价交易
end

 

 

略作了下修改。 价格是当前最新价加上price价格。price可调整。



命数如织,当如磐石。
 回到顶部