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


金字塔客服中心 - 专业程序化交易软件提供商金字塔软件公式模型编写问题提交 → 后台程序实现求助

   

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


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

主题:后台程序实现求助

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


加好友 发短信
等级:新手上路 帖子:38 积分:0 威望:0 精华:0 注册:2018/10/23 11:12:13
后台程序实现求助  发帖心情 Post By:2018/11/6 8:56:09    Post IP:180.169.30.6[只看该作者]

帮忙编写以下程序   后台程序   谢谢  




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

N(即ATR)的计算公式如下(其实就):
前面20天的TR值平均
绝对波动幅度=N*合约每一点所代表的价值
头寸规模单位n=账户的1%/绝对波动幅度
开仓时机:当五日均线>十日均线  且  五日均线>二十日均线 开仓n手做多
当五日均线<十日均线时,平仓
 当五日均线<十日均线  且  五日均线<二十日均线 开仓n手做空
当五日均线>十日均线时,平仓
止损为1N

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


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

PDC:REF(C,1);
TR1:MAX(h-l,max(h-PDC,PDC-L));
ATR:MA(TR1,20);

绝对波动幅度:ATR*Multiplier;
手数:TASSET*0.01/绝对波动幅度;
ma5:ma(c,5);
ma10:ma(c,10);
ma20:ma(c,20);
buycond1:ma5>ma10 and ma5>ma20;//这种开仓条件可能会持续N个周期都能保持,会导致连续多个周期下单,直到条件不满足为止。
sellcond1:ma5<ma10;

buycond2:ma5<ma10 and ma5<ma20;
sellcond2:ma5>ma10;

if BUYCOND1 then tbuy(1,手数,MKT);
if sellcond1 then tsell(1,TBUYHOLDING(1),mkt);

if BUYCOND2 then tbuyshort(1,手数,MKT);
if sellcond2 then tsellshort(1,TBUYHOLDING(1),mkt);

仅供参考。


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


加好友 发短信
等级:新手上路 帖子:38 积分:0 威望:0 精华:0 注册:2018/10/23 11:12:13
帮忙修改  发帖心情 Post By:2018/11/6 10:30:44    Post IP:119.233.207.179[只看该作者]

帮忙修改成下面这个



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

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

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


加好友 发短信
等级:管理员 帖子:26632 积分:0 威望:0 精华:7 注册:2015/4/9 14:59:07
  发帖心情 Post By:2018/11/6 10:38:49    Post IP:180.169.30.6[只看该作者]

建议你自己尝试修改,2楼中的代码逻辑已经提供。在你不懂的地方跟帖询问。这样才能有助于提供你的编程能力。



编程无捷径,技巧靠积累。
 回到顶部
帅哥哟,离线,有人找我吗?
f三年
  5楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


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

初学者  希望大家多多帮忙  

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


加好友 发短信
等级:管理员 帖子:26632 积分:0 威望:0 精华:7 注册:2015/4/9 14:59:07
  发帖心情 Post By:2018/11/6 10:47:46    Post IP:180.169.30.6[只看该作者]

初学者不是做伸手党的理由,策略代码必须自己尝试写才会提高,否者永远只会原地踏步。

你读懂2楼的代码,自然就会改了。

 

[此贴子已经被作者于2018/11/6 10:49:48编辑过]


编程无捷径,技巧靠积累。
 回到顶部
帅哥哟,离线,有人找我吗?
f三年
  7楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


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


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

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

编写下面这样   帮忙检查下哪里有错没有  谢谢 老师

VARIABLE:cc=0;
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);
h10:=ref(hhv(h,10),1);
l20:=ref(llv(l,20),1);
l10:=ref(llv(l,10),1);
kd:=c>h20;
pd:=c<l10;
kk:=c<l20;
pk:=c>h10;
if THOLDING>0 and pd then tsell(pd,n,mkt);
if THOLDING<0 and pk then tsellshort(pk,n,mkt);
if THOLDING=0 and kd then tbuy(kd,n,mkt);
if THOLDING=0 and kk then tbuyshort(kk,n,mkt);
if tholding>0 and c<DYNAINFO(211)-绝对波幅 then tsell(pd,n,mkt);
if tholding<0 and c>DYNAINFO(211)+绝对波幅 then tsellshort(pk,n,mkt);


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


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

buycond1:ma5>ma10 and ma5>ma20;//这种开仓条件可能会持续N个周期都能保持,会导致连续多个周期下单,直到条件不满足为止。   这个汉字提示这种开仓条件可能会持续N个周期都能保持,会导致连续多个周期下单,直到条件不满足为止。是什么意思 ?

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


加好友 发短信
等级:管理员 帖子:26632 积分:0 威望:0 精华:7 注册:2015/4/9 14:59:07
  发帖心情 Post By:2018/11/6 11:34:47    Post IP:180.169.30.6[只看该作者]

7楼的代码没问题。但是逻辑上有些需要你自己注意的

1.你目前还是基于图表的处理方式,因为图表不支持锁仓。而后台是支持锁仓的,如果开仓条件变化时,要留意tholding函数的,他返回的是多空的净值。必要时可以使用tbuyholding等函数。

2.你上面的代码目前是基于日线周期处理,不适用日内级别周期。因为“PDC=前一日收盘价”,如果其他周期下,需要特定处理。

3.另外就是你上楼说的现象,通过这种方式会在一定k线范围内重复开仓。(即上穿以后一直到下穿这个区间)

如果希望是在上穿的那个开仓,可以用   kd:=CROSS(c,h20)表示。代码上穿时的状态。你可以单独调试看下该函数的用法

[此贴子已经被作者于2018/11/6 12:11:59编辑过]


编程无捷径,技巧靠积累。
 回到顶部
帅哥哟,离线,有人找我吗?
f三年
  10楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


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


这样修改    您看下   后台程序


VARIABLE:cc=0;
PDC:=REF(C,1);
TR1:=MAX(H-L,MAX(H-PDC,PDC-L));
ATR:=MA(TR1,20);
绝对波幅:=ATR*DYNAINFO(209);
N:=TASSET*0.005/绝对波幅;
h20:=ref(hhv(h,20),1);
h10:=ref(hhv(h,10),1);
l20:=ref(llv(l,20),1);
l10:=ref(llv(l,10),1);
kd:=CROSS(c,h20);
pd:=CROSS(l10,c);
kk:=CROSS(l20,c);
pk:=cross(c,h10);
if THOLDING>0 and pd then tsell(pd,n,mkt);
if tsellholding(1)>0 and pk then tsellshort(pk,n,mkt);
if THOLDING=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)-绝对波幅 then tsell(pd,n,mkt);
if tsellholding(1)>0 and c>DYNAINFO(211)+绝对波幅 then tsellshort(pk,n,mkt);

 回到顶部
总数 13 1 2 下一页