Strategi Grid Kedudukan Berubah Mengikut Trend

Penulis:ChaoZhang, Tarikh: 2024-03-29 15:23:23
Tag:EMARSIMACDATRADX

img

Ringkasan

Strategi ini adalah strategi grid kedudukan berubah mengikut trend yang terutamanya menggunakan corak EMA, RSI, dan engulfing untuk menentukan arah trend dan masa kemasukan. Strategi ini menyesuaikan kedudukan stop-loss dan mengambil keuntungan berdasarkan saiz badan corak engulfing sambil membolehkan pengguna memilih untuk pergi panjang sahaja, pendek sahaja, atau kedua-duanya.

Prinsip Strategi

Strategi ini menggunakan EMA 200 tempoh untuk menentukan arah trend keseluruhan. Apabila harga di atas EMA, ia dianggap sebagai uptrend, dan apabila di bawah EMA, ia dianggap sebagai downtrend. RSI 9 tempoh 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 corak bullish dan bearish engulfing sebagai isyarat kemasukan. Apabila isyarat corak EMA, RSI, dan engulfing bersetuju, strategi membuka kedudukan.

Kedudukan stop-loss dan take-profit ditentukan berdasarkan saiz badan corak engulfing. Stop-loss ditetapkan pada dua kali ganda saiz badan engulfing, dengan peratusan stop-loss minimum 0.3% dari harga kemasukan untuk mengelakkan stop-out yang kerap disebabkan jarak stop-loss yang kecil. Kedudukan take-profit ditetapkan dengan mengalikan jarak stop-loss dengan nisbah risiko-balasan yang telah ditakrifkan terlebih dahulu untuk memastikan nisbah risiko-balasan yang tetap. Di samping itu, strategi ini menyediakan pilihan untuk menggunakan MACD sebagai penapis trend, mempertimbangkan trend bullish yang lebih kuat apabila garis MACD berada di atas garis isyarat dan trend bearish yang lebih kuat apabila garis MACD berada di bawah garis isyarat.

Kelebihan Strategi

  1. Mengikuti trend: Strategi menggunakan pelbagai penunjuk untuk menentukan trend, membantu memasuki peringkat awal pembentukan trend dan menangkap pergerakan trend.

  2. Stop-loss dan take-profit dinamik: Dengan menyesuaikan kedudukan stop-loss dan take-profit berdasarkan saiz badan corak engulfing, strategi memperluaskan julat take-profit apabila trend kuat dan menyempitkan julat stop-loss apabila trend lemah, yang membolehkan pengurusan kedudukan yang fleksibel.

  3. Pengguna boleh menyesuaikan arah perdagangan, keutamaan risiko, dan parameter lain untuk memenuhi keperluan pengguna yang berbeza.

  4. Pilihan untuk menggunakan MACD sebagai penapis trend lebih lanjut mengesahkan kekuatan trend dan meningkatkan ketepatan kemasukan.

Risiko Strategi

  1. Pengesanan trend yang salah: Walaupun strategi menggunakan beberapa penunjuk untuk menentukan trend, masih ada contoh di mana trend itu tidak dikenal pasti dengan betul, yang membawa kepada kerugian.

  2. Julat penyempitan: Jika badan corak engulfing kecil, jarak stop-loss dan mengambil keuntungan akan sangat dekat, yang membawa kepada kemerosotan nisbah risiko-balasan.

  3. Pengoptimuman parameter: Parameter optimum mungkin berbeza secara ketara di instrument dan jangka masa yang berbeza, yang memerlukan pengguna untuk terus menguji dan mengoptimumkan.

Arahan Pengoptimuman Strategi

  1. Pengenalan trend: Pertimbangkan untuk memperkenalkan alat pengesahan trend tambahan seperti Bollinger Bands, Indeks Arah Arah (ADX), dan lain-lain, untuk meningkatkan ketepatan pengenalan trend.

  2. Pengoptimuman Stop-Loss dan Take-Profit: Pertimbangkan untuk memasukkan penunjuk yang berkaitan dengan turun naik seperti ATR untuk menyesuaikan jarak Stop-Loss dan Take-Profit secara dinamik, mengurangkan risiko yang berkaitan dengan julat kecil.

  3. Ukuran kedudukan: Sesuaikan saiz kedudukan secara dinamik berdasarkan kekuatan trend, keuntungan akaun, dan lain-lain, meningkatkan saiz kedudukan apabila trend kuat dan konsisten menguntungkan, dan mengurangkan kos perdagangan yang kerap.

  4. Penyelarasan pelbagai jangka masa dan pelbagai instrumen: Memvalidasi isyarat trend di seluruh jangka masa dan instrumen untuk meningkatkan ketepatan pengenalan trend sambil mempelbagaikan risiko satu instrumen atau jangka masa.

Ringkasan

Strategi grid kedudukan yang berubah-ubah ini berfungsi dengan baik di pasaran trend dengan menggunakan pelbagai penunjuk untuk menentukan arah trend dan kekuatan, menyesuaikan secara dinamik stop-loss, mengambil keuntungan, dan saiz kedudukan untuk menangkap trend dan mencapai pulangan yang berlebihan. Walau bagaimanapun, prestasi strategi adalah purata di pasaran yang tidak jelas atau sering turun naik. Oleh itu, ketika menggunakan strategi ini, adalah penting untuk memberi tumpuan kepada pemilihan instrumen trend dan menyesuaikan parameter apabila keadaan pasaran berubah. Selain itu, terdapat ruang untuk pengoptimuman lanjut dalam pengenalan trend, penempatan stop-loss dan mengambil keuntungan, saiz kedudukan, dan penyelarasan pelbagai jangka masa dan pelbagai 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 lanjut