金字塔决策交易系统

 找回密码
 

微信登录

微信扫一扫,快速登录

搜索
查看: 3111|回复: 6

请教一下老师,如果把这个思路写成代码

[复制链接]

12

主题

58

帖子

58

积分

等级: 免费版

注册:
2022-9-6
曾用名:
发表于 2023-10-18 13:50 | 显示全部楼层 |阅读模式
尝试做T的后台交易:
一、9:26 检查持仓个股可卖股数 (假设为N)
二、9:27,集合竞价后,依次委托买入交易账号内持仓个股:   买入N股 ;
三、9:30后,若个股加仓后盈利超2%,发委托卖出该个股等额旧仓;
四、14:55分,加底仓后盈利没有触碰到2%时,卖出底仓;
五、9:30开始,查询持仓个股所属板块,对板块指数进行计算,板块指数下跌超3.9%时,卖出该个股。
六、查询个股买入成本价,当天该个股损达到或超过8%时,卖出旧仓,第二天卖出新仓。此后一个月内禁止该股票开仓。
七、查询上证指数,若上证指数下跌超2.3%时,清仓交易账号内所有可卖个股,第二天卖出所有新仓。此后10个交易日内禁止执行本策略。
八、所交易帐户亏损超2%时,清仓交易账号内所有可卖个股,第二天卖出所有新仓。此后5个交易日内禁止执行本策略。

回复

使用道具 举报

37

主题

1万

帖子

6万

积分

Rank: 8Rank: 8

等级: 超级版主

注册:
2021-5-18
曾用名:
wenarm
发表于 2023-10-18 14:12 | 显示全部楼层
2,其实就是根据可用持仓的数据量,买入今仓?
并且存在委托未成交的情况。这种会影响到后面的3这类的判断。

5,实现不了。获取不到所属板块以及对应的板块指数。
6、7、8,这种需要使用类似配置文件的方式处理,需要具备一定的维护能力。
金字塔提供一对一VIP专业技术指导服务,技术团队实时响应您的日常使用问题与策略编写。联系电话:021-20339086
回复

使用道具 举报

12

主题

58

帖子

58

积分

等级: 免费版

注册:
2022-9-6
曾用名:
 楼主| 发表于 2023-10-18 15:28 | 显示全部楼层
就是根据可用持仓的数据量,买入今仓,能否帮忙写一个大致的框架呢?本策略假设委托都能成交,不再寻求板块指数的计算了。6,7,8尽量帮忙想想怎么写,给个思路吧,风控方面想完善一下。
回复

使用道具 举报

37

主题

1万

帖子

6万

积分

Rank: 8Rank: 8

等级: 超级版主

注册:
2021-5-18
曾用名:
wenarm
发表于 2023-10-18 15:51 | 显示全部楼层
还有个问题,你这个逻辑有问题,9:25--9:30是撮合成交阶段,是不能委托交易的。
金字塔提供一对一VIP专业技术指导服务,技术团队实时响应您的日常使用问题与策略编写。联系电话:021-20339086
回复

使用道具 举报

12

主题

58

帖子

58

积分

等级: 免费版

注册:
2022-9-6
曾用名:
 楼主| 发表于 2023-10-18 15:53 | 显示全部楼层
哪就把这个委托时间改为9:30,其他的相关后续委托顺延到9:32
回复

使用道具 举报

37

主题

1万

帖子

6万

积分

Rank: 8Rank: 8

等级: 超级版主

注册:
2021-5-18
曾用名:
wenarm
发表于 2023-10-18 17:09 | 显示全部楼层
本帖最后由 技术006 于 2023-10-18 17:15 编辑

示例模板如下,其中第8条请自行实现。模板中没有考虑挂单未成的影响。整个模板只是提供了骨干逻辑处理,建议消化后进行选择性修改。希望能达到抛转引玉的效果。

注:你整个代码逻辑没有闭环,缺失从零持仓到持仓的条件。你可以自己补充完整。

模板中使用了配置文件,配置文件用于标记当前是否为昨天待平仓位(flag=1时),如果flag=日期,则触发禁止开仓状态。需要等两个交易日间隔大于指定值后,才会置0

[PEL] 复制代码
//获取可用数量
KY:TBUYHOLDINGEX('',STKLABEL,0);
//今仓数量
JC:TBUYHOLDINGEX('',STKLABEL,2)-TBUYHOLDING(0)-TBUYHOLDINGEX('',STKLABEL,3);

//读取配置标致,左平flag
flag1:GETINIFILE('D:\FLAG.INI','SETTING',STKLABEL&'_FLAG1');
SZZS_FLAG:GETINIFILE('D:\FLAG.INI','SETTING',STKLABEL&'SZZS_FLAG');
//合约间隔天数
if flag1>1 then begin
        jgts:TRADINGDATEDIFF( flag1, DATE);
        if jgts>=30 then flag1=0;
end

//上证指数间隔天数
if SZZS_FLAG>0 then begin
        SZZS_JGTS:TRADINGDATEDIFF( SZZS_FLAG, DATE);
        if SZZS_JGTS>=10 then SZZS_FLAG=0;
end

//根据可用买入股票数量
if DYNAINFO(207)>093000 and DYNAINFO(207)<093100 and KY>0 and JC=0 AND TISPRVREMAIN(1)=0 and flag1=0 and SZZS_FLAG=0  then BEGIN
        TBUY(1,KY,mkt);
END

FD:(DYNAINFO(7)-TAVGENTERPRICE)/TAVGENTERPRICE*100;

if DYNAINFO(207)>093100 and DYNAINFO(207)<093200 and KY>0 and JC=KY and FD>=2 then BEGIN
        TSELL(1,KY,mkt);
END

if DYNAINFO(207)>145500 and DYNAINFO(207)<145800 and KY>0 and JC=KY and FD<=2 then BEGIN
        TSELL(1,KY,mkt);
END

IF FD<=-8 or flag1=1 then  BEGIN

        TSELL(KY>0,KY,mkt);
        //当ZP_flag=1时,说明需要平昨天开的仓位
        if flag1=1 then 
                WRITEINIFILE('D:\FLAG.INI','SETTING',STKLABEL&'_FLAG1',DATE);
        else                 
                WRITEINIFILE('D:\FLAG.INI','SETTING',STKLABEL,1);
END


SZZS_CLOSE:CALLSTOCK('SH000001',vtCLOSE,6,0);
SZZS_ZS:CALLSTOCK('SH000001',vtCLOSE,6,-1);

IF (SZZS_CLOSE-SZZS_ZS)/SZZS_ZS*100< -2.3 OR SZZS_FLAG=1  then BEGIN
        TSELL(ky>0,KY,mkt);
        //SZZS_FLAG1=1时,说明需要平昨天开的仓位
        if SZZS_FLAG=1 then 
                WRITEINIFILE('D:\FLAG.INI','SETTING',STKLABEL&'SZZS_FLAG1',DATE);
        else                 
                WRITEINIFILE('D:\FLAG.INI','SETTING',STKLABEL&'SZZS_FLAG1',1);
END



金字塔提供一对一VIP专业技术指导服务,技术团队实时响应您的日常使用问题与策略编写。联系电话:021-20339086
回复

使用道具 举报

12

主题

58

帖子

58

积分

等级: 免费版

注册:
2022-9-6
曾用名:
 楼主| 发表于 2023-10-18 23:29 | 显示全部楼层
谢谢老师,辛苦了
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-8-7 22:24 , Processed in 0.100466 second(s), 21 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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