金字塔决策交易系统

 找回密码
 

微信登录

微信扫一扫,快速登录

搜索
楼主: 胖虎爱吃鱼

虚拟持仓问题

[复制链接]

227

主题

881

帖子

881

积分

等级: 免费版

注册:
2022-4-2
曾用名:
 楼主| 发表于 2023-5-18 16:53 | 显示全部楼层
技术010 发表于 2023-5-18 16:26
这个没有比较好的思路,因为你的代码中涉及到if判断,所以你的需求能用序列模式实现不了。现在逐K+仅刷最后 ...

只关注最新k的情况,然后跟账户去做对比是吧。
回复

使用道具 举报

0

主题

1万

帖子

1万

积分

Rank: 8Rank: 8

等级: 超级版主

注册:
2021-5-18
曾用名:
gxx978
发表于 2023-5-18 16:57 | 显示全部楼层
嗯,是的,后台上的策略汇总是这个逻辑。
金字塔提供一对一VIP专业技术指导服务,技术团队实时响应您的日常使用问题与策略编写。联系电话:021-20339086
回复

使用道具 举报

227

主题

881

帖子

881

积分

等级: 免费版

注册:
2022-4-2
曾用名:
 楼主| 发表于 2023-5-19 10:40 | 显示全部楼层
技术010 发表于 2023-5-18 16:57
嗯,是的,后台上的策略汇总是这个逻辑。

请问老师,这样可以吗
//策略理论持仓
tren0:stkindiex('','一箭穿心.cc0',0,21,3,15000);  //引用3分钟周期上的策略a的h值。
wave0:stkindiex('','震荡反转.cc0',0,3,0,5000);  //引用15分钟周期上的策略b的h值。


abcholding:=tren0+wave0;
//上一根k线的理论持仓
//tren1:stkindiex('','一箭穿心.cc',0,21,3,15000);  //引用3分钟周期上的策略a的h值。
//wave1:stkindiex('','震荡反转.cc',0,3,0,5000);  //引用15分钟周期上的策略b的h值。
tren1:ref(tren0,1);  //引用3分钟周期上的策略a的h值。
wave1:ref(wave0,1);  //引用15分钟周期上的策略b的h值。


before_abcholding:=tren1+wave1;
//账户多头持仓
tbuyho:tbuyholdingex('',stklabel,1);
//账户空头持仓
tsellho:tsellholdingex('',stklabel,1);
//是否有未成交单,返回1表示有未成交
is_order:tglobalsubmitex(0,'',stklabel,0);

//如果当前品种有挂单或者理论策略的当根k理论持仓有变化,就不执行
if is_order or (abcholding<>before_abcholding) then exit;
else
begin
        //多头部分                       
        if abcholding>=0 and tsellho>0 then tsellshort(1,tsellho,mkt);
        //理论持仓大于0,补仓
        if abcholding>0 and abcholding>tbuyho then
        begin
                tbuy(1,abcholding-tbuyho,mkt);
        end
        //理论持仓大于0,减仓
        if abcholding>0 and abcholding<tbuyho then
        begin
                tsell(1,tbuyho-abcholding,mkt);
        end

        //空头部分
        if abcholding<=0 and tbuyho>0 then tsell(1,tbuyho,mkt);
        //理论持仓小于0,补仓
        if abcholding<0 and abs(abcholding)>tsellho then
        begin
                tbuyshort(1,abs(abcholding)-tsellho,mkt);
        end
        //理论持仓小于0,减仓
        if abcholding<0 and abs(abcholding)<tsellho then
        begin
                tsellshort(1,tsellho-abs(abcholding),mkt);
        end                        
end
回复

使用道具 举报

0

主题

1万

帖子

1万

积分

Rank: 8Rank: 8

等级: 超级版主

注册:
2021-5-18
曾用名:
gxx978
发表于 2023-5-19 10:44 | 显示全部楼层
不是这个逻辑啊。你直接引用理论持仓就可以了,没必要还引用在用ref的一个理论持仓啊,不是理论持仓和上一个理论持仓的变化来判断是否下单的,而是根据理论持仓和实际账户持仓是否一样,来判断是否开平仓的。
金字塔提供一对一VIP专业技术指导服务,技术团队实时响应您的日常使用问题与策略编写。联系电话:021-20339086
回复

使用道具 举报

227

主题

881

帖子

881

积分

等级: 免费版

注册:
2022-4-2
曾用名:
 楼主| 发表于 2023-5-19 11:03 | 显示全部楼层
技术010 发表于 2023-5-19 10:44
不是这个逻辑啊。你直接引用理论持仓就可以了,没必要还引用在用ref的一个理论持仓啊,不是理论持仓和上一 ...

能帮忙写下吗,感谢
回复

使用道具 举报

0

主题

1万

帖子

1万

积分

Rank: 8Rank: 8

等级: 超级版主

注册:
2021-5-18
曾用名:
gxx978
发表于 2023-5-19 11:04 | 显示全部楼层
那你稍等下,我们这会写个范例给你,需要点时间,关注本贴即可。
金字塔提供一对一VIP专业技术指导服务,技术团队实时响应您的日常使用问题与策略编写。联系电话:021-20339086
回复

使用道具 举报

227

主题

881

帖子

881

积分

等级: 免费版

注册:
2022-4-2
曾用名:
 楼主| 发表于 2023-5-19 14:01 | 显示全部楼层
技术010 发表于 2023-5-19 11:04
那你稍等下,我们这会写个范例给你,需要点时间,关注本贴即可。

好的,感谢!
回复

使用道具 举报

0

主题

1万

帖子

1万

积分

Rank: 8Rank: 8

等级: 超级版主

注册:
2021-5-18
曾用名:
gxx978
发表于 2023-5-19 14:29 | 显示全部楼层
参考如下范例,仅供参考:
a:stkindiex('','一箭穿心.cc0',0,21,3,15000);  //引用3分钟周期上的策略a的仓位。
b:stkindiex('','震荡反转.cc0',0,3,0,5000);  //引用15分钟周期上的策略b的仓位。

t_holding:=a+b;                               //理论持仓

bh_new_month_t:=tbuyholdingex('','',0);                                 //多头今仓
bh_new_month_y:=tbuyholdingex('','',1)-tbuyholdingex('','',0);          //多头老仓
sh_new_month_t:=tsellholdingex('','',0);                                //空头近今仓
sh_new_month_y:=tsellholdingex('','',1)-tsellholdingex('','',0);        //空头老仓
new_month_kd_w:=tisremainex(1,'',stklabel);                             //未成交开多单
new_month_pd_w:=tisremainex(2,'',stklabel);                             //未成交开多单
new_month_kk_w:=tisremainex(3,'',stklabel);                             //未成交开空单
new_month_pk_w:=tisremainex(4,'',stklabel);                             //未成交开多单

new_month_jcc:=(bh_new_month_y+bh_new_month_t)-(sh_new_month_y+sh_new_month_t)+(new_month_kd_w-new_month_kk_w);   //实际账户净持仓(不含平仓未成交单)


//理论持仓与实际持仓的判断
if total_holding-new_month_jcc>0 and new_month_jcc>=0 then
   tbuy(1,total_holding-new_month_jcc,mkt,0,0,zh);   
      
if total_holding-new_month_jcc>0 and new_month_jcc<0 then  begin
   tsellshort(total_holding<0,total_holding-new_month_jcc,mkt,0,0,zh);
   if total_holding>=0 then begin
      tsellshort(1,new_month_jcc,mkt,0,0,zh);
      tbuy(total_holding>0,total_holding,mkt,0,0,zh);
      end
   end
      
if total_holding-new_month_jcc<0 and new_month_jcc<=0 then
   tbuyshort(1,abs(total_holding-new_month_jcc),mkt,0,0,zh);
      
if total_holding-new_month_jcc<0 and new_month_jcc>0 then begin      
   tsell(total_holding>0,abs(total_holding-new_month_jcc),mkt,0,0,zh);       
   if total_holding<=0 then begin
     tsell(1,new_month_jcc,mkt,0,0,zh);
     tbuyshort(total_holding<0,abs(total_holding),mkt,0,0,zh);
     end
   end       
金字塔提供一对一VIP专业技术指导服务,技术团队实时响应您的日常使用问题与策略编写。联系电话:021-20339086
回复

使用道具 举报

227

主题

881

帖子

881

积分

等级: 免费版

注册:
2022-4-2
曾用名:
 楼主| 发表于 2023-5-19 15:37 | 显示全部楼层
技术010 发表于 2023-5-19 14:29
参考如下范例,仅供参考:
a:stkindiex('','一箭穿心.cc0',0,21,3,15000);  //引用3分钟周期上的策略a的仓 ...

非常感谢
回复

使用道具 举报

227

主题

881

帖子

881

积分

等级: 免费版

注册:
2022-4-2
曾用名:
 楼主| 发表于 2023-5-19 15:57 | 显示全部楼层
技术010 发表于 2023-5-19 14:29
参考如下范例,仅供参考:
a:stkindiex('','一箭穿心.cc0',0,21,3,15000);  //引用3分钟周期上的策略a的仓 ...

a:stkindiex('','一箭穿心.cc0',0,21,3,10000);  //引用3分钟周期上的策略a的仓位。
b:stkindiex('','震荡反转.cc0',0,3,0,5000);  //引用15分钟周期上的策略b的仓位。
zh:'';
total_holding:=a+b;

这里账户未指定的话,是不是在后台程序化中设定多账户系数即可。另外前面的t_holding:是改成total_holding吧
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 微信登录

本版积分规则

手机版|小黑屋|上海金之塔信息技术有限公司 ( 沪ICP备13035422号 )

GMT+8, 2025-8-23 01:10 , Processed in 0.096766 second(s), 20 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表