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

【提问】发单时是否必须要使用A_SendOrder函数,望赐教 [开拓者 TB]

  • 咨询内容: 本帖最后由 cicikml 于 2016-3-18 21:49 编辑

    先向老师和高手们问好!
    TB帮助我们在程序化交易路上越走越真实,感谢你们的辛勤付出!

    我看了一些帖子之后,对自己的模型做了修改,但是依然无法解答困惑,所以在论坛请教各位。

    我的策略在回测的时候,使用的是:

    Buy(lots,Open);
    SellShort(lots,Open);
    Sell(lots,Open);
    BuyToCover(lots,Open);

    这种命令。非常简单清晰。

    在实盘交易的时候,是不是要替换成:


    //为过滤一些小的不必要的波动,定义了一个Filter函数
            Filter = (Average(Close,ShortLength)-Average(Close,LongLength))*100/Average(Close,LongLength);

    // 开多仓
            If(MarketPosition <>1 &&  GetGlobalVar(1)==0 && AvgValue1[1] > AvgValue2[1] && Filter > Upline)  
            {
            Buyenterprice = Q_AskPrice + Offprice; //得出开多仓价格+滑点
            A_SendOrder(Enum_Buy,Enum_Entry,lots,Buyenterprice);//开多单
            }
           
    //开空仓
            If(MarketPosition <>-1 && GetGlobalVar(0)==0 && AvgValue1[1] < AvgValue2[1] && Filter < Downline)
            {
            Sellenterprice = Q_BidPrice - Offprice; //得出开空仓价格+滑点
            A_SendOrder(Enum_Sell,Enum_Entry,lots,Sellenterprice);//开空单
            }


    //平多仓
            If (MarketPosition == 1 && GetGlobalVar(0)==1 && AvgValue1[1] < AvgValue2[1])
            {
            Sellenterprice = Q_BidPrice - Offprice; //得出平多仓价格+滑点
            A_SendOrder(Enum_Sell,Enum_Exit,lots,Sellenterprice);//平多单
            }

    //平空仓
            If (MarketPosition == -1 && GetGlobalVar(1)==1 && AvgValue1[1] > AvgValue2[1])
            {
            Buyenterprice = Q_AskPrice + Offprice; //得出开空仓价格+滑点
            A_SendOrder(Enum_Buy,Enum_Exit,lots,Buyenterprice);//平空单
            }

    有3个问题求教:

    1、我已经换成了下面的写法,但是目前系统无法发出任何交易信号,是不是我的发单指令写错了?
    2、Filter里,是不是应该写Close[1],而不是close?这样是不是意味着我使用了未来数据?
    3、我对GetGlobalVar(1)的具体含义,也比较模糊,这是从别人代码里看到的,请老师指导,我这样写是否正确?


    一个编程基础较弱的量化爱好者,正在慢慢开启自己的交易历程,恳请大家帮助,谢谢。

     

  • TB技术人员: 我把代码中,所有的
    GetGlobalVar(1)==1

    GetGlobalVar(0)==1
    换成了
    BarStatus == 0

    请问这样可以吗?我是从TB的用户手册代码中找到的,这样是不是可以避免信号闪烁?

     

  • TB客服: 1,当前的条件下,建议还是使用buy,sellshort等指令进行委托。至少这些条件下是不可以使用a_sendorder的。
    2,如果是使用buy,sellshort指令。。那filter的定义自然是使用close[1]更稳定些。
    3,在使用buy,sellshort时,就不能这么使用全局变量了。

    首先,buy,sellshort是可以用于实盘交易的,当前您的思路下是根本没有必要换成a_sendorder来发单 。。。
    其次,markeposition等信号函数与a_sendorder是不能这样混用。所以你的公式没有信号或是委托也符合当前公式的表现。。
    建议还是系统地学习TB的学法后,再来考虑写策略。如果不是对帐户进行控制,不建议使用a_xxxx类的函数。

     

  • 网友回复:
    小米 发表于 2016-3-21 09:50
    1,当前的条件下,建议还是使用buy,sellshort等指令进行委托。至少这些条件下是不可以使用a_sendorder的。
    ...

    谢谢版主,我调整代码,继续学习

 

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

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


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

相关文章

    没有相关内容