Strategi stop loss dinamis persilangan indikator momentum


Tanggal Pembuatan: 2024-02-29 13:55:16 Akhirnya memodifikasi: 2024-02-29 13:55:16
menyalin: 0 Jumlah klik: 671
1
fokus pada
1617
Pengikut

Strategi stop loss dinamis persilangan indikator momentum

Ringkasan

Strategi ini menggabungkan indikator Moving Average dan Indeks Bergerak, memungkinkan sinyal silang dua indikator untuk mengirim sinyal beli dan jual. Strategi ini juga menambahkan stop loss pelacakan dinamis untuk mengendalikan risiko.

Prinsip Strategi

  1. Membangun indikator moving average dengan menggunakan short-term 9 day EMA dan long-term 21 day EMA. Menghasilkan sinyal beli ketika EMA jangka pendek di atas EMA jangka panjang; menghasilkan sinyal jual ketika EMA jangka pendek di bawah EMA jangka panjang.
  2. Menggunakan ADX, +DI dan -DI untuk membangun indikator DMI. Di atas +DI, DI adalah sinyal beli; di atas -DI, DI adalah sinyal jual.
  3. Kombinasi sinyal dari indikator EMA dan indikator DMI, yang berarti bahwa kedua indikator memenuhi persyaratan untuk mengirim sinyal beli dan jual yang sebenarnya.
  4. Stop loss menggunakan tracking harga tertinggi/terendah.

Analisis Keunggulan

  1. Indikator ganda menggabungkan filter sinyal palsu, meningkatkan akurasi sinyal. Indikator jangka pendek menangkap perubahan tren; Indikator jangka panjang menentukan arah tren besar.
  2. Indikator momentum dapat menangkap tren harga lebih awal dan memiliki beberapa karakteristik utama.
  3. Mekanisme stop loss dinamis dapat memaksimalkan penguncian keuntungan, sekaligus mengendalikan risiko.

Analisis risiko

  1. Bila kedua indikator digabungkan, sinyal beli dan jual akan berkurang, dan kemungkinan kehilangan beberapa peluang.
  2. Pengaturan parameter indikator yang tidak tepat dapat menyebabkan frekuensi transaksi yang terlalu tinggi atau kualitas sinyal yang buruk.
  3. Penetapan stop loss terlalu longgar akan meningkatkan risiko kerugian; penetapan terlalu ketat akan meningkatkan risiko keluar dari tren.

Arah optimasi

  1. Uji kombinasi parameter jangka pendek dan panjang EMA yang berbeda untuk menemukan parameter optimal.
  2. Uji pilihan parameter ADX yang berbeda untuk meningkatkan kualitas sinyal DMI.
  3. Mengoptimalkan parameter stop loss, sehingga dapat mengunci keuntungan maksimum dan mengendalikan risiko.
  4. Untuk meningkatkan kualitas sinyal, Anda bisa mempertimbangkan untuk menambahkan lebih banyak indikator filter.

Meringkaskan

Strategi ini mengintegrasikan keuntungan dari moving average dan indikator momentum, sinyal konfirmasi ganda, memanfaatkan saling melengkapi antara indikator untuk meningkatkan profitabilitas strategi. Pada saat yang sama, mekanisme stop loss pelacakan dinamis dapat secara efektif mengendalikan risiko strategi. Dengan optimasi parameter dan perbaikan aturan, kemampuan strategi untuk mengembalikan dan stabilitas diharapkan dapat ditingkatkan.

Kode Sumber Strategi
/*backtest
start: 2023-02-22 00:00:00
end: 2024-02-28 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy("Combined EMA and DMI Strategy with Enhanced Table", overlay=true)

// Input parameters for EMA
shortTermEMA = input.int(9, title="Short-Term EMA Period")
longTermEMA = input.int(21, title="Long-Term EMA Period")
riskPercentageEMA = input.float(1, title="Risk Percentage EMA", minval=0.1, maxval=5, step=0.1)

// Calculate EMAs
emaShort = ta.ema(close, shortTermEMA)
emaLong = ta.ema(close, longTermEMA)

// EMA Crossover Strategy
longConditionEMA = emaShort > emaLong and emaShort[1] <= emaLong[1]
shortConditionEMA = emaShort < emaLong and emaShort[1] >= emaLong[1]

// Input parameters for DMI
adxlen = input(17, title="ADX Smoothing")
dilen = input(17, title="DI Length")

// DMI Logic
dirmov(len) =>
    up = ta.change(high)
    down = -ta.change(low)
    truerange = ta.tr
    plus = fixnan(100 * ta.rma(up > down and up > 0 ? up : 0, len) / truerange)
    minus = fixnan(100 * ta.rma(down > up and down > 0 ? down : 0, len) / truerange)
    [plus, minus]

adx(dilen, adxlen) => 
    [plus, minus] = dirmov(dilen)
    sum = plus + minus
    adxValue = 100 * ta.rma(math.abs(plus - minus) / (sum == 0 ? 1 : sum), adxlen)
    [adxValue, plus, minus]

[adxValue, up, down] = adx(dilen, adxlen)

// DMI Conditions
buyConditionDMI = up > down or (up and adxValue > down)
sellConditionDMI = down > up or (down and adxValue > up)

// Combined Conditions for Entry
longEntryCondition = longConditionEMA and buyConditionDMI
shortEntryCondition = shortConditionEMA and sellConditionDMI

// Combined Conditions for Exit
longExitCondition = shortConditionEMA
shortExitCondition = longConditionEMA

// Enter long trade based on combined conditions
if (longEntryCondition)
    strategy.entry("Long", strategy.long)

// Enter short trade based on combined conditions
if (shortEntryCondition)
    strategy.entry("Short", strategy.short)

// Exit trades
if (longExitCondition)
    strategy.close("Long")

if (shortExitCondition)
    strategy.close("Short")

// Plot EMAs
plot(emaShort, color=color.blue, title="Short-Term EMA")
plot(emaLong, color=color.red, title="Long-Term EMA")

// Create and fill the enhanced table
var tbl = table.new(position.top_right, 4, 1)
if (barstate.islast)
    table.cell(tbl, 0, 0, "ADX: " + str.tostring(adxValue), bgcolor=color.new(color.red, 90), width=15, height=4)
    table.cell(tbl, 1, 0, "+DI: " + str.tostring(up), bgcolor=color.new(color.blue, 90), width=15, height=4)
    table.cell(tbl, 2, 0, "-DI: " + str.tostring(down), bgcolor=color.new(color.orange, 90), width=15, height=4)