全部 智大领峰 TBQuant功能 TBL语言 TB开户 问答专区 高手圈 其他
已解决
为什么发不出交易信号,麻烦解决;若可以发出信号,麻烦看看能不能从2015年以前发出信号。
2022-08-16 21:33


Params  

    Numeric Fund(50000); //投入保证金
    
Vars 
    Series<Numeric> Lots;
    Series<Bool> cond2;
    Series<Numeric> day_ma;
    MarginRate rate;
    Series<Numeric> stop_line;
    
Events

    //初始化事件函数,策略运行期间,首先运行且只有一次
    OnInit()
    {
        AddDataFlag(Enum_Data_RolloverRealPrice());    //设置映射真实价格

    }

    onBar(ArrayRef<Integer> indexs)
    {    
    Lots=Max(1,IntPart(Fund/(O*ContractUnit*rate.longMarginRatio)));//BigPointValue*0.1
        //记录开仓后高低点
        Commentary("BarsSinceEntry="+text(BarsSinceEntry));
        day_ma = madd(10);
        PlotNumeric("day_ma",day_ma);
        //开仓条件
        cond2 = CrossOver(close,day_ma);
        PlotBool("cond2",cond2);
        If(cond2[1])
        {
            Buy(lots,Open);
        }
if (MarketPosition>0 )
        {
            stop_line = Close - 20;
            if (stop_line<stop_line[1] and BarsSinceEntry>0)// and stop_line<>0
            {
                stop_line = stop_line[1];
            }
            if(L<stop_line[1] and stop_line[1]>0 and BarsSinceEntry>0)
            {
                Sell(0,Min(open, stop_line[1]));
            }
        }
        //PlotNumeric("stop_line",stop_line);
    }

kyover

rate.longMarginRatio这里面放了什么?如果要获取保证金率必须先get一下,否则里面是空的,导致手数算出来无限大,肯定不能开仓

2022-08-17 08:30
202****1013315034
@kyover


Params  

    Numeric Fund(50000); //投入保证金
    
Vars 
    Series<Numeric> Lots;
    Series<Bool> cond2;
    Series<Numeric> day_ma;
    MarginRate rate;
    Series<Numeric> stop_line;
    
Events

    //初始化事件函数,策略运行期间,首先运行且只有一次
    OnInit()
    {
        AddDataFlag(Enum_Data_RolloverRealPrice());    //设置映射真实价格
        GetMarginRate(rate);
        
    }

    onBar(ArrayRef<Integer> indexs)
    {    
    Lots=Max(1,IntPart(Fund/(O*ContractUnit*rate.longMarginRatio)));//BigPointValue*0.1
        //记录开仓后高低点
        PlotNumeric("Lots",Lots);  
        Commentary("BarsSinceEntry="+text(BarsSinceEntry));
        day_ma = madd(10);
        PlotNumeric("day_ma",day_ma);
        //开仓条件
        cond2 = CrossOver(close,day_ma);
        PlotBool("cond2",cond2);
        If(cond2[1])
        {
            Buy(lots,Open);
        }
if (MarketPosition>0 )
        {
            stop_line = Close - 20;
            if (stop_line<stop_line[1] and BarsSinceEntry>0)// and stop_line<>0
            {
                stop_line = stop_line[1];
            }
            if(L<stop_line[1] and stop_line[1]>0 and BarsSinceEntry>0)
            {
                Sell(0,Min(open, stop_line[1]));
            }
        }
        PlotNumeric("stop_line",stop_line);
    }

 

 

 

这样还是发不出信号

2022-08-17 19:38
202****1013315034

引用的madd代码是下面的

 

 

Params
    Numeric daysAgo(2);        // 参数,过去daysAgo日
    
Vars
    Series<Numeric> barCnt;    // 每日bar计数器
    Series<Numeric> dayClose;    // 以9点为开盘价,昨日最后一个bar收盘价
    Numeric i;
    Numeric j;
    Numeric nIndex(0);        // 定位到每天最后一个bar的索引
    Numeric CBIndex;
    Numeric Sumclose(0); 
    
Begin
    CBIndex = CurrentBar;
    // 每天9点,barCnt = 1
    If(CBIndex == 0 || time==0.0900)
    {
        barCnt = 1;
    }Else
    // 然后随K线数目,barCnt自增
    {
        barCnt = barCnt + 1;
    }
    dayClose = Close;
    Sumclose = 0;
    
    // 设置daysAgo=0参数,直接返回昨日收盘价
    If(daysAgo == 0)
    {
        return dayClose;
    }Else
    // 其他情况下,计算多日数据时,正常计算开始
    {
        For i = 1 To daysAgo
        {
            If( i == 1)
            {    
                // nIndex用来定位每天最后一个bar的索引值(第一天直接等于BarCnt[j])
                nIndex = BarCnt[j];
            }Else {
                // 第二天开始,nIndex每次递增BarCnt[j]
                nIndex = nIndex + BarCnt[j];
            }
            // 上面一段程序完成了对nIndex的计算
            
            If (j > CBIndex ) 
                    Return InvalidNumeric;
                    
            // Sumclose每天加入昨日的收盘价bar价格,也就是dayClose[索引nIndex定位这个bar]
            Sumclose = Sumclose + dayClose[nIndex];
            
            // 索引值j每天递增BarCnt[j]
            j = j + BarCnt[j];
            
        }
        // 最终Sumclose / 过去daysAgo日,得到每日均价
        Return Sumclose/daysAgo;
    }
End

2022-08-17 20:28
您未登录,请先 登录注册 后发表评论
顶部