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


金字塔客服中心 - 专业程序化交易软件提供商金字塔软件公式模型编写问题提交 → 新加条件,求指导

   

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


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

主题:新加条件,求指导

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


加好友 发短信
等级:新手上路 帖子:38 积分:0 威望:0 精华:0 注册:2018/10/23 11:12:13
新加条件,求指导  发帖心情 Post By:2018/12/9 17:10:18    Post IP:119.233.179.112[只看该作者]

老师 ,我想在这个程序的基础上  加一个条件   增加条件:    如果品种的布林带宽大于4atr,开仓仓位减半。请教老师我这个条件怎么编写增加进去程序。

TR=Max(H-L,H-PDC,PDC-L)
其中:
      TR=真实波幅
      H=当日最高价
      L=当日最低价
      PDC=前一日收盘价

N(即ATR)的计算公式如下(其实就):
前面20天的TR值平均
绝对波动幅度=N*合约每一点所代表的价值
头寸规模单位n=账户的1%/绝对波动幅度
开仓时机:当价格突破20天新高的时候开n手做多,当价格回调3ATR平仓。
当价格突破20日新低的时候做空,当价格回调3ATR平仓
止损为1N



PDC:=REF(C,1);
TR1:=MAX(H-L,MAX(H-PDC,PDC-L));
ATR:=MA(TR1,20);
绝对波幅:=ATR*DYNAINFO(209);
N:=tASSET*0.01/绝对波幅;
h20:=ref(hhv(h,20),1);
l20:=ref(llv(l,20),1);
t1:=c>h20;
t2:=c<l20;
n1:=ref(ATR,BARSLAST(t1 and ref(t1,1)=0));
n2:=ref(ATR,BARSLAST(t2 and ref(t2,1)=0));
c1:=ref(c,BARSLAST(t1 and ref(t1,1)=0));
c2:=ref(c,BARSLAST(t2 and ref(t2,1)=0));
kd:cross(c,h20);
pd:c<(c1-3*n1);
kk:=cross(l20,c);
pk:=c>(c2+3*n2);
if TBUYHOLDING(1)>0 and pd then tsell(pd,n,mkt);
if tsellholding(1)>0 and pk then tsellshort(pk,n,mkt);
if tbuyholding(1)=0 and kd then tbuy(kd,n,mkt);
if tsellholding(1)=0 and kk then tbuyshort(kk,n,mkt);
if tholding>0 and c<DYNAINFO(211)-n1 then tsell(pd,n,mkt);
if tholding<0 and c>DYNAINFO(211)+n2 then tsellshort(pk,n,mkt);{止损块在有持仓时运行}


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


加好友 发短信
等级:超级版主 帖子:14496 积分:0 威望:0 精华:0 注册:2017/7/4 13:40:18
  发帖心情 Post By:2018/12/10 9:47:54    Post IP:180.169.30.6[只看该作者]

 布林带宽 这个怎么定义的?


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



MID :  MA(CLOSE,M);
UPPER: MID + N*STD(CLOSE,M);
LOWER: MID - N*STD(CLOSE,M);
布林带代码是这样定义的,但是你这个布林带宽是指上下轨差值?
[此贴子已经被作者于2018/12/10 9:48:20编辑过]


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


加好友 发短信
等级:新手上路 帖子:38 积分:0 威望:0 精华:0 注册:2018/10/23 11:12:13
  发帖心情 Post By:2018/12/10 14:20:35    Post IP:119.233.179.112[只看该作者]

是的   老师  M是定义 26

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


加好友 发短信
等级:超级版主 帖子:14496 积分:0 威望:0 精华:0 注册:2017/7/4 13:40:18
  发帖心情 Post By:2018/12/10 14:23:25    Post IP:180.169.30.6[只看该作者]

 不是,我问的不是M啊。是这个布林带宽 。
[此贴子已经被作者于2018/12/10 14:28:25编辑过]


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


加好友 发短信
等级:新手上路 帖子:38 积分:0 威望:0 精华:0 注册:2018/10/23 11:12:13
  发帖心情 Post By:2018/12/10 14:25:51    Post IP:119.233.179.112[只看该作者]

这个布林带宽是指上下轨差值,然后我要新增那个条件进去  

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


加好友 发短信
等级:超级版主 帖子:14496 积分:0 威望:0 精华:0 注册:2017/7/4 13:40:18
  发帖心情 Post By:2018/12/10 14:35:30    Post IP:180.169.30.6[只看该作者]

 加一点代码,这个m,n的定义你自行处理下。

MID :  MA(CLOSE,M);
UPPER: MID + N*STD(CLOSE,M);
LOWER: MID - N*STD(CLOSE,M);
cd:UPPER-LOWER)>4*atr;


然后开仓语句这里也修改下
if tbuyholding(1)=0 and kd then tbuy(kd,if(cd,CEILING(n/2),n),mkt);
if tsellholding(1)=0 and kk then tbuyshort(kk,if(cd,CEILING(n/2),n),mkt);



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


加好友 发短信
等级:新手上路 帖子:38 积分:0 威望:0 精华:0 注册:2018/10/23 11:12:13
  发帖心情 Post By:2018/12/10 15:16:27    Post IP:119.233.179.112[只看该作者]

PDC:=REF(C,1);
TR1:=MAX(H-L,MAX(H-PDC,PDC-L));
ATR:=MA(TR1,20);
绝对波幅:=ATR*DYNAINFO(209);
MID1 :=  MA(CLOSE,26);
UPPER1: =MID + 2*STD(CLOSE,26);
LOWER1: =MID - 2*STD(CLOSE,26);
N:=tASSET*0.01/绝对波幅;
h20:=ref(hhv(h,20),1);
l20:=ref(llv(l,20),1);
t1:=c>h20;
t2:=c<l20;
n1:=ref(ATR,BARSLAST(t1 and ref(t1,1)=0));
n2:=ref(ATR,BARSLAST(t2 and ref(t2,1)=0));
c1:=ref(c,BARSLAST(t1 and ref(t1,1)=0));
c2:=ref(c,BARSLAST(t2 and ref(t2,1)=0));
kd:cross(c,h20);
pd:c<(c1-3*n1);
kk:=cross(l20,c);
pk:=c>(c2+3*n2);
if TBUYHOLDING(1)>0 and pd then tsell(pd,n,mkt);
if tsellholding(1)>0 and pk then tsellshort(pk,n,mkt);
if tbuyholding(1)=0 and kd then tbuy(kd,n,mkt);
if tsellholding(1)=0 and kk then tbuyshort(kk,n,mkt);
if upper1 - lower1>4*atr and tbuyholding(1)=0 then tbuy(1,n/2,mkt);
if  upper1 - lower1<4*atr and tsellshort(1)=0 then tbuyshort(1,n/2,mkt);
if tholding>0 and c<DYNAINFO(211)-n1 then tsell(pd,n,mkt);
if tholding<0 and c>DYNAINFO(211)+n2 then tsellshort(pk,n,mkt);{止损块在有持仓时运行}



运行时  if  upper1 - lower1<4*atr and tsellshort(1)=0 then tbuyshort(1,n/2,mkt);这句提示tsellshort不得在其他函数中作为参数被调用,怎么修改 。








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


加好友 发短信
等级:超级版主 帖子:14496 积分:0 威望:0 精华:0 注册:2017/7/4 13:40:18
  发帖心情 Post By:2018/12/10 15:27:45    Post IP:180.169.30.6[只看该作者]

 if  upper1 - lower1<4*atr and tsellshort(1)=0 then tbuyshort(1,n/2,mkt);
你加的这个是啥意思。
tsellshort是平空的语句,没有这样的用法的,你想表达的是什么呢?


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


加好友 发短信
等级:新手上路 帖子:38 积分:0 威望:0 精华:0 注册:2018/10/23 11:12:13
  发帖心情 Post By:2018/12/10 15:42:03    Post IP:119.233.179.112[只看该作者]

我已经完整写好了  老师帮我看下 是不是

TR=Max(H-L,H-PDC,PDC-L)
其中:
      TR=真实波幅
      H=当日最高价
      L=当日最低价
      PDC=前一日收盘价

如果品种的布林带宽大于4atr,开仓仓位减半
N(即ATR)的计算公式如下(其实就):
前面20天的TR值平均
绝对波动幅度=N*合约每一点所代表的价值
头寸规模单位n=账户的1%/绝对波动幅度
开仓时机:当价格突破20天新高的时候开n手做多,当价格回调3ATR平仓。
当价格突破20日新低的时候做空,当价格回调3ATR平仓
止损为1N


PDC:=REF(C,1);
TR1:=MAX(H-L,MAX(H-PDC,PDC-L));
ATR:=MA(TR1,20);
绝对波幅:=ATR*DYNAINFO(209);
MID :=  MA(CLOSE,26);
UPPER1: =MID + 2*STD(CLOSE,26);
LOWER1: =MID - 2*STD(CLOSE,26);
N:=tASSET*0.01/绝对波幅;
h20:=ref(hhv(h,20),1);
l20:=ref(llv(l,20),1);
t1:=c>h20;
t2:=c<l20;
n1:=ref(ATR,BARSLAST(t1 and ref(t1,1)=0));
n2:=ref(ATR,BARSLAST(t2 and ref(t2,1)=0));
c1:=ref(c,BARSLAST(t1 and ref(t1,1)=0));
c2:=ref(c,BARSLAST(t2 and ref(t2,1)=0));
kd:cross(c,h20);
pd:c<(c1-3*n1);
kk:=cross(l20,c);
pk:=c>(c2+3*n2);
if TBUYHOLDING(1)>0 and pd then tsell(pd,n,mkt);
if tsellholding(1)>0 and pk then tsellshort(pk,n,mkt);
if tbuyholding(1)=0 and kd then tbuy(kd,n,mkt);
if tsellholding(1)=0 and kk then tbuyshort(kk,n,mkt);
if upper1 - lower1>4*atr and tbuyholding(1)=0 then tbuy(1,n/2,mkt);
if  upper1 - lower1<4*atr and tsellholding(1)=0 then tbuyshort(1,n/2,mkt);
if tholding>0 and c<DYNAINFO(211)-n1 then tsell(pd,n,mkt);
if tholding<0 and c>DYNAINFO(211)+n2 then tsellshort(pk,n,mkt);{止损块在有持仓时运行}

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


加好友 发短信
等级:超级版主 帖子:14496 积分:0 威望:0 精华:0 注册:2017/7/4 13:40:18
  发帖心情 Post By:2018/12/10 16:25:56    Post IP:180.169.30.6[只看该作者]

 n/2你要取整吧。除的结果不一定是整数哦。其他基本没啥问题。


命数如织,当如磐石。
 回到顶部
总数 12 1 2 下一页