设为首页收藏本站

 找回密码
 注册
查看: 1073|回复: 1
打印 上一主题 下一主题

新手继续请教 [复制链接]

Rank: 3Rank: 3

精华
0
UID
257171
积分
133
帖子
99
主题
32
阅读权限
40
注册时间
2017-9-28
最后登录
2019-11-16
跳转到指定楼层
1#
发表于 2018-5-31 21:57:57 |只看该作者 |倒序浏览
本帖最后由 masterhdd 于 2018-5-31 22:00 编辑

版主,我都晕死了,就这简单的双均线,模拟账户,三秒周期上运行,有时候能正常开平仓,有时就变成哑巴聋子了,彻底没反应,也不开仓,也不平仓。。。。。。快救救俺吧。。。。。严重怀疑自己人品有问题了
Params
        Numeric FastLength(2);
        Numeric SlowLength(8);
        Numeric Lots (1);
        Numeric OffSet (8);//委托价格偏移
Vars
        NumericSeries AvgValue1;
        NumericSeries AvgValue2;
        Numeric TemB;//多头持仓
        Numeric TemS;//空头持仓

        Bool BPcond(False);
        bool SPcond(False);
        Bool BKcond(False);
        Bool SKcond(False);
       
        Numeric HasSP(0);//已平多仓标志
        Numeric HasBK (0);//已开多仓标志
       
        Numeric HasBP(0);//已平空仓标志
        Numeric HasSK (0);//已开空仓标志
       
Begin

        AvgValue1 = AverageFC(Close,FastLength);   
        AvgValue2 = AverageFC(Close,SlowLength);

        PlotNumeric("MA1",AvgValue1);
        PlotNumeric("MA2",AvgValue2);               
       
        // 集合竞价和小节休息过滤
        If(!CallAuctionFilter()) Return;
        if ( GetGlobalVar(0)==InvalidNumeric) //

{
HasSP = 0;
SetGlobalVar (0 ,HasSP);//
}ELse
{
HasSP = GetGlobalVar (0);//
}


if ( GetGlobalVar(2)==InvalidNumeric) //


{
HasBP = 0;
SetGlobalVar (2 ,HasBP);//
}ELse
{
HasBP = GetGlobalVar (2);//
}



If (GetGlobalVar(1)==InvalidNumeric)   //  
   
           {
             If(A_BuyPosition==0)
              {      
                SetGlobalVar(1,0);
              } else If(A_BuyPosition>0)               
               {
                SetGlobalVar(1,1);
                }
            }ELse
{
HasBK = GetGlobalVar (1);//
}


If (GetGlobalVar(3)==InvalidNumeric) //

                {
                  If(A_SellPosition==0)
            {
              SetGlobalVar(3,0);
                       
            } else If(A_SellPosition>0)
               {
                                SetGlobalVar(3,1);
               }  
                } ELse
{
HasSK = GetGlobalVar (3);//
}
       
        BPcond=CrossOver (AvgValue1[1] , AvgValue2[1]);//买平的条件
        SPcond=CrossUnder (AvgValue1[1] , AvgValue2[1]);//卖平的条件   
        BKcond=CrossOver (AvgValue1[1] , AvgValue2[1]);;//开多的条件 ,  
        SKcond=CrossUnder (AvgValue1[1] , AvgValue2[1]);//卖空的条件 ,  
       
       
        TemB = A_BuyPosition();//多头持仓
        TemS = A_SellPosition(); //空头持仓
       
       
       

       
        //开多
        If(BKcond &&HasBK==0 and TemB==0&&barstatus==2)   //  开多
        {
                A_SendOrder(Enum_buy,Enum_Entry,Lots,Q_AskPrice+OffSet*MinMove*PriceScale);//开多,
                //Buy(lots,(c+OffSet*MinMove*PriceScale));
                SetGlobalVar(0,0);//
                SetGlobalVar(1,1);//
               
        }

        //平多
        If(SPcond  && HasSP==0 and TemB>0 && barstatus==2 ) // || QC==True )  平多  
        {
                 A_SendOrder(Enum_Sell,Enum_Exit,TemB,Q_BidPrice-offSet*MinMove*PriceScale);//
                //Sell(lots,(c-offSet*MinMove*PriceScale));
                SetGlobalVar(0,1);//
                SetGlobalVar(1,0);//
       
        }
       
       
        //开空
               
                If(SKcond &&HasSK==0 and TemS==0&&barstatus==2 )
        {
                A_SendOrder(Enum_Sell,Enum_Entry,Lots,Q_BidPrice-OffSet*MinMove*PriceScale);
               
                SetGlobalVar(2,0);
                SetGlobalVar(3,1);
               
        }
        //平空
                If(BPcond &&HasBP==0 and TemS>0 && barstatus==2 )
        {
                A_SendOrder(Enum_buy,Enum_Exit,TemS,Q_AskPrice+OffSet*MinMove*PriceScale);//A_SendOrder开多,
               
                SetGlobalVar(2,1);//HasBP ==1,不允许再平空仓
                SetGlobalVar(3,0);//HasSK==0,允许开空仓
               
        }
       
               
       
       
        End



Rank: 10Rank: 10Rank: 10

精华
3
UID
5
积分
26584
帖子
12686
主题
49
阅读权限
200
注册时间
2007-7-20
最后登录
2021-11-3
2#
发表于 2018-6-1 09:24:39 |只看该作者
大致看了一下代码,也没有看出明显的问题啊。。
建议在代码条件中加上fileappend自己调试一下,各条件是否满足?条件满足是否有发单,有报错提示等信息。再进一步排查。
如果是在非电信网络下使用的模拟帐户来测试的,也要看看模拟的成交回报是否及?因为你的周期比较小,如果是成交回报慢的原因 ,也可能导致帐户函数的判断持仓条件不满足而不发单 啊。

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

bottom

静态版|手机版|联系我们|交易开拓者 ( 粤ICP备07044698   

GMT+8, 2024-4-27 22:58

Powered by Discuz! X2 LicensedChrome插件扩展

© 2011-2012 交易开拓者 Inc.

回顶部