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


金字塔客服中心 - 专业程序化交易软件提供商金字塔软件公式模型编写问题提交 → [求助]麻烦老师帮忙编写

   

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


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

主题:[求助]麻烦老师帮忙编写

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


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

1.这个功能要实现首选只能用后台程序化。你需要有后台程序化的使用权限,否则这边编写了你那边也无法测试的。
2.完整思路编写需要一定时间,还请耐心等待。


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


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

先盈利后亏损 可以按照后面的减仓操作来,也就是回撤的那个地方。但是先亏损后盈利呢?
比如初始20手 亏损一次 加仓 20(1+1.5)=50手
这时候仓位是30  如果盈利10%    在30基础上加一次仓 总仓位变成  30*(1+0.5)? 


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


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

1.下穿20周期均线这个 可能会多次重复发生。比如在macd死叉之前 多次发生均线下穿  。这种情况下每次都是仓位减半?
2.回撤减仓 只在盈利之后的加仓基础上发生?




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


加好友 发短信
等级:超级版主 帖子:14496 积分:0 威望:0 精华:0 注册:2017/7/4 13:40:18
  发帖心情 Post By:2020/2/10 11:04:37    Post IP:183.194.169.103[显示全部帖子]

以下代码只能在后台程序化上使用。我本地还在继续测试中,这边先发下。仓位只能自行手工开仓,初始仓位是程序化运行时候持有的仓位,减仓只能在当日可用持仓基础上操作。

GLOBALVARIABLE:ct:=0,cscw:=0,jp:=0,mark:=0;//ct是 记录加仓次数  cscw是初始仓位 是每次运行时候的仓位;jp是用来记住加仓时候的价格
INPUT:lc(3,1,100,1);//回撤减仓幅度设置

input:p(26,20,100,8),s(12,5,40,4),m(9,2,60,6),n(9,1,100,10);//macd参数
DIFF :=EMA(CLOSE,S) - EMA(CLOSE,P);
DEA  :=EMA(DIFF,M);
MACD1 :=2*(DIFF-DEA), COLORSTICK;
macdsc:cross(dea,diff);

ma20:ma(c,20);//均线

current_hold:TBUYHOLDINGEX('','',1);//当前持仓
if cscw=0 and current_hold<>0 then cscw:=current_hold;//记住初始仓位

ykl:TOPENPROFITPER;//盈亏率


x1:CEILING((cscw/100)*1.5)*100;
if ykl<=-10 and ct<3 and current_hold<>0 then begin 
tbuy(1,x1,MKT);//当前账目上亏损10%  1.5倍加仓
ct:=ct+1;
end

x2:CEILING((cscw/100)*0.5)*100;
if ykl>=10 and ct<3   and current_hold<>0 then begin 
tbuy(1,x2,MKT);//当前账目上盈利10%  0.5倍加仓
ct:=ct+1;
jp:=DYNAINFO(  7);//加仓后记住当时的价格 以方便计算后来的行情回撤
end


if (jp-c)/jp>=lc/100 and TBUYHOLDINGEX('','',0)<>0 then //减仓
begin 
ct:=0;
tsell(1,TBUYHOLDINGEX('','',0)-cscw,MKT);//减仓到初始仓位
end


if  macdsc and  TBUYHOLDINGEX('','',0)<>0 then 
begin
tsell(1,TBUYHOLDINGEX('','',0),MKT);//死叉离场
ct:=0;
cscw:=0;
jp:=0;
mark:=0;
end


if cross(ma20,c) and mark=0 and TBUYHOLDINGEX('','',0)<>0 then 
begin 
tsell(1,CEILING((TBUYHOLDINGEX('','',0)/100)/2)*100,MKT);//下破20日
mark:=1;
end


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