Rss & SiteMap

金字塔客服中心 - 专业程序化交易软件提供商 http://www.weistock.com/bbs/

专业程序化软件提供商
共9 条记录, 每页显示 10 条, 页签: [1]
[浏览完整版]

标题:股票计算的OPENPROFIT不准?或我的计算错误在哪?

1楼
sword8586 发表于:2021/4/8 11:24:09
目的:想通过开仓后不同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是变动的,请问老师我的计算方法错误在哪?
谢谢      
2楼
banzhuan 发表于:2021/4/8 13:11:43
openprofit 这个函数只包括了开始手续费,并未包括平仓的手续费,所以你开仓手续费可以通过这个得出,平仓费用不行
3楼
sword8586 发表于:2021/4/8 13:24:34
谢谢您
图表平仓手续费呢?如何得出?

[此贴子已经被作者于2021/4/8 13:25:26编辑过]
4楼
banzhuan 发表于:2021/4/8 13:33:37
直接用这个函数 :GEGCHARGE 
5楼
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
错误在哪?
谢谢
6楼
banzhuan 发表于:2021/4/8 15:11:26
你发下你计算的完整代码,我本地试试看
7楼
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
8楼
banzhuan 发表于:2021/4/8 17:29:54
上面的代码里好多错误,你那边能编译通过啊?  我们这边先看下晚点回复您
9楼
banzhuan 发表于:2021/4/9 9:50:50
股指期货手续费你算的不对,应该是CLOSE * 300 * 0.005%,按软件默认的费率来计算的,您按下面的代码修改试试

buyFee11:=BuyP*300*0.00005;//'股指期货开仓手续费
buyFee:=GEGCHARGE('',Close,1,0);//股票开仓手续费    

图片点击可在新窗口打开查看此主题相关图片如下:temp.png
图片点击可在新窗口打开查看
共9 条记录, 每页显示 10 条, 页签: [1]


Powered By Dvbbs Version 8.3.0
Processed in 0.04980 s, 2 queries.