IZAKI 0.618 TRADING ZONE
Advertisement

Modjoy-Aroon Oscillator [BigBeluga]

Modjoy-Aroon Oscillator [BigBeluga]

Modjoy-Aroon Oscillator [BigBeluga]: A Comprehensive Guide to Trading Strategy

Introduction to Modjoy-Aroon Oscillator [BigBeluga]

The Modjoy-Aroon Oscillator [BigBeluga] is a technical indicator used in trading to identify trends and predict market movements. Developed by BigBeluga, this indicator is a variation of the Aroon Oscillator, which was created by Tushar Chande in 1995. The Modjoy-Aroon Oscillator [BigBeluga] combines the principles of the Aroon Oscillator with additional features to provide a more accurate and reliable trading strategy.

Core Logic of Modjoy-Aroon Oscillator [BigBeluga]

The Modjoy-Aroon Oscillator [BigBeluga] is based on the concept of identifying the strength of a trend by measuring the number of periods since the last high or low. The indicator uses two lines: the Aroon Up line and the Aroon Down line. The Aroon Up line measures the number of periods since the last high, while the Aroon Down line measures the number of periods since the last low.

The core logic of the Modjoy-Aroon Oscillator [BigBeluga] can be summarized as follows:

  • Aroon Up Line: The Aroon Up line is calculated by counting the number of periods since the last high. The line is then plotted on a scale of 0 to 100, with higher values indicating a stronger uptrend.
  • Aroon Down Line: The Aroon Down line is calculated by counting the number of periods since the last low. The line is then plotted on a scale of 0 to 100, with higher values indicating a stronger downtrend.
  • Oscillator: The Modjoy-Aroon Oscillator [BigBeluga] is calculated by subtracting the Aroon Down line from the Aroon Up line. The resulting value is then plotted on a histogram, with positive values indicating a bullish trend and negative values indicating a bearish trend.

Trading Strategy using Modjoy-Aroon Oscillator [BigBeluga]

The Modjoy-Aroon Oscillator [BigBeluga] can be used in a variety of trading strategies, including trend following, mean reversion, and breakout trading. Here are some tips for using the indicator in your trading strategy:

  • Trend Following: Use the Modjoy-Aroon Oscillator [BigBeluga] to identify the direction of the trend. When the oscillator is positive, it indicates a bullish trend, and when it is negative, it indicates a bearish trend.
  • Mean Reversion: Use the Modjoy-Aroon Oscillator [BigBeluga] to identify overbought and oversold conditions. When the oscillator is above 50, it indicates an overbought condition, and when it is below -50, it indicates an oversold condition.
  • Breakout Trading: Use the Modjoy-Aroon Oscillator [BigBeluga] to identify breakouts. When the oscillator crosses above or below a certain threshold, it can be used as a signal to enter a trade.

Conclusion

The Modjoy-Aroon Oscillator [BigBeluga] is a powerful technical indicator that can be used to identify trends and predict market movements. By understanding the core logic and trading strategy behind the indicator, traders can use it to improve their trading performance and make more informed investment decisions.


Modjoy Exclusive Source Code:

MODJOY-AROON OSCILLATOR [BIGBELUGA] SOURCE CODE
// This work is licensed under Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International  

//@version=5
indicator("Modjoy-Aroon Oscillator [BigBeluga]", max_bars_back = 500, format = format.percent, max_labels_count = 500)

// INPUTS ――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――{
int    length       = input.int(29, "Aroon Length")
int    smooth       = input.int(25, "Smooth")
int    sign_len     = input.int(10, "Signal Line")
int    gain_limit   = 10

bool   m_rev_sig    = input.bool(true, "Plot Mean Reversion", group = "Signals")
bool   trend_sig    = input.bool(true, "Plot Trend Signals", group = "Signals")

color  color_up     = input.color(color.lime, "Up", inline = "Col", group = "Color")
color  color_dn     = input.color(color.blue, "Down", inline = "Col", group = "Color")
// }


// CALCULATIONS――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――{
// Zero Lag Function John Ehlers
zero_lag(src, length, gain_limit) =>
    // Initialize variables
    float alpha        = 2 / (length + 1)
    float ema          = na
    float ec           = na
    float least_error  = 1000000
    float best_gain    = 0

    // Initialize EMA
    ema := na(ema[1]) ? src : alpha * src + (1 - alpha) * nz(ema[1])

    // Loop to find the best gain
    for int value = -gain_limit to gain_limit
        // Calculate gain and EC
        float gain = value / 10
        ec := na(ec[1]) ? src : alpha * (ema + gain * (src - nz(ec[1]))) + (1 - alpha) * nz(ec[1])

        // Calculate error
        float error = src - ec

        // Check if this gain results in a smaller error
        if math.abs(error) < least_error
            least_error := math.abs(error)
            best_gain   := gain

    // Recalculate EC using the best gain
    ec := na(ec[1]) ? src : alpha * (ema + best_gain * (src - nz(ec[1]))) + (1 - alpha) * nz(ec[1])
    ec

aroon(simple int len, smooth) =>
    float aroonDown   = 100 * (ta.lowestbars(low, len) + len) / len
    float aroonUp     = 100 * (ta.highestbars(high, len) + len) / len
    float src         = aroonUp - aroonDown
    zero_lag(src, smooth, gain_limit)

float aroon_osc   = aroon(length, smooth)
float sig_line    = ta.sma(aroon_osc, sign_len)

color color_sig   = color.new(chart.fg_color, 85)
// }


// PLOT ――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――{
p1   = plot(aroon_osc, "Aroon Oscillator", color = color.from_gradient(aroon_osc, -80, 80, color_dn, color_up))
p0   = plot(0, "Zero Line", color = color.new(chart.fg_color, 50))

plot(sig_line, "Signal Line", color = bar_index % 2 == 0 ? color.new(chart.fg_color, 50) : na)

fill(p1, p0, 0, -100, na, color_dn)
fill(p1, p0, 100, 0, color_up, na)

bgcolor(ta.crossover(aroon_osc, 0) ? color.new(color_up, 85) : na)
bgcolor(ta.crossover(aroon_osc, 0) and trend_sig ? color.new(color_up, 85) : na, force_overlay = true)

bgcolor(ta.crossunder(aroon_osc, 0) ? color.new(color_dn, 85) : na)
bgcolor(ta.crossunder(aroon_osc, 0) and trend_sig ? color.new(color_dn, 85) : na, force_overlay = true)

// Align plotchar and label declarations with types and columns
plotchar(ta.crossover(aroon_osc, 0) and trend_sig, "Long (Chart)", "🢁", 
         location = location.bottom, 
         color    = color_up, 
         size     = size.tiny, 
         force_overlay = true, 
         text     = "Long", 
         textcolor = chart.fg_color)
         
plotchar(ta.crossunder(aroon_osc, 0) and trend_sig, "Short (Chart)", "🢃", 
         location = location.top, 
         color    = color_dn, 
         size     = size.tiny, 
         force_overlay = true, 
         text     = "Short", 
         textcolor = chart.fg_color)

if barstate.islast
    label.delete(
         label.new(bar_index, aroon_osc, str.tostring(math.round(aroon_osc), format.percent),
                 color      = color(na), 
                 textcolor  = aroon_osc > 0 ? color_up : color_dn, 
                 style      = label.style_label_left)[1]
                 )

if m_rev_sig
    if ta.crossover(aroon_osc, sig_line)
        label.new(bar_index, low, "●\nreversion\nup", 
                 color          = color(na), 
                 textcolor      = color.new(color_up, 50), 
                 style          = label.style_label_up, 
                 force_overlay  = true)

    if ta.crossunder(aroon_osc, sig_line) 
        label.new(bar_index, high, "reversion\ndown\n●", 
                 color          = color(na), 
                 textcolor      = color_dn, 
                 style          = label.style_label_down, 
                 force_overlay  = true)

plotchar(ta.crossover(aroon_osc, sig_line) ? aroon_osc[1] : na, "Mean reversion Up", "●", 
         location = location.absolute, 
         color    = color_up,
         size     = size.tiny, 
         offset   = -1)

plotchar(ta.crossunder(aroon_osc, sig_line) ? aroon_osc[1] : na, "Mean reversion Down", "●", 
         location = location.absolute, 
         color    = color_dn, 
         size     = size.tiny, 
         offset   = -1)

plotchar(ta.crossover(aroon_osc, 0) ? 0 : na, "Long", "▲", location = location.absolute, color = color_up, size = size.tiny)
plotchar(ta.crossunder(aroon_osc, 0) ? 0 : na, "Short", "▼", location = location.absolute, color = color_dn, size = size.tiny)

bgcolor(aroon_osc > 0 ? color.new(color_up, 95) : color.new(color_dn, 95))
// }


⚠️ High Risk Warning

Trading Forex and Futures involves a very high degree of risk and may not be suitable for all investors. The high degree of leverage can result in the complete loss of your funds. These indicators are educational tools and do not guarantee profits. Please trade responsibly with capital you can afford to lose.