2401_90054084 2025-03-02 12:44 采纳率: 91.7%
浏览 3
已结题

我想要一个东方财富版的RSI指标

需要在mt4上编译通过且正常使用,这个会用于ea自动交易的开发中

  • 写回答

3条回答 默认 最新

  • 阿里嘎多学长 2025-03-02 12:44
    关注

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

    RSI指标实现

    RSI(Relative Strength Index)指标是衡量资产价格的变动强度的技术指标。下面是一个简单的RSI指标实现代码,适用于MT4平台:

    //+------------------------------------------------------------------+
    //| Script program start function                                    |
    //+------------------------------------------------------------------+
    int OnInit()
    {
       return(INIT_SUCCEEDED);
    }
    
    //+------------------------------------------------------------------+
    //| Script deinit function                                            |
    //+------------------------------------------------------------------+
    void OnDeinit(const int reason)
    {
    }
    
    //+------------------------------------------------------------------+
    //| Script tick function                                             |
    //+------------------------------------------------------------------+
    void OnTick()
    {
       double ClosePrice = SymbolInfoDouble(_Symbol, SYMBOL_BID);
       double RSI = 0;
       int Period = 14; // RSI周期
    
       double UpSum = 0;
       double DownSum = 0;
    
       for (int i = 0; i < Period; i++)
       {
          double prevClose = SymbolInfoDouble(_Symbol, SYMBOL_BID, i);
          if (prevClose > ClosePrice)
          {
             UpSum += prevClose - ClosePrice;
          }
          else
          {
             DownSum += ClosePrice - prevClose;
          }
       }
    
       RSI = (UpSum / (UpSum + DownSum)) * 100;
    
       // 画RSI指标
       ObjectDelete(_RSI);
       _RSI = ObjectCreate(_Symbol, OBJ_LABEL, 0, 0, 0);
       ObjectSet(_RSI, OBJPROP_COLOR, ColorRGB(0, 0, 255));
       ObjectSet(_RSI, OBJPROP_STYLE, STYLE_LABEL);
       ObjectSet(_RSI, OBJPROP_FONT, 1);
       ObjectSet(_RSI, OBJPROP_SIZE, 8);
       ObjectSet(_RSI, OBJPROP_TEXT, "RSI: " + DoubleToStr(RSI, 2));
       ObjectSet(_RSI, OBJPROP_X, 0);
       ObjectSet(_RSI, OBJPROP_Y, 0);
    }
    

    这个代码使用了MT4平台的内置函数来获取当前资产的收盘价,然后计算RSI指标的值。最后,它使用了ObjectCreateObjectSet函数来绘制RSI指标。

    请注意,这只是一个简单的RSI指标实现,实际使用时可能需要根据具体情况进行调整和优化。

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

报告相同问题?

问题事件

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