我正在尝试将拉胡尔·莫辛德拉振荡器添加到 R



我是R的初学者,最近尝试创建一种交易算法(非常具有挑战性(并进行回测。问题是TTR和Quantmod没有我需要的功能,所以我尝试创建它。所以我在一个网站上找到了这个功能,但没有R语言,而是一个叫做Pine的。

这个公式叫做RMO(Rahul Mohindra Oscillator(:这是我找到的Pine语言公式:

    Raul Mohindra Oscillator
    study(title = "Rahul Mohinder Oscillator", shorttitle="RMO_LB")
    C=close
    cm2(x) => sma(x,2) #sma simple moving average#
    ma1=cm2(C)
    ma2=cm2(ma1)
    ma3=cm2(ma2)
    ma4=cm2(ma3)
    ma5=cm2(ma4)
    ma6=cm2(ma5)
    ma7=cm2(ma6)
    ma8=cm2(ma7)
    ma9=cm2(ma8)
    ma10=cm2(ma9)
    SwingTrd1 = 100 * (close - ( ma1+ma2+ma3+ma4+ma5+ma6+ma7+
         ma8+ma9+ma10)/10)/(highest(C,10)-lowest(C,10))
    SwingTrd2=ema(SwingTrd1,30) #ema exponential moving average#
    SwingTrd3=ema(SwingTrd2,30)
    RMO= ema(SwingTrd1,81)

   Buy=cross(SwingTrd2,SwingTrd3)
   Sell=cross(SwingTrd3,SwingTrd2)

   Bull_Trend=ema(SwingTrd1,81)>0
   Bear_Trend=ema(SwingTrd1,81)<0
   Ribbon_kol=Bull_Trend ? green : (Bear_Trend ? red : blue)
   Impulse_UP= SwingTrd2 > 0
   Impulse_Down= RMO < 0
   bar_kol=Impulse_UP ? green : (Impulse_Down ? red : (Bull_Trend ?    green : blue))
   bgcolor(Ribbon_kol)
   plot(RMO,color=bar_kol, style=histogram)
   hline(0)

我在最后一部分苦苦挣扎,该函数应该绘制一个计算直方图,指示绿色牛市趋势和红熊趋势。我无法将其翻译成 R 语言。

这是我目前所拥有的:

    RMO <- function(x) {
    ma1 <- SMA(x,2)
    ma2 <- SMA(ma1,2)
    ma3 <- SMA(ma2,2)
    ma4 <- SMA(ma3,2)
    ma5 <- SMA(ma4,2)
    ma6 <- SMA(ma5,2)
    ma7 <- SMA(ma6,2)
    ma8 <- SMA(ma7,2)
    ma9 <- SMA(ma8,2)
    ma10 <- SMA(ma9,2)
    SwingTrd1 <- 100 * (x - (ma1+ma2+ma3+ma4+ma5+ma6+ma7+ma8+ma9+ma10)/10)/(max(x,10)-min(x,10))
    SwingTrd2 <- EMA(SwingTrd1,30)
    SwingTrd3 <- EMA(SwingTrd2,30)
    RMO <- EMA(SwingTrd1,81)
    Bull_Trend <- RMO < 0
    Bear_Trend <- RMO > 0

谢谢你的时间!!

基利安·帕杰

已求解,R 中的 RMO 公式

      RMO <- function(x) {
    ma1 <- SMA(x,2)
    ma2 <- SMA(ma1,2)
    ma3 <- SMA(ma2,2)
    ma4 <- SMA(ma3,2)
    ma5 <- SMA(ma4,2)
    ma6 <- SMA(ma5,2)
    ma7 <- SMA(ma6,2)
    ma8 <- SMA(ma7,2)
    ma9 <- SMA(ma8,2)
    ma10 <- SMA(ma9,2)
    SwingTrd1 <- 100 * (x - (ma1+ma2+ma3+ma4+ma5+ma6+ma7+ma8+ma9+ma10)/10)/(max(x,10)-min(x,10))
    STC <- SwingTrd1 + 20
    SwingTrd2 <- (EMA(STC,30))
    SwingTrd3 <- EMA(SwingTrd2,30)
    RMO <- EMA(SwingTrd1,81)
    plot(RMO, type = "h")
    abline(SwingTrd2, col = "blue")
    abline(SwingTrd3, col = "red")
  }

希望对我有帮助!

最新更新