金字塔决策交易系统

 找回密码
 

微信登录

微信扫一扫,快速登录

搜索
查看: 1495|回复: 3

模拟盘出现奇怪问题

[复制链接]

5

主题

13

帖子

13

积分

Rank: 1

等级: 新手上路

注册:
2023-4-14
曾用名:
发表于 2023-6-28 07:44 | 显示全部楼层 |阅读模式
如下图,模拟盘开单正常,但是突然出现个6.1日的日志。
bar时间的计算如下: dts = (context.now).strftime("%Y-%m-%d %H:%M:%S");
这句日志是在handle_bar中触发。
6月27日的模拟盘,为何会出现6月1日的一条日志?还是数据获取不够的日志。
开单情况如下
部分代码如下:

def handle_bar(context):
    context.lyportfolio=get_portfolio (context.lystockcode,2);#扣减未成交
    context.lyportfoliowcj=get_portfolio (context.lystockcode,2,calc=False);#不扣减未成交品种
    #回测时使用,在回测最后一天如果有未平仓单就清掉
    if context.run_info.run_type =="backtest":
        dtnow = context.now;
        if dtnow.year == context.run_info.end_date.year and dtnow.month == context.run_info.end_date.month and dtnow.day == context.run_info.end_date.day :
            #WriteTxtLog(context,"还剩{0}分钟收盘,将进行强制清仓动作,此时不允许开单".format(60-dtnow.minute));
            context.ordertype ="回测结束平仓";
            ClearAllPortfolio(context);
            return;
    else:#非回测状态下才需要执行
        getmainstock(context);#获取主力合约

    daysdif =  getdaysdif(context);#获取距离交割日的天数
    if daysdif <=5:#距离交割日不到3个交易日必须清仓且不开新仓
        context.ordertype ="交割平仓";
        ClearAllPortfolio(context);

    #context.lyportfolio=get_portfolio (context.lystockcode,2);#扣减未成交
    #context.lyportfoliowcj=get_portfolio (context.lystockcode,2,calc=False);#不扣减未成交品种
    #获取当前账户的可用资金,根据此可计算出开仓手数。
    context.lyaccountcash= get_account(19);
    #获取收盘价及开盘价的数组   
    dataopen = history_bars(context.lystockcode,context.k_length+3,context.lytradeperiod, 'open',True,False,True);
    dataclose = history_bars(context.lystockcode,context.k_length+3,context.lytradeperiod, 'close',True,False,True);
    datahigh = history_bars(context.lystockcode,context.k_length+3,context.lytradeperiod, 'high',True,False,True);
    datalow = history_bars(context.lystockcode, context.k_length+3,context.lytradeperiod, 'low',True,False,True);

    dataamaclose = history_bars(context.lystockcode,150,context.lytradeperiod, 'close',True,False,True);

    #dataselfclose = history_bars(context.lystockcode, context.ma_period+1,context.lytradeperiod, 'close',True,False,True);

            #判断获取的数据量,如果数据量都不满足需要的最低Bar,就返回不执行
    if len(dataclose) < context.k_length or len(dataopen) < context.k_length or len(datahigh) < context.k_length or len(datalow) < context.k_length or len(dataamaclose) < 150 :
        if context.run_info.run_type !="backtest":
            WriteTxtLog(context,"当前k线数量不足,无法计算满足条件的均线值,请等待...");
        return;
  #获取主力合约代码
def getmainstock(context):
    nowlystockcode = get_dynainf (context.lystockcode, 210);#获取当前合约对应的主力合约代码
    if nowlystockcode !=  context.lystockcode:#主力合约已更换
        if context.lyportfoliowcj.buy_quantity == 0 and context.lyportfoliowcj.sell_quantity == 0: #没有持仓时才能切换到新合约
            WriteTxtLog(context,"切换合约:上一个合约{0},新的合约{1}".format(str(context.lystockcode),str(nowlystockcode)));
            context.lystockcode = nowlystockcode;
            context.lyportfolio=get_portfolio (context.lystockcode,2);#扣减未成交
            context.lyportfoliowcj=get_portfolio (context.lystockcode,2,calc=False);#不扣减未成交品种
        else:
            WriteTxtLog(context,"目前有持仓未平,无法切换新合约,多仓{0},空仓{1}".format(str(context.lyportfoliowcj.buy_quantity),str(strcontext.lyportfoliowcj.sell_quantity)));


#计算距离交割日的时间
def getdaysdif(context):
    if context.run_info.run_type =="backtest":
        return 100;
    jgdate =  get_dynainf (context.lystockcode, 226);#获取当前合约对应的交割日期
    return int(jgdate/60/60/24);  

截图202306280742461837.png
截图202306280741166523.png
截图202306280740037847.png
回复

使用道具 举报

34

主题

9006

帖子

5万

积分

Rank: 8Rank: 8

等级: 超级版主

注册:
2021-5-18
曾用名:
wenarm
发表于 2023-6-28 12:53 | 显示全部楼层
大概率是本地数据不全造成的。每天做好数据补充或者收盘。
金字塔提供一对一VIP专业技术指导服务,技术团队实时响应您的日常使用问题与策略编写。联系电话:021-20339086
回复

使用道具 举报

5

主题

13

帖子

13

积分

Rank: 1

等级: 新手上路

注册:
2023-4-14
曾用名:
 楼主| 发表于 2023-7-3 21:40 来自手机 | 显示全部楼层
技术006 发表于 2023-6-28 12:53
大概率是本地数据不全造成的。每天做好数据补充或者收盘。

又测试了几天,还是这样啊,我是全天24小时开着交易的品种的,数据不应该不全啊,况且回测都是正常。现在7月3号了,还是每天都会跑出来6.1日那个错误,到底哪里的问题呢???
回复

使用道具 举报

34

主题

9006

帖子

5万

积分

Rank: 8Rank: 8

等级: 超级版主

注册:
2021-5-18
曾用名:
wenarm
发表于 2023-7-4 08:42 | 显示全部楼层
本帖最后由 技术006 于 2023-7-4 08:52 编辑

自己显示牌上右键数据随机查看下相关的品种的基础周期数据。正常情况下,数据要每天补充或者每天收盘的
金字塔提供一对一VIP专业技术指导服务,技术团队实时响应您的日常使用问题与策略编写。联系电话:021-20339086
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-11-16 15:32 , Processed in 0.242949 second(s), 25 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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