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


金字塔客服中心 - 专业程序化交易软件提供商金字塔软件公式模型编写问题提交 → 公式计算盈亏情况的简便方法改不对

   

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


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

主题:公式计算盈亏情况的简便方法改不对

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


加好友 发短信
等级:黑侠 帖子:611 积分:0 威望:0 精华:0 注册:2015/9/11 9:51:55
公式计算盈亏情况的简便方法改不对  发帖心情 Post By:2015/10/21 15:04:55    Post IP:124.77.47.169[只看该作者]

根据阿火密笈,以下的语句为母本

十八、 自己在模型里计算盈亏情况的一个简便方法。

从另外一个角度说明了金字塔的测试结果是正确的。

 

方法示例如下:(这里股指上的简单的均线系统为例)

variable:sumwealth=0;
ma10:=ma(c,5);
ma25:=ma(c,25);
sxf:=0.01/100;//手续费0.01%
if holding>0 and ma10<ma25 then begin
 sell(1,1,thisclose);
 sumwealth:=sumwealth+1*c*300*(1-sxf);//卖出时减去交易额
end
if holding<0 and ma10>ma25 then begin
 sellshort(1,1,thisclose);
 sumwealth:=sumwealth-1*c*300*(1+sxf);//买入时加上交易额
end
if holding=0 and ma10>ma25 then begin
 buy(1,1,thisclose);
 sumwealth:=sumwealth-1*c*300*(1+sxf);
end
if holding=0 and ma10<ma25 then begin
 buyshort(1,1,thisclose);
 sumwealth:=sumwealth+1*c*300*(1-sxf);
end

zichan:sumwealth+holding*c*300-abs(holding)*c*300*sxf,noaxis;

 
 
 
 

按照自己的策略喜欢用的格式改写了一下,得不出需要的zichan数值了,请教问题出在哪里?

以下是改写后的程序

variable:sumwealth=0;
ma10:ma(c,10);
ma25:ma(c,25);
BKK:=holding=0 and ma10>ma25;
SPP:=holding>0 and ma10<ma25;

SKK:=holding=0 and ma10<ma25;
BPP:=holding<0 and ma10>ma25;

 

手数:=1;
 SELL(spp,手数, thisclose);
 SELLSHORT(bpp,手数,thisclose);
 BUY(bkk and state=0,手数,thisclose);
 BUYSHORT(Skk and state=0,手数,thisclose);

sxf:=0.01/100;//手续费0.01%

if spp then begin
sumwealth:=sumwealth+手数*c*300*(1-sxf);//卖出时减去交易额
end
if bpp then begin
  sumwealth:=sumwealth-手数*c*300*(1+sxf);//买入时加上交易额
end
if bkk and state=0 then begin
  sumwealth:=sumwealth-手数*c*300*(1+sxf);
end
if Skk and state=0 then begin
  sumwealth:=sumwealth+手数*c*300*(1-sxf);
END

zichan:sumwealth+holding*c*300-abs(holding)*c*300*sxf,noaxis;

[此贴子已经被作者于2015/10/21 15:06:27编辑过]

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


加好友 发短信
等级:罗宾汉 帖子:46311 积分:50819 威望:0 精华:2 注册:2011/3/23 8:50:25
  发帖心情 Post By:2015/10/21 15:09:07    Post IP:58.246.57.26[只看该作者]

不要把条件写在开平仓语句前,你的条件里面有holding判断,而开平语句的执行结果会影响到holding,


金字塔—专业程序化交易量化投资平台

客户服务部

----------------------------------------------------------- 欢迎您参加我公司的技术培训,具体培训需求请发邮件到service@weistock.com

您的宝贵建议或者投诉,请发往邮箱:weiwei@weistock.com

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


加好友 发短信
等级:黑侠 帖子:611 积分:0 威望:0 精华:0 注册:2015/9/11 9:51:55
  发帖心情 Post By:2015/10/21 15:24:41    Post IP:124.77.47.169[只看该作者]

但是为什么我的写法对图表中的交易信号并没有影响呢?不影响交易啊


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


加好友 发短信
等级:罗宾汉 帖子:46311 积分:50819 威望:0 精华:2 注册:2011/3/23 8:50:25
  发帖心情 Post By:2015/10/21 15:32:07    Post IP:58.246.57.26[只看该作者]

不会信号一样,我在本地测试就能看出信号不一样了,


金字塔—专业程序化交易量化投资平台

客户服务部

----------------------------------------------------------- 欢迎您参加我公司的技术培训,具体培训需求请发邮件到service@weistock.com

您的宝贵建议或者投诉,请发往邮箱:weiwei@weistock.com

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


加好友 发短信
等级:黑侠 帖子:611 积分:0 威望:0 精华:0 注册:2015/9/11 9:51:55
  发帖心情 Post By:2015/10/22 9:47:38    Post IP:124.77.47.169[只看该作者]

看到不一样有阿火的程序里的ma10实际是5周期均线,如果改成ma10:=ma(c,10),同时我的开仓下单指令简单用cross函数的话,图表信号是完全一致的,但为何zich算出来还是大大不同呢?详细源码如下

谢谢

阿火:方法示例如下:(这里股指上的简单的均线系统为例)

variable:sumwealth=0;
ma10:=ma(c,10);
ma25:=ma(c,25);
sxf:=0.01/100;//手续费0.01%
if holding>0 and ma10<ma25 then begin
 sell(1,1,thisclose);
 sumwealth:=sumwealth+1*c*300*(1-sxf);//卖出时减去交易额
end
if holding<0 and ma10>ma25 then begin
 sellshort(1,1,thisclose);
 sumwealth:=sumwealth-1*c*300*(1+sxf);//买入时加上交易额
end
if holding=0 and ma10>ma25 then begin
 buy(1,1,thisclose);
 sumwealth:=sumwealth-1*c*300*(1+sxf);
end
if holding=0 and ma10<ma25 then begin
 buyshort(1,1,thisclose);
 sumwealth:=sumwealth+1*c*300*(1-sxf);
end

zichan:sumwealth+holding*c*300-abs(holding)*c*300*sxf,noaxis;

 
 
 
 

按照自己的策略喜欢用的格式改写了一下,得不出需要的zichan数值了,请教问题出在哪里?

以下是改写后的程序

 

variable:sumwealth=0;
ma10:ma(c,10);
ma25:ma(c,25);
BKK:=cross(ma10,ma25);
SPP:=holding>0 and ma10<ma25;

SKK:=cross(ma25,ma10);
BPP:=holding<0 and ma10>ma25;

 

手数:=1;
 SELL(spp,手数, thisclose);
 SELLSHORT(bpp,手数,thisclose);
 BUY(bkk and state=0,手数,thisclose);
 BUYSHORT(Skk and state=0,手数,thisclose);

sxf:=0.01/100;//手续费0.01%

if spp then begin
sumwealth:=sumwealth+手数*c*300*(1-sxf);//卖出时减去交易额
end
if bpp then begin
  sumwealth:=sumwealth-手数*c*300*(1+sxf);//买入时加上交易额
end
if bkk and state=0 then begin
  sumwealth:=sumwealth-手数*c*300*(1+sxf);
end
if Skk and state=0 then begin
  sumwealth:=sumwealth+手数*c*300*(1-sxf);
END

zichan:sumwealth+holding*c*300-abs(holding)*c*300*sxf,noaxis;


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


加好友 发短信
等级:黑侠 帖子:611 积分:0 威望:0 精华:0 注册:2015/9/11 9:51:55
  发帖心情 Post By:2015/10/22 12:37:18    Post IP:124.77.47.169[只看该作者]

???

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


加好友 发短信
等级:罗宾汉 帖子:46311 积分:50819 威望:0 精华:2 注册:2011/3/23 8:50:25
  发帖心情 Post By:2015/10/22 13:33:38    Post IP:58.246.57.26[只看该作者]

1.首先在我本地测试中,可以看到k线图最前端,少了一笔交易,并不是所谓的信号一样

2.其次后面信号的差不多,但是中间的变量计算就不一样了,有些信号是不交易的,因为holding判断的存在,所以不交易,sumwealth也就不计算,但是你写的只判断条件又不判断持仓,这个时候当条件满足但是持仓不满足的情况下,交易信号是没有的,但是sumwealth却被累加计算了



金字塔—专业程序化交易量化投资平台

客户服务部

----------------------------------------------------------- 欢迎您参加我公司的技术培训,具体培训需求请发邮件到service@weistock.com

您的宝贵建议或者投诉,请发往邮箱:weiwei@weistock.com

 回到顶部