您现在的位置:程序化交易>> 期货公式>> 交易开拓者(TB)>> 开拓者知识>>正文内容

TB实盘出现问题:不满足平仓条件却平仓 [开拓者 TB]

  • 咨询内容: 请教一下TB软件客服:
    一、我的代码如下:
    // 平空仓
    Con_ExitK = Q_Last> OpenD(0)+1*(HighD(1)-LowD(1));
        If(A_SellPosition>0 And HasSendOrderK==11 And Con_ExitK)
            {   
            A_SendOrder(Enum_Buy,Enum_Exit,A_SellPosition,Q_AskPrice+minpoint);   //平空单
            SetTBProfileString("DualThrust_Ni_WAR","HasSendOrderK",Text(10));
            myExitPrice=Q_AskPrice;
    FileAppend("c:\DualThrust_Ni_WAR.log","Date = "+Text(Date)+"Time = "+Text(Time)+"currentTime = "+Text(currentTime) +"平空仓 = "+Text(myExitPrice));
                     PlotString("平空仓", "平空仓",Low);
            }
    //
       说明:我开空仓时用下列 语句将HasSendOrderK的值设为11,并存入数据库
    SetTBProfileString("DualThrust_Ni_WAR","HasSendOrderK",Text(11));
            我平空仓时用下列 语句将HasSendOrderK的值设为10,并存入数据库
    SetTBProfileString("DualThrust_Ni_WAR","HasSendOrderK",Text(10));
    二、现在的问题
    (1)现在我有一手空仓,没有多仓,HasSendOrderK==11,当条件Con_ExitK = Q_Last> OpenD(0)+1*(HighD(1)-LowD(1))还没满足时,就执行if中的语句,执行结果为(c:\DualThrust_Ni_WAR.log中的显示):
    Date = 20160223Time = 0.093currentTime = 0.1平空仓 = N/A
    Date = 20160223Time = 0.11currentTime = 0.133001平空仓 = N/A
    HasSendOrderK变为10
    但却没有真正平仓;于是我将数据库中的HasSendOrderK改为11,重新加载程序,现象依旧。
        (2)当我将if中的条件改为If(A_BuyPosition==0 and A_SellPosition>0 And HasSendOrderK==11 And Con_ExitK) 时,将数据库中的HasSendOrderK改为11,重新加载程序时,也是执行if中的语句,执行结果为(c:\DualThrust_Ni_WAR.log中的显示):
    Date = 20160223Time = 0.093currentTime = 0.1平空仓 = 68320
    Date = 20160223Time = 0.11currentTime = 0.133001平空仓 = 68320
    HasSendOrderK变为10
    但却真正平仓了;
    三、说明
        我用的是实盘,不是模拟盘。怎么回事呢到底?

     

  • TB技术人员: 建议先弄图表函数吧,A函数要求思路严谨,且不可回测。

     

  • TB客服: 我历史回测回测时用的是图表函数,但实盘时最好还是用A函数,因为要取实时的资金状况等等。

     

  • 网友回复: 本帖最后由 小米 于 2016-2-25 09:21 编辑

    看到您的委托指令也有写日志的,建议您在日志内容里加上输出的每 一个条件值 ,这样就清楚到底有没有满足条件,以及是哪一部分上与您肉眼观察到的不同了。

 

有思路,想编写各种指标公式,程序化交易模型,选股公式,预警公式的朋友

可联系技术人员 QQ: 511411198  点击这里给我发消息进行 有偿 编写!不贵!点击查看价格!


【字体: 】【打印文章】【查看评论

相关文章

    没有相关内容