开仓后为何还会重复开仓?是A_SendOrder的语法问题吗?
2021-05-11 15:27

Params
    Numeric AfStep( 0.02);
    Numeric AfLimit( 0.2 ) ;
    Numeric timeExit(0.1455);
    Numeric timeInto(0.0900);
    Numeric a(0.006);
    Numeric initcapital(100);    //单位:万
    Numeric moneyrate(80);         //资金使用比例:单位%    
    Numeric money(100);             //固定市值开仓:单位万 
Vars
    Numeric oParCl( 0 ); 
    Numeric oParOp( 0 );
    Numeric oPosition( 0 );
    Numeric oTransition( 0 );
    Series<Numeric> sar1( 0 );
    Series<Numeric> ParCl( 0 );
    Series<Numeric> CC( 0 );

    Numeric lots(0);        //下单手数   


Events
    OnInit()
    {
        SetInitCapital(initcapital*10000);    //设定初始资金
        SetMarginRate(0.1);                    //设定保证金比例
        SetBeginBarMaxCount(1);
           SubscribeBar("rb2110.SHFE","3m",20210501);     
    }
    OnBar(ArrayRef<Integer> indexs)
    {
        Range[0:DataSourceSize() - 1]
        {
            data1.ParabolicSAR( AfStep, AfLimit, oParCl, oParOp, oPosition, oTransition ) ;
            PlotNumeric( "ParCl" , data1.oParCl) ;
            ParCl = data1.oParCl;
            sar1 = data1.ParCl[1];
            CC = data1.Close[1];
              lots=IntPart(A_CurrentEquity*0.7/(myprice*contractunit*BigPointValue*0.1)); //计算开仓手数
            If(A_FreeMargin == A_CurrentEquity)
            {

             If( CC > sar1  And Time < timeExit And Time >= timeInto)                    
              {
                 A_SendOrder(Enum_Buy,Enum_Entry,lots,MIN(Close*1.01,Q_AskPrice));
              }

            }
            If(A_TotalPosition == 1)
            {
             If(CC < sar1 || Time > timeExit)            
              {
                 A_SendOrder(Enum_Sell,Enum_Exit,A_BuyPosition(),MAX(Close*0.99,Q_BidPrice));
              }
            }

            }
            
        }

评论区
gtja83604693

非常感谢专业指导!

2021-05-13 10:10
gtja83604693

运行机制在哪里可以了解?我只看到帮助,但依然无法解决问题,在有持仓的条件下也居然开仓,实在不懂。谢谢

2021-05-13 08:14
顶部