Strategi ini menggabungkan indikator SuperTrend dengan teori Elliott Wave untuk membangun alat perdagangan teknis yang kuat.
Ide utamanya terletak pada pendekatan bertingkatnya:
Dengan demikian, ia memanfaatkan beberapa indikator dan menambahkan pengenalan pola untuk membuat strategi lebih kuat.
Parameter dapat dioptimalkan untuk secara bertahap menentukan yang optimal; komputasi awan dapat meningkatkan kinerja komputasi; stop loss dapat mengendalikan risiko.
Optimalisasi dapat dilakukan dalam beberapa aspek:
Hal ini akan membuat parameter strategi lebih cerdas, penilaian lebih akurat, dan penerapan praktis lebih nyaman.
Strategi ini secara komprehensif mempertimbangkan kedua dimensi tren dan pola, memastikan kekuatan penilaian sambil meningkatkan fleksibilitas. Multi-indikator dan pengaturan parameter memastikan penerapan pasar penuh. Dengan penggabungan lebih lanjut dari metode cerdas dan otomatis, kepraktisan strategi dapat sangat ditingkatkan. Ini memberikan inspirasi berharga dan referensi untuk kemajuan perdagangan teknis.
/*backtest start: 2024-01-27 00:00:00 end: 2024-02-03 00:00:00 period: 5m basePeriod: 1m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=5 strategy("Elliott's Quadratic Momentum - Strategy [presentTrading]",shorttitle = "EQM Strategy [presentTrading]", overlay=true ) // Inputs for selecting trading direction tradingDirection = input.string("Both", "Select Trading Direction", options=["Long", "Short", "Both"]) // SuperTrend Function supertrend(src, atrLength, multiplier) => atr = ta.atr(atrLength) up = hl2 - (multiplier * atr) dn = hl2 + (multiplier * atr) trend = 1 trend := nz(trend[1], 1) up := src > nz(up[1], 0) and src[1] > nz(up[1], 0) ? math.max(up, nz(up[1], 0)) : up dn := src < nz(dn[1], 0) and src[1] < nz(dn[1], 0) ? math.min(dn, nz(dn[1], 0)) : dn trend := src > nz(dn[1], 0) ? 1 : src < nz(up[1], 0)? -1 : nz(trend[1], 1) [up, dn, trend] // Inputs for SuperTrend settings atrLength1 = input(7, title="ATR Length for SuperTrend 1") multiplier1 = input(4.0, title="Multiplier for SuperTrend 1") atrLength2 = input(14, title="ATR Length for SuperTrend 2") multiplier2 = input(3.618, title="Multiplier for SuperTrend 2") atrLength3 = input(21, title="ATR Length for SuperTrend 3") multiplier3 = input(3.5, title="Multiplier for SuperTrend 3") atrLength4 = input(28, title="ATR Length for SuperTrend 3") multiplier4 = input(3.382, title="Multiplier for SuperTrend 3") // Calculate SuperTrend [up1, dn1, trend1] = supertrend(close, atrLength1, multiplier1) [up2, dn2, trend2] = supertrend(close, atrLength2, multiplier2) [up3, dn3, trend3] = supertrend(close, atrLength3, multiplier3) [up4, dn4, trend4] = supertrend(close, atrLength4, multiplier4) // Entry Conditions based on SuperTrend and Elliott Wave-like patterns longCondition = trend1 == 1 and trend2 == 1 and trend3 == 1 and trend4 == 1 shortCondition = trend1 == -1 and trend2 == -1 and trend3 == -1 and trend4 == - 1 // Strategy Entry logic based on selected trading direction if tradingDirection == "Long" or tradingDirection == "Both" if longCondition strategy.entry("Long", strategy.long) // [Any additional logic for long entry] if tradingDirection == "Short" or tradingDirection == "Both" if shortCondition strategy.entry("Short", strategy.short) // [Any additional logic for short entry] // Exit conditions - Define your own exit strategy // Example: Exit when any SuperTrend flips if trend1 != trend1[1] or trend2 != trend2[1] or trend3 != trend3[1] or trend4 != trend4[1] strategy.close_all() // Function to apply gradient effect gradientColor(baseColor, length, currentBar) => var color res = color.new(baseColor, 100) if currentBar <= length res := color.new(baseColor, int(100 * currentBar / length)) res // Apply gradient effect color1 = gradientColor(color.blue, atrLength1, bar_index % atrLength1) color4 = gradientColor(color.blue, atrLength4, bar_index % atrLength3) // Plot SuperTrend with gradient for upward trend plot1Up = plot(trend1 == 1 ? up1 : na, color=color1, linewidth=1, title="SuperTrend 1 Up") plot4Up = plot(trend4 == 1 ? up4 : na, color=color4, linewidth=1, title="SuperTrend 3 Up") // Plot SuperTrend with gradient for downward trend plot1Down = plot(trend1 == -1 ? dn1 : na, color=color1, linewidth=1, title="SuperTrend 1 Down") plot4Down = plot(trend4 == -1 ? dn4 : na, color=color4, linewidth=1, title="SuperTrend 3 Down") // Filling the area between the first and third SuperTrend lines for upward trend fill(plot1Up, plot4Up, color=color.new(color.green, 80), title="SuperTrend Upward Band") // Filling the area between the first and third SuperTrend lines for downward trend fill(plot1Down, plot4Down, color=color.new(color.red, 80), title="SuperTrend Downward Band")