以文本方式查看主题

-  金字塔客服中心 - 专业程序化交易软件提供商  (http://weistock.com/bbs/index.asp)
--  公式模型编写问题提交  (http://weistock.com/bbs/list.asp?boardid=4)
----  这是HANS日内交易策略,能帮我改成外盘交易的吗?  (http://weistock.com/bbs/dispbbs.asp?boardid=4&id=159008)

--  作者:qq代人发帖
--  发布时间:2017/10/27 11:10:40
--  这是HANS日内交易策略,能帮我改成外盘交易的吗?
//准备中间变量
INPUT:SS(1,1,10000,1),NMIN1(30,1,1000,1),NMIN2(10,1,100,1),N1(0,0,100,1);
N:=BARSLAST(DATE<>REF(DATE,1))+1;
开盘30分钟最高价:=VALUEWHEN(TIME<=090000+NMIN1*100,HHV(H,N));
开盘30分钟最低价:=VALUEWHEN(TIME<=090000+NMIN1*100,LLV(L,N));
手数:=SS; 
上轨:开盘30分钟最高价+N1*MINDIFF;
下轨:开盘30分钟最低价-N1*MINDIFF;
//条件
开多条件:=C>上轨;
开空条件:=C<下轨;
//交易系统
IF TIME>090000+NMIN1*100 AND TIME<150000-10*100 THEN BEGIN
开多:BUY(开多条件 AND HOLDING=0,手数,MARKET);
开空:BUYSHORT(开空条件 AND HOLDING=0,手数,MARKET);
END
//平仓
IF TIME>=150000-NMIN2*100 THEN BEGIN
收盘平多:SELL(1,手数,MARKET);
收盘平空:SELLSHORT(1,手数,MARKET);
END

当前持仓:HOLDING,COLORGRAY,LINETHICK0;
当前资产:ASSET,NOAXIS,COLORGRAY;//输出当前资产,但不影响坐标最高最低值

这是HANS日内交易策略,能帮我改成外盘交易的吗?

时间上,开盘前半个小时,改程开盘6点到9点,3个小时的高低点,另外,上下轨道,

可以用这3个小时的高低点划成固定的吗?

为什么在图上的时候上下轨是不停变化的。

我的操作时间是,6点到9点,取3个小时高低点划上下轨,9点后,突破上轨做多,突破下轨做空,到凌晨4点40分强制平仓。

谢谢了,帮我改编一下

[此贴子已经被作者于2017/10/27 13:23:54编辑过]

--  作者:winheroking
--  发布时间:2017/10/27 14:36:45
--  
怎么没有人回复呢?图片点击可在新窗口打开查看
--  作者:FireScript
--  发布时间:2017/10/27 14:53:50
--  

VARIABLE:m:=0,hh:=0,ll:=0;
if time=060000 then m:=1;else if time<>060000 then m:=0;
hh:=if(time=100000,hhv(h,BARSLAST(m=1)),0);//开盘6点到9点最高价
ll:=if(time=100000,llv(l,BARSLAST(m=1)),0);//开盘6点到9点最低价


if time>=044000 then  sell(holding>0,holding,MARKET);//到点强平

 

 

主要部分就在这,你可以直接替换进去修改下。日内的话,那个上下轨本身就是固定的,只是每日肯定会刷新的。另外你在什么周期上运行啊。

[此贴子已经被作者于2017/10/27 15:16:31编辑过]

--  作者:winheroking
--  发布时间:2017/10/31 15:20:38
--  
运行不了啊 ,能给个完整的代码吗?
--  作者:FireScript
--  发布时间:2017/10/31 15:47:38
--  
以下是引用winheroking在2017/10/31 15:20:38的发言:
运行不了啊 ,能给个完整的代码吗?

你不是把我写的那部分直接拿去运行了吧。。 那个要修改到原先的那个代码里面去的。还有啊 你运行周期多少啊。下面用到了time函数这个时间和周期选择有关系 的。要是对应不上运行也是会挂的。

 

INPUT:SS(1,1,10000,1),NMIN1(30,1,1000,1),NMIN2(10,1,100,1),N1(0,0,100,1);

VARIABLE:m:=0,hh:=0,ll:=0;
N:=BARSLAST(DATE<>REF(DATE,1))+1;
if time=060000 then m:=1;else if time<>060000 then m:=0;
hh:=if(time=090000,hhv(h,BARSLAST(m=1)),0);//开盘6点到9点最高价
ll:=if(time=090000,llv(l,BARSLAST(m=1)),0);//开盘6点到9点最低价
手数:=SS; 
上轨:hh+N1*MINDIFF;
下轨:ll-N1*MINDIFF;
//条件
开多条件:=C>上轨;
开空条件:=C<下轨;
//交易系统
IF TIME>090000+NMIN1*100 AND TIME<150000-10*100 THEN BEGIN
开多:BUY(开多条件 AND HOLDING=0,手数,MARKET);
开空:BUYSHORT(开空条件 AND HOLDING=0,手数,MARKET);
END
//平仓
IF TIME>=150000-NMIN2*100 THEN BEGIN
收盘平多:SELL(1,手数,MARKET);
收盘平空:SELLSHORT(1,手数,MARKET);
END


if time>=044000 then  sell(holding>0,holding,MARKET);//到点强平
当前持仓:HOLDING,COLORGRAY,LINETHICK0;
当前资产:ASSET,NOAXIS,COLORGRAY;//输出当前资产,但不影响坐标最高最低值