Trend Mengikuti Strategi Grid Kedudukan Berubah

EMA RSI MACD ATR ADX
Tarikh penciptaan: 2024-03-29 15:23:23 Akhirnya diubah suai: 2024-03-29 15:23:23
Salin: 0 Bilangan klik: 1147
1
fokus pada
1617
Pengikut

Trend Mengikuti Strategi Grid Kedudukan Berubah

Gambaran keseluruhan

Strategi ini adalah trend mengikuti strategi grid kedudukan yang berubah-ubah, yang menggunakan EMA, RSI dan corak penyerapan untuk menentukan arah trend dan masa masuk. Strategi ini menyesuaikan kedudukan hentian dan hentian mengikut saiz entiti corak penyerapan, sambil membolehkan pengguna memilih hanya melakukan lebih banyak, hanya melakukan kosong atau banyak kosong.

Prinsip Strategi

Strategi ini menggunakan garis EMA 200 kitaran untuk menentukan arah trend besar, apabila harga berada di atas EMA dianggap dalam trend menaik, dan di bawah EMA dianggap dalam trend menurun. 9 kitaran RSI digunakan untuk menentukan momentum, RSI lebih besar daripada 50 dianggap lebih kuat, dan kurang daripada 50 dianggap lebih kuat.

Tahap berhenti dan penutupan strategi ditentukan berdasarkan saiz entiti yang menelan bentuk. Tahap berhenti dua kali ganda daripada entiti yang menelan, dengan set margin stop minimum 0.3% dari harga masuk, untuk mengelakkan jarak berhenti yang terlalu kecil menyebabkan penutupan yang kerap.

Kelebihan Strategik

  1. Trend Following: Strategi menggunakan pelbagai indikator untuk menilai trend, membantu campur tangan pada awal trend, menangkap keadaan trend.

  2. Hentian kemusnahan dinamik: Sesuai dengan saiz entiti bentuk penyerapan untuk menyesuaikan kedudukan hentian kemusnahan, meningkatkan ruang hentian apabila trend kuat, mengurangkan ruang hentian apabila trend lemah, kawalan kedudukan yang fleksibel.

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

  4. Memberi pilihan MACD sebagai syarat penapisan trend untuk lebih mengesahkan kekuatan trend dan meningkatkan peluang masuk.

Risiko Strategik

  1. Kesalahan penghakiman trend: Walaupun strategi menggunakan penghakiman gabungan pelbagai petunjuk, dalam beberapa keadaan, kesalahan penghakiman trend masih boleh berlaku, menyebabkan kerugian.

  2. Pengekangan: Jika entiti bentuk yang ditelan lebih kecil, jarak henti dan henti akan sangat dekat, menyebabkan kemerosotan perbandingan keuntungan dan kerugian, yang lebih biasa dalam keadaan gegaran.

  3. Pengoptimuman parameter: parameter optimum mungkin berbeza-beza dalam pelbagai piawaian dan kitaran yang berbeza, yang memerlukan pengguna untuk melakukan debug dan pengoptimuman berterusan.

Arah pengoptimuman strategi

  1. Penghakiman Trend: Boleh cuba memperkenalkan lebih banyak alat pengesahan trend seperti Brinband, Indeks Arah Purata (ADX) dan lain-lain, untuk meningkatkan ketepatan penghakiman trend.

  2. Pengoptimuman Henti Kerosakan: Pertimbangkan untuk memperkenalkan ATR dan lain-lain indikator yang berkaitan dengan kadar turun naik, menyesuaikan jarak Henti Kerosakan secara dinamik, mengurangkan risiko yang disebabkan oleh terlalu kecil.

  3. Pengurusan kedudukan: menyesuaikan saiz kedudukan secara dinamik mengikut kekuatan dan kelemahan trend, keadaan keuntungan akaun, dan lain-lain, dan meningkatkan kedudukan ketika trend kuat dan keuntungan stabil, untuk mengurangkan kos yang disebabkan oleh perdagangan yang kerap.

  4. Kerjasama pelbagai kitaran dan varieti: Melalui kitaran dan varieti untuk mengesahkan isyarat trend, meningkatkan peluang untuk menangkap trend, sambil menyebarkan risiko satu specimen atau kitaran.

ringkaskan

Trend ini mengikuti strategi grid kedudukan kedudukan yang berubah-ubah dalam keadaan trend yang berfungsi dengan baik, melalui beberapa indikator untuk menilai arah dan kekuatan trend, menyesuaikan stop loss dan kedudukan secara dinamik, dapat menangkap trend dengan lebih baik, mendapatkan keuntungan yang lebih banyak. Tetapi dalam keadaan trend yang tidak jelas atau sering berfluktuasi, strategi ini berfungsi secara umum. Oleh itu, apabila menggunakan strategi ini, anda perlu memberi perhatian kepada pemilihan varieti trend, dan menyesuaikan parameter mengikut perubahan keadaan.

Kod sumber strategi
/*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")