全部 智大领峰 TBQuant功能 TBL语言 TB开户 问答专区 高手圈 其他
MACD
2022-01-05 12:15

这个策略能编译,加载以后没有交易信号显示,能帮忙看一下吗?

Params
    Numeric FastLength(12);
    Numeric SlowLength(26);
    Numeric MACDLength(9);
    Numeric Lots(1);
Vars
    Series<Numeric> MACDDiff; 
    Numeric AvgMACD;
    Numeric MACDValue;
Events
    OnBar(ArrayRef<Integer> indexs)
    {
        Range[0:DataSourceSize() - 1]
        {
            MACDDiff = XAverage( Close, FastLength ) - XAverage( Close, SlowLength ) ;//dif快线
            AvgMACD = XAverage(MACDDiff,MACDLength);//dea慢线
            MACDValue = MACDDiff - AvgMACD;//柱体, >0 红柱,<0 绿柱
            
            //交易条件快线上过0轴做多,下过0轴平仓。
            if(MarketPosition<>0 And CrossOver(MACDDiff,0))
            
               Buy(lots,Open);
               
            If(MarketPosition==1 And CrossUnder(MACDDiff,0));
              
              Sell(Lots,Open);
        }
    }

kyover

crossover和crossunder单独用用bool变量先计算 再把这个boo变量放到if里

2022-01-05 13:23
xdqh10180603

还是不行

2022-01-05 15:14
xdqh10180603

Params
    Numeric FastLength(12);
    Numeric SlowLength(26);
    Numeric MACDLength(9);
    Numeric Lots(1);
Vars
    Series<Numeric> MACDDiff; 
    Numeric AvgMACD;
    Numeric MACDValue;
    Bool M;
    Bool N;
Events
    OnBar(ArrayRef<Integer> indexs)
    {
        Range[0:DataSourceSize() - 1]
        {
            MACDDiff = XAverage( Close, FastLength ) - XAverage( Close, SlowLength ) ;//dif快线
            AvgMACD = XAverage(MACDDiff,MACDLength);//dea慢线
            MACDValue = MACDDiff - AvgMACD;//柱体, >0 红柱,<0 绿柱
            
            M = CrossOver(MACDDiff,0);
            N = CrossUnder(MACDDiff,0);
            
            //交易条件快线上过0轴做多,下过0轴平仓。
            if(MarketPosition<>0 And M)//在空仓的情况下 快线上过0轴
            
               Buy(lots,Open);
               
            If(MarketPosition==1 And N);//持有多单 快线下过0轴
              
              Sell(Lots,Open);
        }
    }

 

还是没有交易信号出现,  求解答。

2022-01-05 15:19
cai446449
@xdqh10180603

代码逻辑错误了,帮助文档看看mp的用法http://www.tbquant.net/fun/542.html,一开始就mp<>0(有持仓的意思),是无法进场的,改成mp == 0  然后buy,不要主观认为满足信号,代码满足就是满足,不满足就是不满足,可以用输出类的函数输出if()条件里的条件是否都满足加以判断

2022-01-05 16:00
tblaocai
@xdqh10180603

Params
    Numeric FastLength(12);
    Numeric SlowLength(26);
    Numeric MACDLength(9);
    Numeric Lots(1);
Vars
    Series<Numeric> MACDDiff; 
    Numeric AvgMACD;
    Numeric MACDValue;
    Series<Bool> M(false,2);
    Series<Bool> N(false,2);
Events
    OnBar(ArrayRef<Integer> indexs)
    {
        Range[0:DataSourceSize() - 1]
        {
            MACDDiff = XAverage( Close, FastLength ) - XAverage( Close, SlowLength ) ;//dif快线
            AvgMACD = XAverage(MACDDiff,MACDLength);//dea慢线
            MACDValue = MACDDiff - AvgMACD;//柱体, >0 红柱,<0 绿柱
            PlotNumeric("MACDDiff",MACDDiff);
            PlotNumeric("zero",0);
            
            M = CrossOver(MACDDiff,0);
            N = CrossUnder(MACDDiff,0);
            //Commentary("M="+IIFString(M,"True","False"));
            //Commentary("N="+IIFString(N,"True","False"));
            
            //交易条件快线上过0轴做多,下过0轴平仓。
            if(MarketPosition<>1 And M[1])        //在空仓的情况下 快线上过0轴
               Buy(lots,Open);
               
            If(MarketPosition==1 And N[1])        //持有多单 快线下过0轴
              Sell(0,Open);
        }
    }
 

2022-01-05 17:04
您未登录,请先 登录注册 后发表评论
顶部