【量化金融】交易模型常见系统问题(2)持仓识别(实盘量化亏5000以上才能明白的交易技巧)以tb开拓者为例

持仓识别是量化交易建模基础。这里就tb开拓者的一些公开的模型代码,略微的解说一下。

一般而言,量化交易的开平仓设计有以下几个关键点:
(1)持仓识别。空仓和有持仓状态会关系到未来策略的逻辑处理。

(2)止损止盈策略。止损止盈策略需要识别持仓状态,并且根据策略逻辑执行止损止盈的策略。

下面我们分类来讨论一些各自特点,具体解决问题各自自己设计,我就不把最终结果列出来了,因为每个人的交易逻辑模型不一样,具体的方案需要具体分析。

一:持仓状态

持仓状态这个问题是挺关键的一个常见操作。如果处理不好,会造成平凡开仓或者用光保证金的状态,并且开平仓的反而给你锁仓了,造成保证金的浪费。

下面以上次用到的那个策略模型代码来讨论一下。

Params
Numeric d1(10);
Numeric d2(20);
Numeric d3(40);
Numeric s(3);
Vars
Numeric lot(0);
Numeric EMA1(0);
Numeric EMA2(0);
Numeric EMA3(0);
Numeric sd(0);

Begin
EMA1=Average(Close[1],d1);
EMA2=Average(Close[1],d2);
EMA3=Average(Close[1],d3);
sd=(StandardDev((Close[1]-Close[2])/Close,100,2))*100;
lot=IntPart(10/sd);
If(MarketPosition==0)
{
If((EMA1>(EMA2+s))&&(EMA1>(EMA3+s)))
Buy(lot,Open);
If((EMA1<(EMA2-s))&&(EMA1<(EMA3-s)))
SellShort(lot,Open);
};
If(MarketPosition==1)
{
If((EMA1<(EMA2-s))&&(EMA1<(EMA3-s)))
{Sell(lot,Open);
SellShort(lot,Open);};
};
If(MarketPosition==-1)
{
If((EMA1>(EMA2+s))&&(EMA1>(EMA3+s)))
{BuyToCover(lot,Open);
Buy(lot,Open);};
};
End

(1)当持仓状态MarketPosition==0,没有持仓的时候,出现多头信号,进行买入、平空策略(平空策略不可能执行)。

(2)当持仓状态MarketPosition==1,有多持仓的时候,出现空头信号,进行卖开、平多执行。

(3)当持仓状态MarketPosition==-1,有空持仓的时候,出现多头信号,进行买开、平空执行。

注意的是,MarketPosition不仅仅是持仓状态,他的正负代表着多空持仓状态。这个问题以前我做模型的时候忽略过,亏过钱,所以现在想起来还是挺有说明意义的。

当然,指标信号和账户持仓也要考虑到位。有信号的时候不见得有账户持仓,比如刚开程序,就出现了指标平仓策略,这就要考虑到我说的账户持仓问题。

这个问题可以通过BarSinceEntr指令通过And逻辑来执行。

特别提出的是,部分期货合约的跳动有5元一跳、2元一跳、0.5元一跳的等等差别,这时候开平仓指标执行的时候需要考虑到Numeric MinPoint的注释。

上面这些在《tradeblazer公式开发指南》里面有更详细的解释。我这里就给各位开发模型的略带指一下就行。

二:止盈止损

止盈止损是一个模型是否赚钱的防火墙,也是一个模型成功与否的必要模块。

像是《tradeblazer公式开发指南》提到的定量止盈(止损)和定量跟踪止盈止损其实都是可以参考的止盈止损模块。总体而言,搭载模型还是需要以各自模型的特点设计止盈止损的。

目前比较先进的止盈止损是移动止盈止损,对于网格交易和高频交易更多的是定量止损,所以不同模型是有不同的设计需求,要看你们的实际设计逻辑和模块是怎么样的,来具体设计。这也是一个模型里面卖的比较贵的模块之二,最贵的自然是交易逻辑。一般有这两个模块基本就能 自己手动交易了。

《tradeblazer公式开发指南》里面提到的止盈止损相对比较初级,但也有一定效果。感兴趣的朋友可以找一个《tradeblazer公式开发指南》来看看,我就不在这里贴相关的代码了。后期我会把这个《tradeblazer公式开发指南》全文贴出来给大家参考的。

 

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值