Strategi ini menggunakan sistem rata-rata bergerak ganda untuk mengidentifikasi peluang breakout potensial dalam saham atau cryptocurrency yang dipilih. Prinsip inti adalah membeli ketika rata-rata bergerak jangka pendek memantul kembali dari bawah rata-rata bergerak jangka panjang dan menjual ketika harga menguji kembali rata-rata bergerak jangka panjang.
Strategi ini menggunakan dua rata-rata bergerak sederhana (SMA) dengan periode yang berbeda sebagai sinyal perdagangan. SMA pertama memiliki periode yang lebih lama untuk mewakili arah tren keseluruhan. SMA kedua memiliki periode yang lebih pendek untuk menangkap fluktuasi harga jangka pendek.
Ketika SMA jangka pendek melintasi SMA jangka panjang dari bawah, ini menandakan tren kenaikan harga secara keseluruhan sehingga strategi membuka posisi panjang. Ketika harga menarik kembali ke bawah untuk menguji kembali SMA jangka panjang, ini menunjukkan bahwa penarikan jangka pendek telah berakhir dan strategi mempertimbangkan untuk berhenti atau mengambil keuntungan dari posisi.
Selain itu, strategi ini memiliki kondisi
Ada ruang tambahan untuk mengoptimalkan strategi ini:
Strategi ini menggabungkan kekuatan trading trend following dan pullback dengan menggunakan sistem moving average dual untuk mendeteksi peluang. Pada saat yang sama, kondisi overbought/oversold tertanam menghindari pembukaan posisi yang tidak perlu.
/*backtest start: 2023-02-20 00:00:00 end: 2024-02-26 00:00:00 period: 1d basePeriod: 1h exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ // @version=5 strategy("Profitable Pullback Trading Strategy", overlay=true,initial_capital=1000, default_qty_type=strategy.percent_of_equity, default_qty_value=100) // Inputs ma_length1 = input.int(280,'MA length 1', step = 10,group = 'Moving Avg. Parameters', inline = 'MA') ma_length2 = input.int(13,'MA length 2', step = 1,group = 'Moving Avg. Parameters', inline = 'MA') sl = input.float(title="Stop Loss (%)", defval=0.07, step=0.1, group="Moving Avg. Parameters") too_deep = input.float(title="Too Deep (%)", defval=0.27, step=0.01, group="Too Deep and Thin conditions", inline = 'Too') too_thin = input.float(title="Too Thin (%)", defval=0.03, step=0.01, group="Too Deep and Thin conditions", inline = 'Too') // Calculations ma1 = ta.sma(close,ma_length1) ma2 = ta.sma(close,ma_length2) too_deep2 = (ma2/ma1-1) < too_deep too_thin2 = (ma2/ma1-1) > too_thin // Entry and close condtions var float buy_price = 0 buy_condition = (close > ma1) and (close < ma2) and strategy.position_size == 0 and too_deep2 and too_thin2 close_condition1 = (close > ma2) and strategy.position_size > 0 and (close < low[1]) stop_distance = strategy.position_size > 0 ? ((buy_price - close) / close) : na close_condition2 = strategy.position_size > 0 and stop_distance > sl stop_price = strategy.position_size > 0 ? buy_price - (buy_price * sl) : na // Entry and close orders if buy_condition strategy.entry('Long',strategy.long) if buy_condition[1] buy_price := open if close_condition1 or close_condition2 strategy.close('Long',comment="Exit" + (close_condition2 ? "SL=true" : "")) buy_price := na plot(ma1,color = color.blue) plot(ma2,color = color.orange)