目的:想通过开仓后不同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是变动的,请问老师我的计算方法错误在哪?
谢谢
谢谢您
图表平仓手续费呢?如何得出?
[此贴子已经被作者于2021/4/8 13:25:26编辑过]
谢谢老师,但是我采用GEGCHARGE 计算某根K1的openprofit1结果与图表给出的openprofit不一致,请老师指点,方法如下:1、获取策略出现开仓(Close价,买入)信号后任意间隔的两根K1,K2的动态盈亏openprofit1与openprofit2,收盘价CLOSE1,CLOSE2
2、openprofit1=(CLOSE1-Close)-GEGCHARGE ('',CLOSE1,1,0)
结果:openprofit1<>openprofit
错误在哪?
谢谢
指标:
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
上面的代码里好多错误,你那边能编译通过啊? 我们这边先看下晚点回复您
股指期货手续费你算的不对,应该是CLOSE * 300 * 0.005%,按软件默认的费率来计算的,您按下面的代码修改试试
buyFee11:=BuyP*300*0.00005;//'股指期货开仓手续费
buyFee:=GEGCHARGE('',Close,1,0);//股票开仓手续费
此主题相关图片如下:temp.png
