以文本方式查看主题 - 金字塔客服中心 - 专业程序化交易软件提供商 (http://www.weistock.com/bbs/index.asp) -- 金字塔软件问题提交 (http://www.weistock.com/bbs/list.asp?boardid=2) ---- 股票计算的OPENPROFIT不准?或我的计算错误在哪? (http://www.weistock.com/bbs/dispbbs.asp?boardid=2&id=185081) |
-- 作者:sword8586 -- 发布时间:2021/4/8 11:24:09 -- 股票计算的OPENPROFIT不准?或我的计算错误在哪? 目的:想通过开仓后不同K的openprofit计算出开仓的手续费率Xopen与平仓的手续费率(含印花税率等)Xsell 方法:1、获取策略出现开仓(Close价,买入)信号后任意间隔的两根K1,K2的动态盈亏openprofit1与openprofit2,收盘价CLOSE1,CLOSE2 2、设定开仓的费率为Xopen与平仓的手续费率(含印花税率等)Xsell,动态收盘(平仓)价即为两根K1,K2的动CLOSE1,CLOSE2 3、Xopen与平仓的手续费率(含印花税率等)Xsell的计算 开仓费用:Close*Xopen 动态平仓费用: K1为:CLOSE1*Xsell K2为:CLOSE2*Xsell 各根K动态盈亏(方程): K1为:(CLOSE1-Close)-(Close*Xopen+CLOSE1*Xsell)=openprofit1 K2为:(CLOSE1-Close)-(Close*Xopen+CLOSE1*Xsell)=openprofit2 问题:通过该法计算出的开仓的费率为Xopen与平仓的手续费率(含印花税率等)Xsell是变动的,请问老师我的计算方法错误在哪? 谢谢
|
-- 作者:banzhuan -- 发布时间:2021/4/8 13:11:43 -- openprofit 这个函数只包括了开始手续费,并未包括平仓的手续费,所以你开仓手续费可以通过这个得出,平仓费用不行 |
-- 作者:sword8586 -- 发布时间:2021/4/8 13:24:34 -- 谢谢您 图表平仓手续费呢?如何得出? [此贴子已经被作者于2021/4/8 13:25:26编辑过]
|
-- 作者:banzhuan -- 发布时间:2021/4/8 13:33:37 -- 直接用这个函数 :GEGCHARGE |
-- 作者:sword8586 -- 发布时间:2021/4/8 15:10:21 -- 谢谢老师,但是我采用GEGCHARGE 计算某根K1的openprofit1结果与图表给出的openprofit不一致,请老师指点,方法如下: 1、获取策略出现开仓(Close价,买入)信号后任意间隔的两根K1,K2的动态盈亏openprofit1与openprofit2,收盘价CLOSE1,CLOSE2 2、openprofit1=(CLOSE1-Close)-GEGCHARGE (\'\',CLOSE1,1,0) 结果:openprofit1<>openprofit 错误在哪? 谢谢
|
-- 作者:banzhuan -- 发布时间:2021/4/8 15:11:26 -- 你发下你计算的完整代码,我本地试试看 |
-- 作者:sword8586 -- 发布时间:2021/4/8 15:39:06 -- 指标: VARIABLE:mholding=0,BuyP=0,ExtP=0,OpenP=0,entB=0,ExtB=0,buyFee=0,totalProfit=0,NtotalProfit=0; EMA5:=EMA(CLOSE,5);REMA5:=REF(EMA5,1); EMA10:=EMA(CLOSE,10);REMA10:=REF(EMA10,1); EMA20:=EMA(CLOSE,20);REMA20:=REF(EMA20,1); EMA120:=EMA(C,120); if mholding>0 then OpenP:=(mholding*(C-buyP)+(buyFee));//股票利润mholding*C*17.95/10000+ OPPROFIT:Openp,LINETHICK0; //交易条件: KDPK0:if(CROSS(EMA5,EMA20) and mholding<=0 ,1,0);//,LINETHICK0 KKPD0:if(((CROSS(EMA20,EMA5) and OpenP>0) and holding>=0,1,0);//,LINETHICK0 //************************************* if KDPK0=1 then BEGIN// //buy(1,1,THISCLOSE);//开多&&MA60>MA90,IGNORECHECKPRICE; mholding:=mholding+1; entB:=entB+1; extB:=0; BuyP:=Close; OpenP:=0; //buyFee=0;
//buyFee=(BuyP+0.2)*300*0.23/10000\'股指期货开仓手续费
buyFee:=GEGCHARGE(\'\',Close,1,0);//股票开仓手续费
end if KKPD0 then BEGIN //sell(1,mholding,THISCLOSE);//平多 mholding:=0; entB:=0; extB:=extB+1; extP:=CLOSE; BuyP:=0; OpenP:=0; //buyFee=0; //sellFee=sellFee+mholding*C*11.24/10000;//\'股票平仓手续费mholding*extP*(1.24/10000+10/10000)
//buyFee=(BuyP+0.2)*300*0.23/10000\'股指期货开仓手续费
buyFee:=0;
NtotalProfit:=totalProfit; end 策略: VARIABLE:mholding=0,BuyP=0,ExtP=0,OpenP=0,entB=0,ExtB=0,buyFee=0,totalProfit=0,NtotalProfit=0; EMA5:=EMA(CLOSE,5);REMA5:=REF(EMA5,1); EMA10:=EMA(CLOSE,10);REMA10:=REF(EMA10,1); EMA20:=EMA(CLOSE,20);REMA20:=REF(EMA20,1); EMA120:=EMA(C,120); if mholding>0 then OpenP:=(mholding*(C-buyP)+(buyFee));//股票利润mholding*C*17.95/10000+ OPPROFIT:OpenProfit,LINETHICK0; //交易条件: KDPK0:if(CROSS(EMA5,EMA20) and mholding<=0 ,1,0);//,LINETHICK0 KKPD0:if(((CROSS(EMA20,EMA5) and OpenProfit>0) and holding>=0,1,0);//,LINETHICK0 //************************************* if KDPK0=1 then BEGIN// buy(1,1,THISCLOSE);//开多&&MA60>MA90,IGNORECHECKPRICE; mholding:=mholding+1; entB:=entB+1; extB:=0; BuyP:=Close; OpenP:=0; //buyFee=0;
//buyFee=(BuyP+0.2)*300*0.23/10000\'股指期货开仓手续费
buyFee:=GEGCHARGE(\'\',Close,1,0);//股票开仓手续费
end if KKPD0 then BEGIN sell(1,mholding,THISCLOSE);//平多 mholding:=0; entB:=0; extB:=extB+1; extP:=CLOSE; BuyP:=0; OpenP:=0; //buyFee=0; //sellFee=sellFee+mholding*C*11.24/10000;//\'股票平仓手续费mholding*extP*(1.24/10000+10/10000)
//buyFee=(BuyP+0.2)*300*0.23/10000\'股指期货开仓手续费
buyFee:=0;
NtotalProfit:=totalProfit; end |
-- 作者:banzhuan -- 发布时间:2021/4/8 17:29:54 -- 上面的代码里好多错误,你那边能编译通过啊? 我们这边先看下晚点回复您 |
-- 作者:banzhuan -- 发布时间:2021/4/9 9:50:50 -- 股指期货手续费你算的不对,应该是CLOSE * 300 * 0.005%,按软件默认的费率来计算的,您按下面的代码修改试试 buyFee11:=BuyP*300*0.00005;//\'股指期货开仓手续费 buyFee:=GEGCHARGE(\'\',Close,1,0);//股票开仓手续费
|