Strategi ini menggunakan sistem purata bergerak berganda untuk mengenal pasti peluang pecah yang berpotensi dalam saham atau mata wang kripto yang dipilih. Prinsip terasnya adalah membeli apabila purata bergerak jangka pendek bangkit kembali dari bawah purata bergerak jangka panjang dan menjual apabila harga menguji semula purata bergerak jangka panjang.
Strategi ini menggunakan dua purata bergerak mudah (SMA) dengan tempoh yang berbeza sebagai isyarat perdagangan. SMA pertama mempunyai tempoh yang lebih lama untuk mewakili arah trend keseluruhan. SMA kedua mempunyai tempoh yang lebih pendek untuk menangkap turun naik harga jangka pendek.
Apabila SMA jangka pendek melintasi di atas SMA jangka panjang dari bawah, ia menandakan trend kenaikan harga secara keseluruhan oleh itu strategi membuka kedudukan panjang. Apabila harga menarik kembali ke bawah untuk menguji semula SMA jangka panjang, ia menunjukkan penarikan jangka pendek telah berakhir dan strategi mempertimbangkan untuk berhenti atau mengambil keuntungan dari kedudukan.
Di samping itu, strategi ini mempunyai
Terdapat ruang tambahan untuk mengoptimumkan strategi ini:
Strategi ini menggabungkan kekuatan perdagangan trend berikut dan pullback menggunakan sistem purata bergerak berganda untuk mengesan peluang. Pada masa yang sama, syarat overbought / oversold tertanam mengelakkan pembukaan kedudukan 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)