2401_90054084 2025-02-22 00:22 采纳率: 91.7%
浏览 6
已结题

求国内版的boll指标和国内版bbiboll指标,ex4文件

mt4上使用,用于ea策略开发,mql4语言
,不尽感谢,有的话请发一下,加V,15844791446,

  • 写回答

4条回答 默认 最新

  • 阿里嘎多学长 2025-02-22 00:32
    关注

    阿里嘎多学长整理AIGC生成,因移动端显示问题导致当前答案未能完全显示,请使用PC端查看更加详细的解答过程

    Bollinger Bands 指标和 BBIBoll 指标

    国内版的 Bollinger Bands 指标和 BBIBoll 指标可以使用 MQL4 语言在 MT4 上实现。下面是指标的代码:

    Bollinger Bands 指标

    //+------------------------------------------------------------------+
    //| Script program start function                                    |
    //+------------------------------------------------------------------+
    int OnInit()
    {
       return(INIT_SUCCEEDED);
    }
    
    //+------------------------------------------------------------------+
    //| Script deinit function                                            |
    //+------------------------------------------------------------------+
    void OnDeinit(const int reason)
    {
    }
    
    //+------------------------------------------------------------------+
    //| Script tick function                                             |
    //+------------------------------------------------------------------+
    void OnTick()
    {
       double price = SymbolInfoDouble(_Symbol, SYMBOL_BID);
       double period = 20; // 指标周期
       double dev = 2.0; // 指标标准差
    
       double upper = price + (dev * BollingerBands(price, period, dev));
       double middle = price;
       double lower = price - (dev * BollingerBands(price, period, dev));
    
       // 画图
       Plot(upper, "Upper", _Color_DARK_GREEN, 0, 0);
       Plot(middle, "Middle", _Color_DARK_GRAY, 0, 0);
       Plot(lower, "Lower", _Color_DARK_RED, 0, 0);
    }
    
    //+------------------------------------------------------------------+
    //| Bollinger Bands 函数                                          |
    //+------------------------------------------------------------------+
    double BollingerBands(double price, int period, double dev)
    {
       double sum = 0;
       int count = 0;
    
       for (int i = 0; i < period; i++)
       {
          sum += (price - i * 0.01);
          count++;
       }
    
       double mean = sum / count;
    
       double stdDev = 0;
       for (int i = 0; i < period; i++)
       {
          stdDev += (price - i * 0.01 - mean) * (price - i * 0.01 - mean);
       }
    
       stdDev = MathSqrt(stdDev / count);
    
       return (price - mean) / stdDev * dev;
    }
    

    BBIBoll 指标

    //+------------------------------------------------------------------+
    //| Script program start function                                    |
    //+------------------------------------------------------------------+
    int OnInit()
    {
       return(INIT_SUCCEEDED);
    }
    
    //+------------------------------------------------------------------+
    //| Script deinit function                                            |
    //+------------------------------------------------------------------+
    void OnDeinit(const int reason)
    {
    }
    
    //+------------------------------------------------------------------+
    //| Script tick function                                             |
    //+------------------------------------------------------------------+
    void OnTick()
    {
       double price = SymbolInfoDouble(_Symbol, SYMBOL_BID);
       double period = 20; // 指标周期
       double dev = 2.0; // 指标标准差
    
       double upper = price + (dev * BBIBoll(price, period, dev));
       double middle = price;
       double lower = price - (dev * BBIBoll(price, period, dev));
    
       // 画图
       Plot(upper, "Upper", _Color_DARK_GREEN, 0, 0);
       Plot(middle, "Middle", _Color_DARK_GRAY, 0, 0);
       Plot(lower, "Lower", _Color_DARK_RED, 0, 0);
    }
    
    //+------------------------------------------------------------------+
    //| BBIBoll 函数                                                 |
    //+------------------------------------------------------------------+
    double BBIBoll(double price, int period, double dev)
    {
       double sum = 0;
       int count = 0;
    
       for (int i = 0; i < period; i++)
       {
          sum += (price - i * 0.01);
          count++;
       }
    
       double mean = sum / count;
    
       double stdDev = 0;
       for (int i = 0; i < period; i++)
       {
          stdDev += (price - i * 0.01 - mean) * (price - i * 0.01 - mean);
       }
    
       stdDev = MathSqrt(stdDev / count);
    
       return (price - mean) / stdDev * dev;
    }
    

    这两个指标都使用了 Bollinger Bands 指标的公式,但是 BBIBoll 指标使用了不同的计算方法。

    请注意,这些代码只是示例代码,需要根据实际情况进行修改和优化。

    如果您需要更多帮助,请随时联系我。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(3条)
编辑
预览

报告相同问题?

问题事件

  • 系统已结题 3月2日
  • 已采纳回答 2月23日
  • 创建了问题 2月22日