Strategi Garis Posisi Variabel Mengikuti Tren

Penulis:ChaoZhang, Tanggal: 2024-03-29
Tag:EMARSIMACDATRADX

img

Gambaran umum

Strategi ini adalah strategi grid posisi variabel yang mengikuti tren yang terutama menggunakan pola EMA, RSI, dan engulfing untuk menentukan arah tren dan waktu masuk. Strategi ini menyesuaikan posisi stop-loss dan take-profit berdasarkan ukuran tubuh pola engulfing sambil memungkinkan pengguna untuk memilih untuk pergi panjang saja, pendek saja, atau keduanya. Selain itu, strategi ini menyediakan opsi untuk menggunakan MACD sebagai filter tren.

Prinsip Strategi

Strategi ini menggunakan EMA 200 periode untuk menentukan arah tren keseluruhan. Ketika harga di atas EMA, itu dianggap sebagai uptrend, dan ketika di bawah EMA, itu dianggap sebagai downtrend. RSI 9 periode digunakan untuk mengukur momentum, dengan RSI di atas 50 menunjukkan momentum bullish yang lebih kuat dan di bawah 50 menunjukkan momentum bearish yang lebih kuat. Strategi ini juga menggunakan pola bullish dan bearish engulfing sebagai sinyal masuk. Ketika sinyal EMA, RSI, dan pola engulfing sepakat, strategi membuka posisi.

Stop-loss dan take-profit posisi ditentukan berdasarkan ukuran tubuh pola engulfing. Stop-loss ditetapkan pada dua kali ukuran tubuh engulfing, dengan persentase stop-loss minimum 0,3% dari harga masuk untuk menghindari sering stop-out karena jarak stop-loss yang kecil. Posisi take-profit ditetapkan dengan mengalikan jarak stop-loss dengan rasio risiko-imbalan yang telah ditentukan sebelumnya untuk memastikan rasio risiko-imbalan yang tetap. Selain itu, strategi ini memberikan pilihan untuk menggunakan MACD sebagai filter tren, dengan mempertimbangkan tren bullish yang lebih kuat ketika garis MACD berada di atas garis sinyal dan tren bearish yang lebih kuat ketika garis MACD berada di bawah garis sinyal.

Keuntungan Strategi

  1. Mengikuti tren: Strategi menggunakan beberapa indikator untuk menentukan tren, membantu memasuki pada tahap awal pembentukan tren dan menangkap gerakan tren.

  2. Stop-loss dan take-profit dinamis: Dengan menyesuaikan posisi stop-loss dan take-profit berdasarkan ukuran tubuh pola engulfing, strategi memperluas rentang take-profit ketika tren kuat dan mempersempit rentang stop-loss ketika tren lemah, memungkinkan manajemen posisi yang fleksibel.

  3. Pengguna dapat menyesuaikan arah perdagangan, preferensi risiko, dan parameter lainnya agar sesuai dengan kebutuhan pengguna yang berbeda.

  4. Pilihan untuk menggunakan MACD sebagai filter tren lebih lanjut mengkonfirmasi kekuatan tren dan meningkatkan akurasi entri.

Risiko Strategi

  1. Identifikasi tren yang salah: Meskipun strategi menggunakan beberapa indikator untuk menentukan tren, masih mungkin ada kasus di mana tren yang salah diidentifikasi, yang mengarah pada kerugian.

  2. Rentang penyempitan: Jika tubuh pola engulfing kecil, jarak stop-loss dan take-profit akan sangat dekat, yang menyebabkan penurunan rasio risiko-manfaat.

  3. Optimasi parameter: Parameter optimal dapat bervariasi secara signifikan di berbagai instrumen dan kerangka waktu, yang mengharuskan pengguna untuk terus menguji dan mengoptimalkan.

Arah Optimasi Strategi

  1. Identifikasi tren: Pertimbangkan untuk memperkenalkan alat konfirmasi tren tambahan seperti Bollinger Bands, Average Directional Index (ADX), dll, untuk meningkatkan akurasi identifikasi tren.

  2. Optimasi stop-loss dan take-profit: Pertimbangkan untuk memasukkan indikator terkait volatilitas seperti ATR untuk menyesuaikan jarak stop-loss dan take-profit secara dinamis, mengurangi risiko yang terkait dengan kisaran kecil.

  3. Ukuran posisi: Sesuaikan ukuran posisi secara dinamis berdasarkan kekuatan tren, profitabilitas akun, dll., Meningkatkan ukuran posisi ketika tren kuat dan konsisten menguntungkan, dan mengurangi biaya perdagangan yang sering.

  4. Koordinasi multi-frame waktu dan multi-instrumen: Memvalidasi sinyal tren di seluruh kerangka waktu dan instrumen untuk meningkatkan keakuratan identifikasi tren sambil mendiversifikasi risiko dari satu instrumen atau kerangka waktu.

Ringkasan

Strategi grid posisi variabel mengikuti tren ini berkinerja baik di pasar tren dengan menggunakan beberapa indikator untuk menentukan arah dan kekuatan tren, secara dinamis menyesuaikan stop-loss, take-profit, dan ukuran posisi untuk menangkap tren dan mencapai laba yang berlebihan. Namun, kinerja strategi ini rata-rata di pasar yang tidak jelas atau sering fluktuasi. Oleh karena itu, ketika menggunakan strategi ini, sangat penting untuk fokus pada pemilihan instrumen tren dan menyesuaikan parameter ketika kondisi pasar berubah. Selain itu, ada ruang untuk optimasi lebih lanjut dalam identifikasi tren, penempatan stop-loss dan take-profit, ukuran posisi, dan koordinasi multi-frame dan multi-instrumen.


/*backtest
start: 2024-02-01 00:00:00
end: 2024-02-29 23:59:59
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

// This Pine Scriptâ„¢ code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © niosupetranmartinez
//@version=5
strategy("Trend Follower Scalping Strategy", overlay=true, process_orders_on_close = true)

// Inputs
emaLen = input(200, 'EMA Length')
rsiLen = input(9, 'RSI Length')
trendDirection = input.string("Both", 'Trend Direction', options=["Long Only", "Short Only", "Both"])
risk_reward_ratio = input(2, 'Risk Reward Ratio')
useMacdFilter = input.bool(true, "Use MACD Filter")
macdTimeframe = input("5", "MACD Timeframe")

// EMA and RSI
ema200 = ta.ema(close, emaLen)
customRsi = ta.rsi(close, rsiLen)

// MACD Filter
[macdLine, signalLine, _] = request.security(syminfo.tickerid, macdTimeframe, ta.macd(close, 12, 26, 9))


// Majority Body Candle Identification Function
isMajorityBodyCandle(candleOpen, candleClose, high, low) =>
    bodySize = math.abs(candleClose - candleOpen)
    fullSize = high - low
    bodySize / fullSize > 0.6

// Engulfing Patterns
isBullishEngulfing = close > open and close[1] < open[1] and (close - open) > (open[1] - close[1]) and isMajorityBodyCandle(open, close, high, low)
isBearishEngulfing = close < open and close[1] > open[1] and (open - close) > (close[1] - open[1]) and isMajorityBodyCandle(open, close, high, low)

// Entry Conditions with MACD Filter
longCondition = close > ema200 and customRsi > 50 and isBullishEngulfing and (not useMacdFilter or macdLine > signalLine)
shortCondition = close < ema200 and customRsi < 50 and isBearishEngulfing and (not useMacdFilter or macdLine < signalLine)

// Trade Execution
var float stopLossPrice = na
var float entryPrice = na

// Long Entry
if (longCondition and (trendDirection == "Long Only" or trendDirection == "Both"))
    entryPrice := close
    engulfingBodySize = math.abs(close - open)
    minimumStopLoss = entryPrice * 0.997
    calculatedStopLoss = entryPrice - (engulfingBodySize * 2)
    stopLossPrice := calculatedStopLoss < minimumStopLoss ? calculatedStopLoss : minimumStopLoss
    risk = entryPrice - stopLossPrice
    takeProfitPrice = entryPrice + (risk_reward_ratio * risk)
    strategy.entry("Long", strategy.long)
    strategy.exit("Exit Long", "Long", stop = stopLossPrice, limit = takeProfitPrice)

// Short Entry
if (shortCondition and (trendDirection == "Short Only" or trendDirection == "Both"))
    entryPrice := close
    engulfingBodySize = math.abs(open - close)
    minimumStopLoss = entryPrice * 1.003
    calculatedStopLoss = entryPrice + (engulfingBodySize * 2)
    stopLossPrice := calculatedStopLoss > minimumStopLoss ? calculatedStopLoss : minimumStopLoss
    risk = stopLossPrice - entryPrice
    takeProfitPrice = entryPrice - (risk_reward_ratio * risk)
    strategy.entry("Short", strategy.short)
    strategy.exit("Exit Short", "Short", stop = stopLossPrice, limit = takeProfitPrice)

// Plotting
plot(ema200, color=color.blue, linewidth=2, title="EMA 200")

Berkaitan

Lebih banyak