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

请版主老师帮忙看看问题何在 [开拓者 TB]

  • 咨询内容: 本帖最后由 torowills 于 2013-12-5 18:53 编辑

    Params
    BOOL lastprofitabletradefilter(True);

    Vars
    NumericSeries ma1;
    NumericSeries ma2;
    boolSeries lastbuy(false);
    boolSeries lastsell(false);
    NumericSeries takeprofitset(10);
    Numeric myentryprice;
    Numeric myexitprice;
    Numeric minpoint;


    Begin
    If(barstatus==0)
    {
    lastbuy=true;
    lastsell=true;
    }
    Commentary("lastbuy="+iifstring(lastbuy,"true","False"));
    Commentary("lastsell="+iifstring(lastsell,"true","False"));
    minpoint=MinMove*PriceScale;

    ma1=AverageFC(close,5);
    PlotNumeric("MA1",ma1);
    ma2=AverageFC(close,10);
    PlotNumeric("MA2",ma2);


    If(marketposition==0)
       {      If(CrossOver(ma1[1],ma2[1])  && ((!lastprofitabletradefilter)or(lastbuy)))
                            {Buy(1,open);
                            lastbuy=False;
                            lastsell=true;
                            MyEntryPrice=open;}
                    if(crossunder(ma1[1],ma2[1])  && ((!lastprofitabletradefilter)or(lastsell)))
                        {SellShort(1,open);
                            lastsell=false;
                            lastbuy=True;
                            MyEntryPrice=open;}
            }

    if(marketposition==1)
         { if(high>=myentryprice+TakeProfitSet*minpoint)
                    {     myexitprice=myentryprice+TakeProfitSet*minpoint;
                            If(Open > MyExitPrice)
                {MyExitPrice = Open;                       
                Sell(0,MyExitPrice);
                            lastbuy=False;
                            lastsell=true;}
                            }else
                     {
                                                             if(CrossUnder(ma1[1],ma2[1]))
                                                             {Sell(0,open);       
                                                              lastbuy=False;
                                              lastsell=true;}
                                  
                     }
    }
    else if(marketposition==-1 )
        {  If(Low <= MyEntryPrice - TakeProfitSet*MinPoint)   
            {   MyExitPrice = MyEntryPrice - TakeProfitSet*MinPoint;
                If(Open < MyExitPrice)
                {MyExitPrice = Open;                       
                BuyToCover(0,MyExitPrice);
                            lastsell=false;
                            lastbuy=True;}
                    }else
                            {
                                             if(CrossOver(ma1[1],ma2[1]))         
                                             {BuyToCover(0,open);
                                              lastsell=false;
                                      lastbuy=True;}
                 }        
        }
    End
    希望达到的效果是,5分钟K线情况下,
    5均线上穿10均线,开多,10跳止盈,(开仓后若下穿止损)。不管是止盈还是止损,不再开多,坐等开空
    5均线下穿10均线,开空,10跳止盈,(开仓后若上穿止损)。不管是止盈还是止损,不再开空,坐等开多


    请老师帮忙看看这模型编写上有没有什么问题,个人发现的问题如下,请老师帮忙修改
    存在几个问题:
    1,编译的时候跳出来4个逻辑错误,
    2,回溯:举了能看得见的例子IF1312,12月3号15.00开空,为什么在9.15分满足了10跳的利润,为什么它没止盈,反而到了9.35去止损了?
    3,  回溯:举了能看得见的例子IF1312,  12月4号9.35 明显5均线上穿10均线,为什么没开多?


    本人新人再次希望得到老师的帮助与提点

     

  • TB技术人员: 本帖最后由 jerrywind 于 2013-12-5 16:39 编辑

    1,编译的时候跳出来4个逻辑错误
    >>>>>这个只是警告信息,不是错误信息,可以忽略;

    if(high>=myentryprice+TakeProfitSet*minpoint)
    >>>>>myentryprice<-该变量在没有被赋值的情况下就被使用了,即该值为0,所以似乎止盈的情况从未被触发;做空时也是一样的;

    lastbuy和lastsell
    >>>>>这两个变量声明成了数组,就是说在开仓后想保存是否可以再开多或者空的标志(想用在 不管是止盈还是止损,不再开多/空,坐等开空/多),但是并没有被用到过,例如lastbuy[1];所以这两个变量根本没有起到数组的作用;
    是想表达如下的意思吗?

    /*lastbuy=True;
    lastsell=true;
    */
    if (not (lastbuy || lastsell)) {//说明之前还从没有产生过开仓信号
            lastbuy=True;
            lastsell=true;
    } else {
            lastbuy=lastbuy[1];
            lastsell=lastsell[1];
    }


    NumericSeries takeprofitset(10);
    >>>>> 声明这个数组变量的意思是?是否是想声明一个代表10个跳的变量?-----> Numeric takeprofitset(10);?

    问题挺多的,没法改,修改的量和重新编码差不多,再仔细琢磨琢磨吧。

     

  • TB客服: if(high>=myentryprice+TakeProfitSet*minpoint)
    >>>>>myentryprice<-该变量在没有被赋值的情况下就被使用了,即该值为0,所以似乎止盈的情况从未被触发;做空时也是一样的;-------------原文中的表达已经做了修正,确实漏了


    lastbuy和lastsell  抄袭了海龟中的 :
    boolseries prebreakoutlaiure(false)    以及长周期的开仓  if(marketposion==0  && ((lastprofitabletradefilter)or (prebreakoutfailure)))
    希望在lastbuy在等于true的时候才去开多。

    NumericSeries takeprofitset(10);
    >>>>> 声明这个数组变量的意思是?是否是想声明一个代表10个跳的变量?-----> Numeric takeprofitset(10);?-------------这是从“交易策略进阶”中直接抄袭下来的

    不过好像抄袭的出问题了,依旧不是很明白,问题出在了哪



     

  • 网友回复: 文华的麦语言我也试过了,不过总觉得没有TB的适合个人,不过文华有人会出来帮大家解决问题,管理员们,我想你们上班一定也很辛苦,但好歹出来帮助一下像我这样不是非常精通TB的人,毕竟TB要做的更大更好,需要更多的人,金字塔没有了基层涨不高。我希望用TB做交易,为此做好了所有的准备,只差策略代码化,再次希望得到大家和管理员的帮助,谢谢

     

  • 网友回复: 望老师指点

 

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

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


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

相关文章

    没有相关内容