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

还是不发单啊.,再一次请管理员与版主进来看一看 [开拓者 TB]

  • 咨询内容: 本帖最后由 xiaosong 于 2013-7-25 08:31 编辑

    它就是不发单了,就是不发单...


    Begin
        //if(BarStatus==2 && Time==0.090000 && CurrentTime<0.090000) Return; // 集合竞价过滤
        conEntryReady=CurrentTime*100 >=tradBegin and CurrentTime*100<tradEnd and Q_LowerLimit>20*MinMove*PriceScale AND Q_UpperLimit-C>20*MinMove*PriceScale;//不靠近涨跌停 //// 开仓时限
         If(BarStatus == 0)
        {
            DeleteOrderTickCounter = 9999;
            HasSendOrder = 0;
            SetGlobalVar(0,DeleteOrderTickCounter);
            SetGlobalVar(1,HasSendOrder);
        }Else
        {
            DeleteOrderTickCounter = GetGlobalVar(0);
            HasSendOrder = GetGlobalVar(1);
        }
    。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。
    。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。
    。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。(这里写的运算,如:先算均线,10日,5日,然后,在下面真接写表达式,如满足了,就发单)
        If(conEntryReady and BarStatus == 2 and HasSendOrder == 0)
        {
            If(Max(开多信号  and a_buyposition==0 and a_sellposition==0 ) // 开多信号
            {
                A_SendOrder(Enum_Buy,Enum_Entry,Lots,Q_AskPrice()+N*MinMove*PriceScale);//发送委托单开多仓一手
                HasSendOrder = 1;
                SetGlobalVar(1,HasSendOrder);
                Return;
            }
            If(Min(开空信号 and a_buyposition==0 and a_sellposition==0 ) // 开空信号
            {   
                A_SendOrder(Enum_Sell,Enum_Entry,Lots,Q_BidPrice()-N*MinMove*PriceScale); //发送委托单开空仓一手
            HasSendOrder = 1;
                SetGlobalVar(1,HasSendOrder);
                Return;
            }
         }
       
        If(conEntryReady and BarStatus == 2 && HasSendOrder == 1)
        {   if(平多信号  and a_buyposition>0)  // 平多信号 满足要求下平多
             {
                A_SendOrder(Enum_Sell,Enum_ExitToday, A_BuyPosition(),Q_BidPrice()-N*MinMove*PriceScale);
                HasSendOrder = 0;
                SetGlobalVar(1,HasSendOrder);
                Return;
             }
            if(平多信号 and a_buyposition>0) // 平多信号 止损
            {
                A_SendOrder(Enum_Sell,Enum_ExitToday, A_BuyPosition(),Q_BidPrice()-N*MinMove*PriceScale);
                HasSendOrder = 0;
                SetGlobalVar(1,HasSendOrder);
                Return;
             }
            if( 平空信号 and  A_SellPosition>0)  // 平空信号 止损

            {
                A_SendOrder(Enum_Buy,Enum_ExitToday,A_SellPosition,Q_BidPrice()+N*MinMove*PriceScale);
                HasSendOrder = 0;
                SetGlobalVar(1,HasSendOrder);
                Return;
             }
            if(平空信号  and A_SellPosition>0) // 平空信号
             {
                A_SendOrder(Enum_Buy,Enum_ExitToday,A_SellPosition,Q_BidPrice()+N*MinMove*PriceScale);
                HasSendOrder = 0;
                SetGlobalVar(1,HasSendOrder);
                Return;
             }
          }
              
    End          

    要求简单,如果显开多信号,开多,不管它消失不,下一Bar或者是Tick 再触发开多信号,不重开.  如果止损信号出现,平仓.

    开空也是一样
              

    上面的逻辑这样清楚啊. 都不发单,我是细细地研究了,帮助中的交易策略进阶----A函数下单撤单和全局变量操作写出来的.

    是不是开空,开多的运算写的位置不对.

            



     

  • TB技术人员: 有自己写日志将条件都输出来看过吗?
    你的开多与开空条件是什么意思呢?
    max,min是比较数值大水上的函数,你这样 的用法是不对的吧?这样应该不能直接通过编译吧

     

  • TB客服: 本帖最后由 xiaosong 于 2013-7-27 07:29 编辑
    小米 发表于 2013-7-25 10:19
    有自己写日志将条件都输出来看过吗?
    你的开多与开空条件是什么意思呢?
    max,min是比较数值大水上的函数, ...


    谢谢老大了.

    1:有自己写日志将条件都输出来看过吗?


    不知道如何搞了?

    2:你的开多与开空条件是什么意思呢?
       
       我是这样想的.
       
       Begin

          ....................在这里就运算条件了.
         
            If(Max(开多信号  and a_buyposition==0 and a_sellposition==0 ) // 开多信号就是条件合适
            {
                A_SendOrder(Enum_Buy,Enum_Entry,Lots,Q_AskPrice()+N*MinMove*PriceScale);//发送委托单开多仓一手


    2:
        max,min是比较数值大水上的函数,你这样 的用法是不对的吧?这样应该不能直接通过编译吧

        能编译,就是图上无信号,不发单.

     

  • 网友回复:
    xiaosong 发表于 2013-7-25 11:24
    谢谢老大了.

    1:有自己写日志将条件都输出来看过吗?

    1.fileappend() 输出你的开仓条件里所有需要判断到的变量的值,一一排查。

    2.你能将你使用到max的这句原话贴一下吗????
    以我对max函数的了解,想象不了你这里比条件是怎么个比法。

     

  • 网友回复: 本帖最后由 小米 于 2013-7-26 15:18 编辑

    给你一个简单的a_sendorder发单的例子,可看一下。
    这个主要是说明一个全局变量控制a_sendorder的情况。具体的条件以及发单价格要自己琢磨一下,这里不做参考 。
    1. Vars
    2.         bool aa;
    3.         Bool bb;
    4. Begin
    5. aa = xxxxx;
    6. bb = yyyyy;
    7. If(GetGlobalVar(0)==InvalidNumeric)
    8. {
    9.         SetGlobalVar(0,0);
    10.         SetGlobalVar(1,0);
    11. }
    12. If(BarStatus==2)
    13. {
    14.         If( aa && A_GetOpenOrderCount==0 && A_BuyPosition==0 && GetGlobalVar(0)==0)
    15.         {
    16.             A_SendOrder(enum_buy,enum_entry,1,q_last);
    17.                 SetGlobalVar(0,1);
    18.                 setGlobalVar(1,0);
    19.         }
    20.         If( bb && A_GetOpenOrderCount==0 && A_BuyPosition>0 && GetGlobalVar(1)==0)
    21.         {
    22.                 A_SendOrder(enum_sell,enum_exit,1,q_last);
    23.                 SetGlobalVar(1,1);
    24.                 SetGlobalVar(0,0);
    25.         }
    26. }
    27. Commentary("get0: get1:"+Text(getglobalvar(0))+","+text(getglobalvar(1)));
    28. End
    复制代码

 

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

可联系技术人员 QQ: 1145508240  有需要帮忙请点击这里留言!!!进行 有偿 编写!不贵!点击查看价格!


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

相关文章

    没有相关内容