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


金字塔客服中心 - 专业程序化交易软件提供商金字塔软件公式模型编写问题提交 → 亏损加仓的代码问题

   

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


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

主题:亏损加仓的代码问题

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


加好友 发短信
等级:超级版主 帖子:14496 积分:0 威望:0 精华:0 注册:2017/7/4 13:40:18
  发帖心情 Post By:2019/3/4 9:53:52    Post IP:180.169.30.6[显示全部帖子]

你只要把你这里的所有开仓语句里面的手数参数换成:ss+NUMLOSSTRADE
比如这里:
ss定义成1
buyshort(holding<0 and ct2<2,ss+NUMLOSSTRADE,market);

不过现在有个问题。这个函数能获取亏损次数,但是这个是不区分多空的,多头亏损和空头亏损都统计在内的。


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


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

 1. 你这里的亏损统计是多头和空头一并统计在一起吗?比如最近开过一次多 亏损 一次空 亏损,那么如果是合并统计的话,那就已经算是2次亏损了。第三次无论开多空都会增加开仓手数。
 2.“每亏损一次加一手单,直到盈利为止。” 这里的盈利是指总的资金的盈利还是说单笔交易的盈利?
[此贴子已经被作者于2019/3/4 14:21:27编辑过]


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


加好友 发短信
等级:超级版主 帖子:14496 积分:0 威望:0 精华:0 注册:2017/7/4 13:40:18
  发帖心情 Post By:2019/3/4 15:27:10    Post IP:180.169.30.6[显示全部帖子]

 你先解决下我4楼的疑问,不然没办法帮你处理。


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


加好友 发短信
等级:超级版主 帖子:14496 积分:0 威望:0 精华:0 注册:2017/7/4 13:40:18
  发帖心情 Post By:2019/3/5 9:05:11    Post IP:180.169.30.6[显示全部帖子]

还有一点 “每亏损一次加一手单”   这个是针对开仓还是加仓,或者是开仓加仓都要这样增加手数?


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


加好友 发短信
等级:超级版主 帖子:14496 积分:0 威望:0 精华:0 注册:2017/7/4 13:40:18
  发帖心情 Post By:2019/3/5 9:26:46    Post IP:180.169.30.6[显示全部帖子]

 VARIABLE:ct1:=0,ct2:=0,ct:=0;
M:=26;
K:=2;
MID:=  MA(CLOSE,M);//布林中轨
UPPER:= MID + K*STD(CLOSE,M);//布林上轨
LOWER:= MID - K*STD(CLOSE,M);//布林下轨

ss1:=CEILING(30/(UPPER-MID));
ss2:=CEILING(30/(MID-LOWER));
buycond1:=h>=UPPER;
buycond2:=l<=LOWER;

zjss:if(ct>=2,ct-2,0);//根据最近连亏的次数定义增加的手数,如果某次交易盈利了,则重置这个变量,开仓手数恢复到默认手数。

开多:buy(buycond1 and holding=0,ss1+zjss,market);
开空:buyshort(buycond2 and holding=0,ss2+zjss,market);

jc1:=holding>0 and MID>AvGENTERPRICE and ct1<2;//多头加仓条件
if jc1 then
begin
加仓1:buy(holding>0 and ct1<2,1,market);
ct1:=ct1+1;
end

jc2:=holding<0 and AvGENTERPRICE<MID and ct2<2 ;//空头加仓条件
if jc2 then begin
加仓2:buyshort(holding<0 and ct2<2,1,market);
ct2:=ct2+1;
end

ydzs1:=l<MID and holding>0;//多头止损条件
if ydzs1 then
begin
止损1:sell(holding>0,holding,market);
ct1:=0;
ct:=if(NUMPROFIT(1)<0,ct+1,0);//单笔交易盈利则重置变量ct
end
ydzs2:=h>MID and holding<0;//空头止损条件
if ydzs2 then
begin
止损2:sellshort(holding<0,holding,market);
ct2:=0;
ct:=if(NUMPROFIT(1)<0,ct+1,0);//单笔交易盈利则重置变量ct
end


当前持仓:HOLDING,COLORGRAY,LINETHICK0;
当前资产:ASSET,NOAXIS,COLORGRAY;


我按照单笔交易盈亏的情况来处理。单笔连亏2次以上增加后续开仓的手数,加仓手数不变,只修改了单纯的开仓手数。如果某次单笔交易盈利,则后续开仓回复默认开仓手数。


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