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


金字塔客服中心 - 专业程序化交易软件提供商金字塔软件公式模型编写问题提交 → [求助]请老师帮忙写一下加减仓公式,万分感谢!

   

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


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

主题:[求助]请老师帮忙写一下加减仓公式,万分感谢!

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


加好友 发短信
等级:新手上路 帖子:39 积分:0 威望:0 精华:0 注册:2015/3/21 0:52:02
[求助]请老师帮忙写一下加减仓公式,万分感谢!  发帖心情 Post By:2016/5/13 9:30:13    Post IP:115.214.212.194[显示全部帖子]

本人新手下面的加减仓规则实在编不出来,恳请老师帮忙编一下,谢谢!

(1)开仓加仓:
A>0时A值每增加1(如从〉=1变成〉=2时)
如B往上C往上则开多4手
如B往下C往上或B往上C往下则开多2手
如B往下C往下则开多1手
  直至A>=10时最后一次加仓

A<0时A值每减小1(如从<=-4变成<=-5时)
如B往下C往下则开空4手
如B往上C往下或B往下C往上则开空2手
如B往上C往上则开空1手
  直至A<=-10时最后一次加仓

(2)减仓平仓:
A>1时A值每减小1平仓现有多单持仓的1/(变化之前A值)  【用%表示?】(手数四

舍五入)直至A<=0全平剩余多单

A<-1时A值每增加1平仓现有空单持仓的1/(变化之前A值)  【用%表示?】(手数四

舍五入)直至A>=0时全平剩余空单


举例:
  (持多单时)如从A>=7变成A<=6则减多1/7现有持仓,
  (持空单时)如从A<=-9变成A>=-7则减空(1/9+1/8)现有持仓,
  (持多单时)如从A>=2变成A<=1则减多1/2现有持仓,
  (持多单时)如从A>=1变成A<=0则全平现有剩余多单持仓


A值会有突然大跳:如下一根K线始A值直接变化2或更多(从2直接跳空成-2等)


不知道图表能不能在减仓时用%表示?

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


加好友 发短信
等级:新手上路 帖子:39 积分:0 威望:0 精华:0 注册:2015/3/21 0:52:02
  发帖心情 Post By:2016/5/13 9:53:26    Post IP:115.214.212.194[显示全部帖子]

带小数的

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


加好友 发短信
等级:新手上路 帖子:39 积分:0 威望:0 精华:0 注册:2015/3/21 0:52:02
  发帖心情 Post By:2016/5/13 10:09:26    Post IP:115.214.212.194[显示全部帖子]

绝大多数时间是有顺序的变化,也有突跳和反向突跳

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


加好友 发短信
等级:新手上路 帖子:39 积分:0 威望:0 精华:0 注册:2015/3/21 0:52:02
  发帖心情 Post By:2016/5/13 10:49:27    Post IP:115.214.212.194[显示全部帖子]

if a>1 and ref(a,1)-a>1` then sell(1,round(1/ref(a,1)*holding),marketr);
老师这是“无法识别的算术表达式”

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


加好友 发短信
等级:新手上路 帖子:39 积分:0 威望:0 精华:0 注册:2015/3/21 0:52:02
  发帖心情 Post By:2016/5/16 11:18:30    Post IP:115.214.210.128[显示全部帖子]

(1)开仓加仓:
A>0时A值每增加1(如从〉=1变成〉=2时)
如B往上D往上则开多4手
如B往下D往上或B往上D往下则开多2手
如B往下D往下则开多1手
  直至A>=10时最后一次加仓

A<0时A值每减小1(如从<=-4变成<=-5时)
如B往下D往下则开空4手
如B往上D往下或B往下D往上则开空2手
如B往上D往上则开空1手
  直至A<=-10时最后一次加仓

(2)减仓平仓:
A>1时A值每减小1平仓现有多单持仓的1/(变化之前A值)  【用%表示?】(手数四舍五入)直至A<=0全平剩余多单
A<-1时A值每增加1平仓现有空单持仓的1/(变化之前A值)  【用%表示?】(手数四舍五入)直至A>=0时全平剩余空单
举例:
  (持多单时)如从A>=7变成A<=6则减多1/7现有持仓,
  (持空单时)如从A<=-9变成A>=-7则减空(2/9)现有持仓,
  (持多单时)如从A>=2变成A<=1则减多1/2现有持仓,
  (持多单时)如从A>=1变成A<=0则全平现有剩余多单持仓

A值会有突然大跳:如下一根K线始A值直接变化2或更多(从2直接跳空成-2等)


老师我用你给编的代码编译后发现有很多信号不对和加减仓量不对
自己尝试修改了下发现还是不对,请老师帮忙再给看看有哪里和上面的要求不相符的吗?

if a>=1 and ref(a<=0,1) and a<11 and b>0 and D>0 then buY(1,4*M*intpart(a),marketr);
if a>=1 and ref(a<=0,1) and a<11 and ((b>0 and D<0) or (D>0 and b<0)) then buY(1,2*M*intpart(a),marketr);
if a>=1 and ref(a<=0,1) and a<11 and b<0 and D<0 then buY(1,1*M*intpart(a),marketr);

E:=intpart(a)-intpart(ref(a,1));
if a>=1 and ref(a>0,1) and a<11 and intpart(a)-intpart(ref(a,1))>=1 and b>0 and D>0 then buY(1,4*M*E,marketr);
if a>=1 and ref(a>0,1) and a<11 and intpart(a)-intpart(ref(a,1))>=1 and ((b>0 and D<0) or (D>0 and b<0)) then buY(1,2*M*E,marketr);
if a>=1 and ref(a>0,1) and a<11 and intpart(a)-intpart(ref(a,1))>=1 and b<0 and D<0 then buY(1,1*M*E,marketr);

if a<=-1 and ref(a>=0,1) and a>-11 and b<0 and D<0 then buyshort(1,4*M*intpart(a),marketr);
if a<=-1 and ref(a>=0,1) and a>-11 and ((b>0 and D<0) or (D>0 and b<0)) then buyshort(1,2*M*intpart(a),marketr);
if a<=-1 and ref(a>=0,1) and a>-11 and b>0 and D>0 then buyshort(1,1*M*intpart(a),marketr);

F:=intpart(ref(a,1))-intpart(a);
if a<=-1 and ref(a<0,1) and a>-11 and intpart(ref(a,1))-intpart(a)>=1 and b<0 and D<0 then buyshort(1,4*M*F,marketr);
if a<=-1 and ref(a<0,1) and a>-11 and intpart(ref(a,1))-intpart(a)>=1 and ((b>0 and D<0) or (D>0 and b<0)) then buyshort(1,2*M*F,marketr);
if a<=-1 and ref(a<0,1) and a>-11 and intpart(ref(a,1))-intpart(a)>=1 and b>0 and D>0 then buyshort(1,1*M*F,marketr);

a1:=ref(a,1);
if a>0 and ref(a,1)-a>=1 and a<=9 then sell(1,round(f/intpart(a1)*holding),marketr);
if a<=0 and ref(a,1)>=1 then sell(1,0,marketr);
a1:=ref(a,1);
if a<0 and a-ref(a,1)>=1 and a>=-9 then sellshort(1,round(e/intpart(a1)*holding),marketr);
if a>=0 and ref(a,1)<=-1 then sellshort(1,0,marketr);
[此贴子已经被作者于2016-5-16 11:19:22编辑过]

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


加好友 发短信
等级:新手上路 帖子:39 积分:0 威望:0 精华:0 注册:2015/3/21 0:52:02
  发帖心情 Post By:2016/5/16 17:43:31    Post IP:115.214.210.128[显示全部帖子]

这里我没描述清楚,B和D的往上或往下应该直接说B>0还是<0,D同样


我对规则再组织一下语言

 回到顶部