金字塔决策交易系统

 找回密码
 

微信登录

微信扫一扫,快速登录

搜索
查看: 1830|回复: 5

多账户模拟股票交易

[复制链接]

37

主题

74

帖子

74

积分

等级: 免费版

注册:
2023-1-4
曾用名:
发表于 2024-2-29 11:06 | 显示全部楼层 |阅读模式
//定义交易标底
VARIABLE:ZH13980404448[20]='12345678';
VARIABLE:ZH18382017072[20]='12345678';
VARIABLE:ZH13541041639[20]='12345678';
VARIABLE:ZH18981774579[20]='12345678';

//定义标底名称
VARIABLE:JY4448=0;
VARIABLE:JY7072=0;
VARIABLE:JY1639=0;
VARIABLE:JY4579=0;

//账户资金
资金13980404448:=(TACCOUNT2(6,'13980404448')-19713702.47)*0.98;
资金18382017072:=(TACCOUNT2(6,'18382017072')-60174.74)*0.98;
资金13541041639:=(TACCOUNT2(6,'13541041639')-64990.24)*0.98;
资金18981774579:=(TACCOUNT2(6,'18981774579')-36790.29)*0.98;

//持仓计算
应持仓量13980404448:=FLOOR(资金13980404448/20/DYNAINFO2(7,STKLABEL)/100)*100;
已持仓量13980404448:=TBUYHOLDINGEX('13980404448',STKLABEL,2);
应补仓量13980404448:=应持仓量13980404448-已持仓量13980404448;
应减仓量13980404448:=已持仓量13980404448-应持仓量13980404448;

应持仓量18382017072:=FLOOR(资金18382017072/20/DYNAINFO2(7,STKLABEL)/100)*100;
已持仓量18382017072:=TBUYHOLDINGEX('18382017072',STKLABEL,2);
应补仓量18382017072:=应持仓量18382017072-已持仓量18382017072;
应减仓量18382017072:=已持仓量18382017072-应持仓量18382017072;

应持仓量13541041639:=FLOOR(资金13541041639/20/DYNAINFO2(7,STKLABEL)/100)*100;
已持仓量13541041639:=TBUYHOLDINGEX('13541041639',STKLABEL,2);
应补仓量13541041639:=应持仓量13541041639-已持仓量13541041639;
应减仓量13541041639:=已持仓量13541041639-应持仓量13541041639;

应持仓量18981774579:=FLOOR(资金18981774579/20/DYNAINFO2(7,STKLABEL)/100)*100;
已持仓量18981774579:=TBUYHOLDINGEX('18981774579',STKLABEL,2);
应补仓量18981774579:=应持仓量18981774579-已持仓量18981774579;
应减仓量18981774579:=已持仓量18981774579-应持仓量18981774579;




//交易标底。将标底按格式黏贴下面

//ZH13980404448多头04
ZH13980404448[1]:='SH516620';
ZH13980404448[2]:='SZ159869';
ZH13980404448[3]:='SH562500';
ZH13980404448[4]:='SH515250';
ZH13980404448[5]:='SZ159663';
ZH13980404448[6]:='SZ159667';
ZH13980404448[7]:='SH516110';
ZH13980404448[8]:='SH512670';
ZH13980404448[9]:='SH562800';
ZH13980404448[10]:='SZ159638';
ZH13980404448[11]:='SH515400';
ZH13980404448[12]:='SH513360';
ZH13980404448[13]:='SH516780';
ZH13980404448[14]:='SH512660';
ZH13980404448[15]:='SZ159755';
ZH13980404448[16]:='SZ159997';
ZH13980404448[17]:='SZ159996';
ZH13980404448[18]:='SH512170';
ZH13980404448[19]:='SZ159819';
ZH13980404448[20]:='SZ159992';


//ZH18382017072多头07
ZH18382017072[1]:='SH562500';
ZH18382017072[2]:='SH515250';
ZH18382017072[3]:='SZ159663';
ZH18382017072[4]:='SZ159667';
ZH18382017072[5]:='SH516110';
ZH18382017072[6]:='SH512670';
ZH18382017072[7]:='SZ159638';
ZH18382017072[8]:='SH515400';
ZH18382017072[9]:='SH513360';
ZH18382017072[10]:='SH516780';
ZH18382017072[11]:='SH512660';
ZH18382017072[12]:='SZ159755';
ZH18382017072[13]:='SZ159997';
ZH18382017072[14]:='SZ159996';
ZH18382017072[15]:='SH512170';
ZH18382017072[16]:='SZ159819';
ZH18382017072[17]:='SZ159992';
ZH18382017072[18]:='SZ159546';
ZH18382017072[19]:='SH516510';
ZH18382017072[20]:='SH512480';


//ZH13541041639多头10
ZH13541041639[1]:='SH562500';
ZH13541041639[2]:='SH515250';
ZH13541041639[3]:='SZ159663';
ZH13541041639[4]:='SZ159667';
ZH13541041639[5]:='SH516110';
ZH13541041639[6]:='SH512670';
ZH13541041639[7]:='SZ159638';
ZH13541041639[8]:='SH515400';
ZH13541041639[9]:='SH513360';
ZH13541041639[10]:='SH516780';
ZH13541041639[11]:='SH512660';
ZH13541041639[12]:='SZ159996';
ZH13541041639[13]:='SH512170';
ZH13541041639[14]:='SZ159819';
ZH13541041639[15]:='SZ159992';
ZH13541041639[16]:='SZ159546';
ZH13541041639[17]:='SH516510';
ZH13541041639[18]:='SH512480';
ZH13541041639[19]:='SZ159995';
ZH13541041639[20]:='SH512720';


//ZH18981774579多头20
ZH18981774579[1]:='SZ159663';
ZH18981774579[2]:='SZ159667';
ZH18981774579[3]:='SH562500';
ZH18981774579[4]:='SH513360';
ZH18981774579[5]:='SZ159996';
ZH18981774579[6]:='SH515250';
ZH18981774579[7]:='SH515400';
ZH18981774579[8]:='SH516110';
ZH18981774579[9]:='SH512170';
ZH18981774579[10]:='SZ159819';
ZH18981774579[11]:='SZ159992';
ZH18981774579[12]:='SZ159546';
ZH18981774579[13]:='SH516510';
ZH18981774579[14]:='SZ159638';
ZH18981774579[15]:='SH512480';
ZH18981774579[16]:='SH512670';
ZH18981774579[17]:='SH516780';
ZH18981774579[18]:='SZ159995';
ZH18981774579[19]:='SH512720';
ZH18981774579[20]:='SH512660';





//选择交易标底,调整仓位
FOR I=1 TO 20 DO
BEGIN
JY4448:=0;
    IF STRCMP(ZH13980404448[I],MARKETLABEL&STKLABEL)=0 THEN BEGIN
       JY4448:=1;
//        MSGOUT(1,STKLABEL&' 应持仓量13980404448='&NUMTOSTR(应持仓量13980404448,0)&' 已持仓量13980404448='&NUMTOSTR(已持仓量13980404448,0));
        TBUY(应持仓量13980404448>已持仓量13980404448,应补仓量13980404448,MKT,0,0,'13980404448',STKLABEL);
        TSELL(应持仓量13980404448<已持仓量13980404448,应减仓量13980404448,MKT,0,0,'13980404448',STKLABEL);
    END
END

//非交易标底,平仓
TSELL(JY4448=0 AND 已持仓量13980404448>0,已持仓量13980404448,MKT,0,0,'13980404448',STKLABEL);

//选择交易标底,调整仓位
FOR I=1 TO 20 DO
BEGIN
JY7072:=0;
    IF STRCMP(ZH18382017072[I],MARKETLABEL&STKLABEL)=0 THEN BEGIN
        JY7072:=1;
//        MSGOUT(1,STKLABEL&' 应持仓量18382017072='&NUMTOSTR(应持仓量18382017072,0)&' 已持仓量18382017072='&NUMTOSTR(已持仓量18382017072,0));
        TBUY(应持仓量18382017072>已持仓量18382017072,应补仓量18382017072,MKT,0,0,'18382017072',STKLABEL);
        TSELL(应持仓量18382017072<已持仓量18382017072,应减仓量18382017072,MKT,0,0,'18382017072',STKLABEL);
    END
END

//非交易标底,平仓
TSELL(JY7072=0 AND 已持仓量18382017072>0,已持仓量18382017072,MKT,0,0,'18382017072',STKLABEL);

//选择交易标底,调整仓位
FOR I=1 TO 20 DO
BEGIN
JY1639:=0;
    IF STRCMP(ZH13541041639[I],MARKETLABEL&STKLABEL)=0 THEN BEGIN
        JY1639:=1;
//        MSGOUT(1,STKLABEL&' 应持仓量13541041639='&NUMTOSTR(应持仓量13541041639,0)&' 已持仓量13541041639='&NUMTOSTR(已持仓量13541041639,0));
        TBUY(应持仓量13541041639>已持仓量13541041639,应补仓量13541041639,MKT,0,0,'13541041639',STKLABEL);
        TSELL(应持仓量13541041639<已持仓量13541041639,应减仓量13541041639,MKT,0,0,'13541041639',STKLABEL);
    END
END

//非交易标底,平仓
TSELL(JY1639=0 AND 已持仓量13541041639>0,已持仓量13541041639,MKT,0,0,'13541041639',STKLABEL);

//选择交易标底,调整仓位
FOR I=1 TO 20 DO
BEGIN
JY4579:=0;
    IF STRCMP(ZH18981774579[I],MARKETLABEL&STKLABEL)=0 THEN BEGIN
        JY4579:=1;
//        MSGOUT(1,STKLABEL&' 应持仓量18981774579='&NUMTOSTR(应持仓量18981774579,0)&' 已持仓量='&NUMTOSTR(已持仓量18981774579,0));
        TBUY(应持仓量18981774579>已持仓量18981774579,应补仓量18981774579,MKT,0,0,'18981774579',STKLABEL);
        TSELL(应持仓量18981774579<已持仓量18981774579,应减仓量18981774579,MKT,0,0,'18981774579',STKLABEL);
    END
END

//非交易标底,平仓
TSELL(JY4579=0 AND 已持仓量18981774579>0,已持仓量18981774579,MKT,0,0,'18981774579',STKLABEL);


//结束


//预期目标:在不同账户交易相应股票(数组代码), 每只股票的交易量为总资金的1/20;已经有仓位的股票调整仓位,没有列举的股票全部平仓。
//问题:1. 有时列举的股票不能完全交易;2. 似乎是所有股票完全平仓后再购买,而不是调整仓位,这样增加了交易费用

回复

使用道具 举报

37

主题

74

帖子

74

积分

等级: 免费版

注册:
2023-1-4
曾用名:
 楼主| 发表于 2024-2-29 11:07 | 显示全部楼层
敬请大侠指教
回复

使用道具 举报

0

主题

1万

帖子

1万

积分

Rank: 8Rank: 8

等级: 超级版主

注册:
2021-5-18
曾用名:
gxx978
发表于 2024-2-29 11:21 | 显示全部楼层
1、在for循环中,每次运算时一条交易语句只会触发一次,需要后面加上allowrepeat,允许重复下单才可以。
2、那你只能输出调试你的代码,看应持、买持是多少了,通过输出来优化你的策略结构了,这个单看代码是无法分析出原因的。
3、另外你的代码为什么一定要写成这种很复杂的循环结构呢,你可以直接在后台上监控你需要交易的品种,进行持仓判断啊。而且你多账户的话也可以拆分开来写,没必要什么都写在一个策略中,增加你策略的风险度和维护成本的。
金字塔提供一对一VIP专业技术指导服务,技术团队实时响应您的日常使用问题与策略编写。联系电话:021-20339086
回复

使用道具 举报

37

主题

74

帖子

74

积分

等级: 免费版

注册:
2023-1-4
曾用名:
 楼主| 发表于 2024-2-29 11:29 | 显示全部楼层
不同账户品种不同,在一个金字塔账户下,代码如何拆分?谢谢!
回复

使用道具 举报

37

主题

1万

帖子

6万

积分

Rank: 8Rank: 8

等级: 超级版主

注册:
2021-5-18
曾用名:
wenarm
发表于 2024-2-29 12:59 | 显示全部楼层
即每个策略分别对应一个账户。每个策略只要创建预警时,添加需要监控交易的品种即可
金字塔提供一对一VIP专业技术指导服务,技术团队实时响应您的日常使用问题与策略编写。联系电话:021-20339086
回复

使用道具 举报

0

主题

1万

帖子

1万

积分

Rank: 8Rank: 8

等级: 超级版主

注册:
2021-5-18
曾用名:
gxx978
发表于 2024-2-29 13:07 | 显示全部楼层
你监控的是什么品种啊,stklabel是指当前品种,你这使用for循环遍历你的数组,你这下单,应该也是要下单到指定品种吧,应该是这个ZH18382017072[I],而且后面要加allowrepeat。代码分拆要从整体考虑的,你这种结构理论上是可以,但是遇到问题只能加debugfile来跟踪排查了。
截图202402291306054354.png
金字塔提供一对一VIP专业技术指导服务,技术团队实时响应您的日常使用问题与策略编写。联系电话:021-20339086
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-8-17 23:29 , Processed in 0.077275 second(s), 24 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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