设为首页收藏本站

 找回密码
 注册
查看: 692|回复: 1
打印 上一主题 下一主题

请问老师,在TBQuant 中如何将公式修改成不重复开仓,谢谢! [复制链接]

Rank: 1

精华
0
UID
233115
积分
11
帖子
7
主题
2
阅读权限
10
注册时间
2016-4-26
最后登录
2021-2-8
跳转到指定楼层
1#
发表于 2020-6-12 19:12:44 |只看该作者 |倒序浏览
老师好!

下面是照猫画虎地将文华的公式转换成开拓者的公式,但在满足条件后的每个bar都加开仓。请问如何使其只在满足条件的第一个BAR开仓一次?可以帮着修改吗?

多谢


Params
        Numeric FastLength(12);
        Numeric SlowLength(26);
        Numeric MACDLength(9);
        Numeric LEFast(21);       
        Numeric LESlow(34);       
                   

Vars   
        Series<Numeric> MACDValue;
        Series<Numeric> AvgMACD;
        Series<Numeric> MACDDiff;
        Series<Numeric> MACDDValueD;
        Series<Numeric> EMALEFast;       
        Series<Numeric> EMALESlow;
                   
        Bool ConCrossOver;                               
        Bool ConCrossUnder;
                                        


Events
         
        OnBar(ArrayRef<Integer> indexs)
        {
               
               
               
                EMALEFast = XAverage(Close, LEFast);
                EMALESlow = XAverage(Close, LESlow);
                PlotNumeric("EMALEFast",EMALEFast);
                PlotNumeric("EMALESlow",EMALESlow);
               
                ConCrossOver = EMALEFast > EMALESlow;
                ConCrossUnder = EMALEFast < EMALESlow;
        
        MACDDiff = XAverage( Close, FastLength ) - XAverage( Close, SlowLength ) ;       
                AvgMACD = XAverage(MACDDiff,MACDLength);
                MACDValue = MACDDiff - AvgMACD;
                MACDDValueD = MACDValue - MACDValue[1];
        
                        
        If(ConCrossOver AND MACDDValueD>0)

         {
                 BuyToCover(13,CLOSE);
                 Buy(13,CLOSE);
         }

         If(ConCrossUnder AND MACDDValueD<0)

         {
                 SELL(13,CLOSE);
                 SELLSHORT(13,CLOSE);
         }
         
}

Rank: 1

精华
0
UID
233115
积分
11
帖子
7
主题
2
阅读权限
10
注册时间
2016-4-26
最后登录
2021-2-8
2#
发表于 2020-6-12 20:38:09 |只看该作者
将上述公式中的条件
MACDDValueD>0和MACDDValueD<0删除掉,就只有在死叉或金叉时开仓一次了。
请高手看看如何把这个条件加上,同时保持不重复开仓。

多谢




Params
        Numeric FastLength(12);
        Numeric SlowLength(26);
        Numeric MACDLength(9);
        Numeric LEFast(21);       
            Numeric LESlow(34);       
                   

Vars   
        Series<Numeric> MACDValue;
        Series<Numeric> AvgMACD;
        Series<Numeric> MACDDiff;
        Series<Numeric> EMALEFast;       
            Series<Numeric> EMALESlow;       
            Bool ConCrossOver;                               
            Bool ConCrossUnder;                               


Events
        OnBar(ArrayRef<Integer> indexs)
        {
               
               
               
                EMALEFast = XAverage(Close, LEFast);
                EMALESlow = XAverage(Close, LESlow);
                PlotNumeric("EMALEFast",EMALEFast);
                PlotNumeric("EMALESlow",EMALESlow);
                ConCrossOver = CrossOver(EMALEFast,EMALESlow);
                ConCrossUnder = CrossUnder(EMALEFast,EMALESlow);
        MACDValue = XAverage( Close, FastLength ) - XAverage( Close, SlowLength ) ;        
        AvgMACD = XAverage(MACDValue, MACDLength);
                 
        If(ConCrossOver)

         {
                 BuyToCover(8,CLOSE);
                 Buy(8,CLOSE);
         }

         If(ConCrossUnder)

         {
                 SELL(8,CLOSE);
                 SELLSHORT(8,CLOSE);
         }
         
}

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

bottom

静态版|手机版|联系我们|交易开拓者 ( 粤ICP备07044698   

GMT+8, 2024-4-23 21:00

Powered by Discuz! X2 LicensedChrome插件扩展

© 2011-2012 交易开拓者 Inc.

回顶部