等级: 免费版
- 注册:
- 2021-6-1
- 曾用名:
|
本帖最后由 技术006 于 2021-12-8 10:56 编辑
我们从图表转入后台时候往往会发现后台没有持仓同步这个功能,那是因为后台本质上使用的是账户持仓而非理论持仓
那么如果我们还是想要实现这个功能怎么办呢,这边给出一个模板范例大致原理就是获取图表策略的理论持仓holding然后和账户持仓做匹配。
此外范例增加了有未成交单或者图表最新的持仓和上一根不一样(最新k有发生持仓变化),此时同步不会执行。
注意:所引用的策略最后要输出一个ho:holding;用来被调用,另外这里默认调用500根k计算得出持仓结果,如果要和图表上进行对应也需要控制图表k线数量在500
另外这里策略理论持仓是一个策略的,如果你有多个策略引用可以进行多个策略的stkindiex,然后把引用过来的持仓加起来得到一个总的理论持仓
//策略理论持仓
ho1:stkindiex(stklabel,'BOLL布林带交易系统.ho',0,1,0,500);
//上一根k线的理论持仓
before_ho1:stkindiex(stklabel,'BOLL布林带交易系统.ho',0,1,-1,500);
//账户多头持仓
tbuyho:tbuyholdingex('',STKLABEL,1);
//账户空头持仓
tsellho:tsellholdingex('',STKLABEL,1);
//是否有未成交单,返回1表示有未成交
is_order:TGLOBALSUBMITEX(0,'',stklabel,0);
//如果当前品种有挂单或者理论策略的当根k理论持仓有变化,就不执行
if is_order or (ho1<>before_ho1) then exit;
else
BEGIN
//多头部分
//理论持仓大于0,补仓
if ho1>0 and ho1>tbuyho then
BEGIN
tbuy(1,ho1-tbuyho,mkt);
END
//理论持仓大于0,减仓
if ho1>=0 and ho1<tbuyho then
BEGIN
tsell(1,tbuyho-ho1,mkt);
END
//空头部分
//理论持仓小于0,补仓
if ho1<0 and abs(ho1)>tsellho then
BEGIN
tbuyshort(1,abs(ho1)-tsellho,mkt);
END
//理论持仓小于0,减仓
if ho1<=0 and abs(ho1)<tsellho then
BEGIN
tsellshort(1,tsellho-abs(ho1),mkt);
END
END
这段代码是实现持仓校对,实现的时候需要写个图表策略,输出持仓吗?然后在写个后台策略,引用图表策略的持仓和账号实际持仓做对比,来校对吗?
|
|