请选择 进入手机版 | 继续访问电脑版

交易手数的计算方法

[复制链接]
查看111 | 回复4 | 张孟珂 | 2020-5-30 19:12:05 | 显示全部楼层 |阅读模式
我们在研究交易模型时,定义好开平仓条件后,就是开平仓的手数计算。

手数计算公式
FUND:=10000000; //定义初始资金
LOTS:=INTPART(FUND*0.4/(CLOSE*MARGIN*UNIT+FEE));// 计算开仓手数

在上述计算公式中,每一根K线上的收盘价是会对计算出来的手数有所影响,那就是说会影响到开平仓的手数,出现仓位并不能完全平掉的情况,具体测试内容我们在下面楼层中详细说明。

回复

使用道具 举报

张孟珂 | 2020-5-30 19:19:37 | 显示全部楼层
我们今天的测试结果是基于MACD指标在上证指数的。测试内容有:

1)  测试一条件:MACD金叉,买入;死叉卖出;开平仓的手数直接使用LOTS;
2)  测试二条件:MACD金叉,买入;死叉卖出;开平仓的手数使用LOTS、BKVOL、SKVOL去定义的中间变量;
回复

使用道具 举报

张孟珂 | 2020-5-30 19:20:23 | 显示全部楼层
一、测试内容说明
1)  测试一条件:MACD金叉,买入;死叉卖出;开平仓的手数直接使用LOTS;

测试代码
DIFF : EMA(CLOSE,SHORT) - EMA(CLOSE,LONG);// 短周期与长周期的收盘价的指数平滑移动平均值做差。
DEA  : EMA(DIFF,M);// DIFF的M个周期指数平滑移动平均
2*(DIFF-DEA),COLORSTICK;// DIFF减DEA的2倍画柱状线
//仓位计算
FUND:=10000000; //资金
LOTS:=INTPART(FUND*0.4/(C*MARGIN*UNIT+FEE));// 计算开仓手数
CROSSUP(DIFF,DEA),BPK(LOTS);//做多信号
CROSSDOWN(DIFF,DEA),SPK(LOTS);//做空信号

【交易明细说明】

交易手数A.png

2)  测试二条件:MACD金叉,买入;死叉卖出;开平仓的手数使用LOTS、BKVOL、SKVOL去定义的中间变量;

测试代码
DIFF : EMA(CLOSE,SHORT) - EMA(CLOSE,LONG);// 短周期与长周期的收盘价的指数平滑移动平均值做差。
DEA  : EMA(DIFF,M);// DIFF的M个周期指数平滑移动平均
2*(DIFF-DEA),COLORSTICK;// DIFF减DEA的2倍画柱状线
//仓位计算
FUND:=10000000; //资金
LOTS:=INTPART(FUND*0.4/(C*MARGIN*UNIT+FEE));// 计算开仓手数
//手数计算
// 1、设置一个头寸值,头寸是LOTS和BKVOL之间取最大值,或者在LOTS和SKVOL取最大值;
// BKTC:在LOTS和SKVOL之间取最大值;
BKTC : MAX(LOTS, SKVOL);//反手做多的手数
// SKTC:在LOTS和BKVOL之间取最大值;
SKTC : MAX(LOTS, BKVOL);//反手做空的手数
CROSSUP(DIFF,DEA),BPK(BKTC);//做多信号
CROSSDOWN(DIFF,DEA),SPK(SKTC);//做空信号

【交易明细说明】
交易手数B.png


【测试一、测试二对比】

交易手数-测试对比.png

二、测试小结
1、从测试一的测试报告中可以看出来,指令个数和信号格式是350次,但是交易次数只有59次,很明显是不正常的;从交易明细中可以看出来,平仓手数是和开仓手数是不相等的;
2、我们改变手数计算方法后,测试二报告中的交易次数有175次,同时交易明细中开仓手数和平仓手数都是相等的;因此在后面的模型研究中均可以使用测试二中的手数计算方法。

回复

使用道具 举报

西瓜 | 2020-6-1 23:47:24 | 显示全部楼层
// 1、设置一个头寸值,头寸是LOTS和BKVOL之间取最大值,或者在LOTS和SKVOL取最大值;
// BKTC:在LOTS和SKVOL之间取最大值;
BKTC : MAX(LOTS, SKVOL);//反手做多的手数
// SKTC:在LOTS和BKVOL之间取最大值;
SKTC : MAX(LOTS, BKVOL);//反手做空的手数
CROSSUP(DIFF,DEA),BPK(BKTC);//做多信号
CROSSDOWN(DIFF,DEA),SPK(SKTC);//做空信


这里的逻辑理能说说吗?
回复

使用道具 举报

张孟珂 | 2020-6-2 09:47:58 | 显示全部楼层
1、先说明:在LOTS 的计算公式中,用到了当根K线上的收盘价,所以LOTS 这个值是在不停变化的,如果首次开仓100手,持仓量就是100手;但是在反手条件触发时,你反手时计算出来的LOTS 值要比实际持仓量BKVOL 或者SKVOL 大或者小;
2、因此我们先设置一个中间变量 BKTC / SKTC;
3、如果现在是持多头仓位,那SKTC 就在LOTS 和BKVOL 两个值中间取最大值,这个最大值就是我们要反手做空或者平掉的仓位,否则会有仓位没有全部平掉。


回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

相关课程推荐
桥博士《MACD指标详解》
为什么我们只用MACD金叉死叉来进行操作效果并不好,学习课程就能在研究MACD指标上少走很多弯路
桥博士《K线形态组合解析》
从理论到实战,让您全面掌握各种K线形态及各种组合,帮您分析梳理大量K线知识让您的投资更游刃有余
桥博士《股票入门基础知识》
从理论到实战,课程包括如何买卖股票、开户流程、交易软件、k线图知识、技术指标、价值投资等新手必备知识

43

主题

236

帖子

755

积分

高级会员

Rank: 4

积分
755
  • 官方论坛

    提供最新 Discuz! 产品新闻、软件下载与技术交流