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

标题: 对手价发单有点问题谁帮改一吓,,之前论坛上找到的 [打印本页]

作者: maxulun    时间: 2018-9-2 17:00:38     标题: 对手价发单有点问题谁帮改一吓,,之前论坛上找到的

Params
        Numeric WaitTime(10);        //预设等待时间,单位为秒,可调整
        Numeric ShiftUnit(3);        //下单价格偏移量,可调整
Vars
        Numeric Lots;
        Numeric NewPrice;
        Numeric TimeSeconds;
        Bool    Openning;
Begin
        If ( Q_Last == 0 || ( Date != Date[1] && High == Low ) )         Return;        //如果未开盘,则直接返回
        
        If ( GetGlobalVar(10)==InvalidNumric  )        SetGlobalVar(10,0);        //下单时间初始化
        
        TimeSeconds=Value(Left(TimeToString(CurrentTime),2))*3600                //记录系统当前时间,转化为秒数
                                +Value(Mid(TimeToString(CurrentTime),3,2))*60
                                +Value(Right(TimeToString(CurrentTime),2));
        
        If ( TimeSeconds-GetGlobalVar(10)<WaitTime )        Return;        //如果发单后等待时间小于WaitTime,则返回
        
        Openning = Q_Last > Q_LowLimit && Q_Last < Q_UpperLimit;        //停板情况下不允许建仓

        If ( A_TotalPosition==0 && Openning==true )
        {
                计算开仓手数Lots;
                                 
                If ( 满足开多仓条件 )
                {
                        NewPrice=Q_AskPrice+ShiftUnit*MinMove*PriceScale;        //计算开仓价格
                        A_SendOrder(Enum_Buy,Enum_Entry,Lots,NewPrice);
                        SetGlobalVar(10,TimeSeconds);                        //记录下单时间
                        Return;
                }
                                
                If ( 满足开空仓条件 )
                {
                        NewPrice=Q_BidPrice-ShiftUnit*MinMove*PriceScale;
                        A_SendOrder(Enum_Sell,Enum_Entry,Lots,NewPrice);
                        SetGlobalVar(10,TimeSeconds);
                }
                Return;
        }
               
        If ( A_BuyPosition>0 && 满足平多仓条件 )
        {
                NewPrice=Q_BidPrice-ShiftUnit*MinMove*PriceScale;
                A_SendOrder(Enum_Sell,Enum_Exit,A_BuyPosition,NewPrice);
                SetGlobalVar(10,TimeSeconds);
        }
                                
        If ( A_SellPosition>0 && 满足平空仓条件 )
        {
                NewPrice=Q_AskPrice+ShiftUnit*MinMove*PriceScale;
                A_SendOrder(Enum_Buy,Enum_Exit,A_SellPosition,NewPrice);
                SetGlobalVar(10,TimeSeconds);
        }
End





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