开拓者期货期权程序化系统交易论坛

标题: 总是提示出错 [打印本页]

作者: masterhdd    时间: 2018-4-24 14:58:40     标题: 总是提示出错

Params
        Numeric FastLength(5);
        Numeric SlowLength(20);
Vars
        NumericSeries AvgValue1;
        NumericSeries AvgValue2;
        Numeric tempos;//多头持仓
       
Begin
       
        AvgValue1 = AverageFC(Close,FastLength);
        AvgValue2 = AverageFC(Close,SlowLength);

        PlotNumeric("MA1",AvgValue1);
        PlotNumeric("MA2",AvgValue2);               
       
        // 集合竞价和小节休息过滤
        If(!CallAuctionFilter()) Return;
       
        temPos = A_buyPosition();
       
        If(CrossUnder (AvgValue1[1] , AvgValue2[1]) and tempos>0)
        {
                A_SendOrder(Enum_sell,Enum_Exit,temPos,Q_AskPrice-5);
        }
       
End
//手工开多仓后,可以顺利平掉,但是会同时提示持仓不足,过一会儿,在没有持仓的情况下,还会反复提示说
你持仓不足。
作者: masterhdd    时间: 2018-4-24 15:29:09

已解决,是因为用交易师开仓自带了止损止盈导致的。
作者: 小米    时间: 2018-4-24 15:45:24

这个写法是有问题的。。反复提示持仓不足是他确实在发平仓动作,与交易师的设置无关了。
1,a_sendorder的使用只能限制在barstatus==2下面,当前公式里没有此限制 ,那么读出来的tempos在历史里以及没有启动自动交易前都是无效值的,该无效值 是一个大于0的值 ,自然是可以满足此条件的。
2,公式里没有使用全局变量来控制发单 的次数,就算是在正常的barstatus==2的状态下判断了有效的持仓,在第一次委托出去后且没有成交回报到达本地前,是有可能再次判断仍有持仓于是再次发单的。

A_xxx函数的使用没有那么直观,学习起来,控制起来比一般的buy,sell指令更为复杂,要求有更多的编程经验。建议先系统学习TB的公式编写后再进行策略的开发。
作者: masterhdd    时间: 2018-4-24 23:28:42

小米 发表于 2018-4-24 15:45
这个写法是有问题的。。反复提示持仓不足是他确实在发平仓动作,与交易师的设置无关了。
1,a_sendorder的 ...

版主说得甚是,我还得慢慢从头学习才对。




欢迎光临 开拓者期货期权程序化系统交易论坛 (http://bbs.tb18.net/) Powered by Discuz! X2