Strategi ini didasarkan pada indikator AlphaTrend, yang menggabungkan keuntungan dari indikator RSI dan MFI dan dapat mencapai hasil yang baik di pasar tren bullish dan bearish.
Strategi ini terutama bergantung pada kurva AlphaTrend untuk menentukan arah tren harga. Ini memperhitungkan ATR, RSI / MFI, dan dapat melacak tren secara efektif. Ketika harga menembus kurva, itu menandakan perubahan tren dan membentuk titik masuk.
Singkatnya, strategi ini bekerja baik untuk pasar bullish dan bearish, menyaring kebisingan pasar secara efektif, mengidentifikasi tren dengan akurat, dan merupakan strategi trend berikut yang efisien.
Untuk mengatasi risiko, stop loss dapat mengendalikan kerugian perdagangan tunggal; menggabungkan dengan indikator lain untuk menghindari sinyal palsu; menyesuaikan parameter berdasarkan pasar yang berbeda.
Optimalisasi lebih lanjut dapat dilakukan dengan pengujian di pasar dan parameter yang berbeda sehingga strategi dapat disesuaikan dengan kondisi pasar yang lebih banyak.
Secara keseluruhan strategi AlphaTrend ini adalah sistem trend berikut yang sederhana dan efisien. Ini menggabungkan informasi harga dan volume untuk beradaptasi dengan pasar bullish dan bearish. Mekanisme breakout memberikan sinyal masuk yang jelas. Dengan kontrol risiko yang tepat, dapat mencapai hasil yang baik. Pengujian lebih lanjut dan peningkatan dapat membantu menstabilkan profitabilitasnya di lebih banyak kondisi pasar.
/*backtest start: 2023-09-20 00:00:00 end: 2023-09-26 00:00:00 period: 30m basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ // This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/ // author © KivancOzbilgic // developer © KivancOzbilgic // pv additions, simplification and strategy conversion @ treigen //@version=5 strategy('AlphaTrend For ProfitView', overlay=true, calc_on_every_tick=true, process_orders_on_close=true, default_qty_type=strategy.percent_of_equity, default_qty_value=100, commission_type=strategy.commission.percent, commission_value=0.1, initial_capital=1000) coeff = input.float(1.5, 'Multiplier', step=0.1) AP = input(15, 'Common Period') ATR = ta.sma(ta.tr, AP) novolumedata = input(title='Change calculation (no volume data)?', defval=false) i_startTime = input(defval = timestamp("01 Jan 2014 00:00 +0000"), title = "Backtesting Start Time", inline="timestart", group='Backtesting') i_endTime = input(defval = timestamp("01 Jan 2100 23:59 +0000"), title = "Backtesting End Time", inline="timeend", group='Backtesting') timeCond = true pv_ex = input.string('', title='Exchange', tooltip='Leave empty to use the chart ticker instead (Warning: May differ from actual market name in some instances)', group='PV Settings') pv_sym = input.string('', title='Symbol', tooltip='Leave empty to use the chart ticker instead (Warning: May differ from actual market name in some instances)', group='PV Settings') pv_acc = input.string("", title="Account", group='PV Settings') pv_alert_long = input.string("", title="PV Alert Name Longs", group='PV Settings') pv_alert_short = input.string("", title="PV Alert Name Shorts", group='PV Settings') pv_alert_test = input.bool(false, title="Test Alerts", tooltip="Will immediately execute the alerts, so you may see what it sends. The first line on these test alerts will be excluded from any real alert triggers" ,group='PV Settings') upT = low - ATR * coeff downT = high + ATR * coeff AlphaTrend = 0.0 AlphaTrend := (novolumedata ? ta.rsi(close, AP) >= 50 : ta.mfi(hlc3, AP) >= 50) ? upT < nz(AlphaTrend[1]) ? nz(AlphaTrend[1]) : upT : downT > nz(AlphaTrend[1]) ? nz(AlphaTrend[1]) : downT k1 = plot(AlphaTrend, color=color.new(#0022FC, 0), linewidth=3) k2 = plot(AlphaTrend[2], color=color.new(#FC0400, 0), linewidth=3) buySignalk = ta.crossover(AlphaTrend, AlphaTrend[2]) sellSignalk = ta.crossunder(AlphaTrend, AlphaTrend[2]) var exsym = "" if barstate.isfirst exsym := pv_ex == "" ? "" : "ex=" + pv_ex + "," exsym := pv_sym == "" ? exsym : exsym + "sym=" + pv_sym + "," if barstate.isconfirmed and timeCond if strategy.position_size <= 0 and buySignalk strategy.entry("Buy", strategy.long) alert(pv_alert_long + "(" + exsym + "acc=" + pv_acc + ")", alert.freq_once_per_bar_close) if strategy.position_size >= 0 and sellSignalk strategy.entry("Sell", strategy.short) alert(pv_alert_short + "(" + exsym + "acc=" + pv_acc + ")", alert.freq_once_per_bar_close) // Only used for testing/debugging alert messages if pv_alert_test alert("<![Alert Test]!>\n" + pv_alert_long + "(" + exsym + "acc=" + pv_acc + ")", alert.freq_once_per_bar) alert("<![Alert Test]!>\n" + pv_alert_short + "(" + exsym + "acc=" + pv_acc + ")", alert.freq_once_per_bar)