全部 智大领峰 TBQuant功能 TBL语言 TB开户 问答专区 高手圈 其他
已解决
程序不存在
TUFU66 分享到
2022-09-16 19:41

回测的时候出现程序体不存在,没找到原因,请帮忙下

 

 

 

Params
    Numeric ATRs(9);                // 几倍ATR止盈
    Numeric ATRLength(18);            // ATR周期
    Integer Lots(1);         //固定手数
    Integer LotsMode(3);      //头寸计算方式,1,固定手数,2固定值3资金比例
    Numeric fixedmoney(100000);   //固定市值
    Numeric moneyrate(0.7);        //资金比例70%
    
Vars
    Series<Numeric> WAvgPrice;        // K线加权均值
    Series<Numeric> Resistance;        // 阻力线
    Series<Numeric> Support;        // 支撑线
    Numeric ATRVal;                    // ATR(平均真实波幅)
    Series<Numeric> myExitPrice;    // 开仓BAR根据当时的ATR计算出的止盈价
Defs
  Integer CalcuTradeLots()        // 交易手数计算函数
    {
       Integer myLots;
       If(LotsMode==3)
        {
            myLots = Max(1,IntPart((Portfolio_CurrentEquity*moneyrate/MarginRatio)/(Open*contractunit*bigpointvalue)));
        }
        Else If(LotsMode==2)
        {
            myLots = Max(1,IntPart(fixedmoney/(Open*contractunit*bigpointvalue)));
        }
       Else myLots = Lots;
       return myLots;
    }    
    
Events
    OnBar(ArrayRef<Integer> indexs)
    {
        
        // 计算当前K线的加权均值、阻力线和支撑线
        WAvgPrice = (High + Low + (Close * 2)) / 4;
        Resistance = (WAvgPrice * 2) - Low;
        Support = (WAvgPrice * 2) - High;
        // 输出指标
        PlotNumeric("Resistance",Resistance[1]);
        PlotNumeric("Support",Support[1]);
        // 计算ATR
        ATRVal = AvgTrueRange(ATRLength);    
        // 开仓
        If(MarketPosition == 0 And Low <= Support[1] - MinMove * PriceScale And Vol > 0)
        {
            SellShort(0, Min(Open,Support[1] - MinMove * PriceScale));
              // 平仓后调用交易手数计算函数
            Integer TradeLots;
            TradeLots = CalcuTradeLots();
            Buy(TradeLots,Open);
        }
        
        // 开仓时根据开仓BAR的ATR计算止盈价
        If(MarketPosition == -1 And BarsSinceEntry == 0)
        {
            myExitPrice = EntryPrice - ATRVal * ATRs;
        }
            
        // 平仓
        If(MarketPosition == -1 And BarsSinceEntry > 0 And Vol > 0)
        {
            // 止盈出场
            If(Low <= myExitPrice)
            {
                BuyToCover(0, Min(Open,myExitPrice));
                Commentary("止盈出场");
                  // 平仓后调用交易手数计算函数
            Integer TradeLots;
            TradeLots = CalcuTradeLots();
            
            SellShort(TradeLots,Open);
            }
            // 反向突破止损出场
            Else If(High >= Resistance[1] + MinMove * PriceScale)
            {
                BuyToCover(0, Max(Open,Resistance[1] + MinMove * PriceScale));
                Commentary("反转出场");
                 // 平仓后调用交易手数计算函数
            Integer TradeLots;
            TradeLots = CalcuTradeLots();
            
            SellShort(TradeLots,Open);
            }
        }
    }

TB_ABC

 

 

2022-09-17 22:33
您未登录,请先 登录注册 后发表评论
顶部