Berdasarkan strategi indeks pergerakan dua arah


Tanggal Pembuatan: 2024-02-18 10:00:22 Akhirnya memodifikasi: 2024-02-18 10:00:22
menyalin: 0 Jumlah klik: 620
1
fokus pada
1617
Pengikut

Berdasarkan strategi indeks pergerakan dua arah

Ringkasan

Strategi ini menghasilkan sinyal perdagangan dengan menghitung indeks pergerakan dua arah DI +, DI - dan indeks arah rata-rata ADX, yang dikombinasikan dengan EMA rata-rata bergerak indeks. Sinyal beli dihasilkan ketika DI + di atas DI + dan ADX lebih tinggi dari 20; Sinyal jual dihasilkan ketika DI + di bawah DI + dan ADX lebih tinggi dari 25. Sinyal stop loss dihasilkan ketika DI + di atas DI + dan ADX lebih tinggi dari 30.

Prinsip Strategi

  1. Menghitung DI+, DI- dan ADX

    • Panggilan fungsi ta.dmi (()) menghitung DI+, DI- dan ADX
    • DI+/DI- mencerminkan arah harga
    • ADX mencerminkan tingkat rata-rata perubahan harga
  2. Menghitung Indeks Moving Average EMA

    • Menggunakan fungsi my_ema () untuk menghitung EMA
    • EMA dapat secara efektif meluruskan data harga
  3. Sinyal perdagangan dihasilkan

    • Sinyal beli: DI+ di atas DI- dan ADX> 20 dan harga penutupan> EMA
      • Menjelaskan tren harga naik dan perubahan besar
    • Sinyal jual: DI-di bawah DI+ dan ADX> 25 dan harga penutupan < EMA
      • Menjelaskan tren turun dan perubahan harga yang lebih besar
  4. Stop loss transaksi

    • Beli Stop Loss: DI-di atas DI+ dan ADX>30
      • Menjelaskan perubahan tren harga
    • Penjualan Stop Loss: DI+ di bawah DI- dan ADX> 30
      • Menjelaskan perubahan tren harga

Secara keseluruhan, strategi ini mengintegrasikan indikator pergerakan dan indikator tren, menghasilkan sinyal perdagangan ketika harga cenderung kuat.

Analisis Keunggulan

  1. Menggunakan dual DI untuk menghindari sinyal palsu
    • DI tunggal mudah menimbulkan sinyal yang salah, kombinasi DI+ dan DI- dapat memastikan tren
  2. Kondisi ADX memastikan perubahan harga yang lebih besar
    • Berdagang hanya saat harga berfluktuasi, hindari pasar yang bergejolak
  3. Kondisi EMA sesuai dengan DI
    • EMA dapat secara efektif mengidentifikasi tren lini tengah harga
  4. Kondisi Stop Loss yang ketat
    • Stop loss tepat waktu untuk menghindari kerugian besar

Analisis risiko

  1. Sering berhenti
    • Jika terjadi guncangan, stop loss akan terlalu sering terjadi.
  2. Ketergantungan Parameter
    • Parameter DI dan ADX perlu dioptimalkan untuk menemukan kombinasi terbaik
  3. Frekuensi transaksi rendah
    • Kondisi transaksi yang lebih ketat akan mengurangi frekuensi transaksi

Hal ini dapat dioptimalkan dengan memperluas stop loss, menyesuaikan kombinasi parameter, atau menambahkan kondisi penyaringan tambahan untuk meningkatkan frekuensi perdagangan.

Arah optimasi

  1. Optimasi parameter
    • Optimalkan parameter DI dan ADX untuk menemukan kombinasi parameter yang optimal
  2. Tambahkan filter
    • Kondisi penyaringan sinyal seperti penambahan volume transaksi, deviasi dan sebagainya
  3. Memperluas Stop Loss
    • Kondisi Stop Loss yang Relaksasi dan Mengurangi Frekuensi Stop Loss

Meringkaskan

Strategi ini mengintegrasikan indikator momentum dengan indikator analisis tren untuk menghasilkan sinyal perdagangan ketika harga cenderung kuat. Mengatur risiko pengendalian kondisi stop loss yang ketat. Efektivitas strategi dapat ditingkatkan lebih lanjut dengan mengoptimalkan parameter, menambahkan filter sinyal, dan memperluas stop loss dengan tepat.

Kode Sumber Strategi
/*backtest
start: 2024-01-01 00:00:00
end: 2024-01-31 23:59:59
period: 4h
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/
// © Tamil_FNO_Trader

//@version=5
strategy("Overlay Signals by TFOT", overlay=true)

// Calculate DMI
len = input.int(14, minval=1, title="DI Length")
lensig = input.int(14, title="ADX Smoothing", minval=1, maxval=50)
[diplus, diminus, adx] = ta.dmi(len, lensig)

// Get EMA
emalen = input.int(26, minval=1, title = "EMA Length")
emasrc = input.source(close, title = "EMA Source")

my_ema(src, length) =>
    alpha = 2 / (length + 1)
    sum = 0.0
    sum := na(sum[1]) ? src : alpha * src + (1 - alpha) * nz(sum[1])
EMA2 = my_ema(emasrc, emalen)

// Variables
var bool buycondition1 = false
var bool sellcondition1 = false

var int firstbuybar = na
var int firstsellbar = na

var int buyexitbar = na
var int sellexitbar = na

var bool buyexit1 = false
var bool sellexit1 = false

// Buy & Sell Conditions
buycondition1 := (ta.crossover(diplus, diminus)) and (adx > 20) and (close > EMA2) and na(firstbuybar)
sellcondition1 := (ta.crossover(diminus, diplus)) and (adx > 25) and (close < EMA2) and na(firstsellbar)

buyexit1 := ta.crossover(diminus, diplus) and (adx > 30) and na(buyexitbar)
sellexit1 := ta.crossover(diplus, diminus) and (adx > 30) and na(sellexitbar)

if buycondition1
    if(na(firstbuybar))
        firstbuybar := bar_index
        buyexitbar := na
        firstsellbar := na
        strategy.entry("Buy", strategy.long)

if sellcondition1
    if(na(firstsellbar))
        firstsellbar := bar_index
        sellexitbar := na
        firstbuybar := na
        strategy.entry("Sell", strategy.short)

if buyexit1 and not na(firstbuybar)
    if(na(buyexitbar))
        buyexitbar := bar_index
        firstbuybar := na
        firstsellbar := na
        strategy.close("Buy")

if sellexit1 and not na(firstsellbar)
    if(na(sellexitbar))
        sellexitbar := bar_index
        firstsellbar := na
        firstbuybar := na
        strategy.close("Sell")

// Plot signals on chart
hl = input.bool(defval = true, title = "Signal Labels")

plotshape(hl and buycondition1 and bar_index == firstbuybar ? true : na, "Buy", style = shape.labelup, location = location.belowbar, color = color.green, text = "Buy", textcolor = color.white, size = size.tiny)
plotshape(hl and sellcondition1 and bar_index == firstsellbar ? true : na, "Sell", style = shape.labeldown, location = location.abovebar, color = color.red, text = "Sell", textcolor = color.white, size = size.tiny)

plotshape(hl and buyexit1 and bar_index == buyexitbar ? true : na, "Buy Exit", style = shape.labelup, location = location.belowbar, color = color.red, text = "Buy X", textcolor = color.white, size = size.tiny)
plotshape(hl and sellexit1 and bar_index == sellexitbar ? true : na, "Sell Exit", style = shape.labeldown, location = location.abovebar, color = color.red, text = "Sell X", textcolor = color.white, size = size.tiny)