Ide Perdagangan Alternatif - Strategi Perdagangan Area K-line

Penulis:Lydia, Dibuat: 2023-11-06 13:33:17, Diperbarui: 2024-01-01 12:20:19

img

Melihat ide perdagangan yang tidak begitu dapat diandalkan strategi perdagangan area K-line, dalam artikel ini, kita akan mengeksplorasi konsep dan mencoba menerapkan naskahnya.

Gagasan Utama dari Strategi Wilayah K-Line

Strategi area K-line adalah strategi perdagangan yang didasarkan pada hubungan area antara garis K-price dan moving average. Ide utamanya adalah untuk memprediksi kemungkinan tren harga saham dengan menganalisis besar dan perubahan tren harga, serta pergeseran sentimen pembelian dan penjualan, sehingga menentukan kapan membuka posisi dan keluar. Strategi ini bergantung pada area antara garis K dan moving average, serta nilai dari indikator KDJ, untuk menghasilkan sinyal perdagangan panjang dan pendek.

Prinsip Strategi Wilayah K-Line

Area garis K mengacu pada area spasial antara garis harga K dan rata-rata bergerak, yang dihitung dengan mengurangi nilai rata-rata bergerak dari harga penutupan setiap batang dan kemudian menyimpulkan. Ketika ada kenaikan harga yang besar dalam jangka waktu yang lama, area garis K akan menjadi lebih besar, sementara selama pasar yang tidak stabil atau setelah pembalikan volatilitas, area garis K lebih kecil. Menurut prinsip apa yang naik harus turun , karena tren naik menjadi lebih besar dan berlangsung lebih lama, area garis K yang sesuai juga meningkat; dengan demikian peningkatan probabilitas pembalikan - seperti musim semi yang bangkit dengan kekuatan yang lebih besar ketika diperpanjang lebih jauh. Oleh karena itu, menetapkan ambang batas untuk area garis K ini dapat menunjukkan kapan harga mungkin telah mencapai puncaknya dan cenderung terbalik.

Untuk lebih lanjut mengkonfirmasi pembalikan tren yang akan datang, kami memperkenalkan penggunaan indikator KDJ yang membantu menentukan pergeseran sentimen membeli atau menjual. ambang batas untuk strategi dan nilai untuk indikator ini dapat disesuaikan dengan keadaan dan kebutuhan khusus untuk meningkatkan akurasi.

Keuntungan dari Strategi Wilayah K-Line

Keuntungan dari strategi area K-line terletak pada kombinasinya dari besar dan perubahan tren harga, serta pergeseran dalam sentimen membeli dan menjual, memberikan strategi perdagangan kuantitatif yang relatif lengkap.

  • Ini menyediakan metode yang sederhana dan intuitif untuk mengidentifikasi kemungkinan pembalikan tren, membantu pedagang memahami tren pasar dengan lebih baik.
  • Dengan menggabungkan area garis K dan indikator KDJ, meningkatkan keandalan dan akurasi strategi.
  • Fleksibilitas tinggi memungkinkan penyesuaian parameter sesuai dengan kondisi pasar untuk memenuhi kebutuhan perdagangan yang berbeda.

Risiko dari strategi area garis K

Meskipun strategi area garis K memiliki keuntungan tertentu, ia juga membawa beberapa risiko, termasuk:

  • Penentuan ambang batas mungkin membutuhkan pengalaman dan penyesuaian. Jika ditetapkan dengan tidak benar, hal itu dapat menyebabkan penilaian yang salah tentang tren pasar.
  • Keakuratan indikator KDJ dipengaruhi oleh fluktuasi pasar dan kebisingan, yang dapat menghasilkan sinyal palsu.
  • Kinerja strategi dapat bervariasi dalam kondisi pasar yang berbeda dan membutuhkan optimasi dan penyesuaian konstan.

Arah Optimalisasi Strategi Daerah K-line

Untuk mengoptimalkan strategi area garis K, pertimbangkan arah berikut:

  • Optimalisasi parameter: Terus menyesuaikan dan mengoptimalkan nilai ambang dan parameter indikator KDJ untuk beradaptasi dengan kondisi pasar dan kebutuhan perdagangan yang berbeda.
  • Manajemen risiko: Melaksanakan strategi manajemen risiko yang efektif, termasuk aturan stop loss dan take profit, untuk mengurangi risiko kerugian.
  • Kombinasi multi-strategi: Menggabungkan strategi area K-line dengan strategi lain untuk meningkatkan kinerja strategi perdagangan yang komprehensif.
  • Pemantauan dan penyesuaian real-time: Melacak kinerja strategi secara teratur, menyesuaikan dan meningkatkan berdasarkan situasi aktual.

Melakukan Strategi Menggunakan JavaScript

  • Menghitung Area K-line

  • Sinyal pembukaan posisi panjang:

    (1) Area K-line dari tren menurun mencapai ambang batas, dapat ditetapkan sebelumnya.

    (2) Nilai indikator KDJ lebih besar dari 80.

  • Sinyal pembukaan posisi pendek:

    (1) Area K-line dari tren naik mencapai ambang batas, dapat ditetapkan sebelumnya.

    (2) Nilai indikator KDJ kurang dari 20.

  • Exit untuk posisi Long/Short: ATR trailing stop loss dan take profit.

Pelaksanaan Kode

// Parameter
var maPeriod = 30
var threshold = 50000
var amount = 0.1

// Global variable
let c = KLineChart({})
let openPrice = 0
let tradeState = "NULL"  // NULL BUY SELL

function calculateKLineArea(r, ma) {
    var lastCrossUpIndex = null
    var lastCrossDownIndex = null
    for (var i = r.length - 1 ; i >= 0 ; i--) {
        if (ma[i] !== null && r[i].Open < ma[i] && r[i].Close > ma[i]) {
            lastCrossUpIndex = i
            break
        } else if (ma[i] !== null && r[i].Open > ma[i] && r[i].Close < ma[i]) {
            lastCrossDownIndex = i
            break
        }

        if (i >= 1 && ma[i] !== null && ma[i - 1] !== null && r[i - 1].Close < ma[i - 1] && r[i].Close > ma[i]) {
            lastCrossUpIndex = i
            break
        } else if (i >= 1 && ma[i] !== null && ma[i - 1] !== null && r[i - 1].Close > ma[i - 1] && r[i].Close < ma[i]) {
            lastCrossDownIndex = i
            break
        }
    }

    var area = 0
    if (lastCrossDownIndex !== null) {
        for (var i = r.length - 1 ; i >= lastCrossDownIndex ; i--) {
            area -= Math.abs(r[i].Close - ma[i])
        }
    } else if (lastCrossUpIndex !== null) {
        for (var i = r.length - 1 ; i >= lastCrossUpIndex ; i--) {
            area += Math.abs(r[i].Close - ma[i])
        }
    }

    return [area, lastCrossUpIndex, lastCrossDownIndex]
}

function onTick() {
    var r = _C(exchange.GetRecords)
    if (r.length < maPeriod) {
        LogStatus(_D(), "Insufficient number of K-line")
        return 
    }
    var ma = TA.MA(r, maPeriod)
    var atr = TA.ATR(r)
    var kdj = TA.KDJ(r)
    var lineK = kdj[0]
    var lineD = kdj[1]
    var lineJ = kdj[2]
    var areaInfo = calculateKLineArea(r, ma)
    var area = _N(areaInfo[0], 0)
    var lastCrossUpIndex = areaInfo[1]
    var lastCrossDownIndex = areaInfo[2]
    
    r.forEach(function(bar, index) {
        c.begin(bar)
        c.plotcandle(bar.Open, bar.High, bar.Low, bar.Close, {overlay: true})
        let maLine = c.plot(ma[index], "ma", {overlay: true})
        let close = c.plot(bar.Close, 'close', {overlay: true})
        c.fill(maLine, close, {color: bar.Close > ma[index] ? 'rgba(255, 0, 0, 0.1)' : 'rgba(0, 255, 0, 0.1)'})
        if (lastCrossUpIndex !== null) {
            c.plotchar(bar.Time, {char: '$:' + area, overlay: true})
        } else if (lastCrossDownIndex !== null) {
            c.plotchar(bar.Time, {char: '$:' + area, overlay: true})
        }
        c.plot(lineK[index], "K")
        c.plot(lineD[index], "D")
        c.plot(lineJ[index], "J")

        c.close()
    })
    
    if (tradeState == "NULL" && area < -threshold && lineK[lineK.length - 1] > 70) {
        // long
        let tradeInfo = $.Buy(amount)
        if (tradeInfo) {
            openPrice = tradeInfo.price
            tradeState = "BUY"
        }
    } else if (tradeState == "NULL" && area > threshold && lineK[lineK.length - 1] < 30) {
        // short
        let tradeInfo = $.Sell(amount)
        if (tradeInfo) {
            openPrice = tradeInfo.price
            tradeState = "SELL"
        }
    }
    
    let stopBase = tradeState == "BUY" ? Math.max(openPrice, r[r.length - 2].Close) : Math.min(openPrice, r[r.length - 2].Close)
    if (tradeState == "BUY" && r[r.length - 1].Close < stopBase - atr[atr.length - 2]) {
        // cover long
        let tradeInfo = $.Sell(amount)
        if (tradeInfo) {
            tradeState = "NULL"
            openPrice = 0
        }        
    } else if (tradeState == "SELL" && r[r.length - 1].Close > stopBase + atr[atr.length - 2]) {
        // cover short 
        let tradeInfo = $.Buy(amount)
        if (tradeInfo) {
            tradeState = "NULL"
            openPrice = 0
        }        
    }

    LogStatus(_D(), "area:", area, ", lineK[lineK.length - 2]:", lineK[lineK.length - 2])
}


function main() {    
    if (exchange.GetName().includes("_Futures")) {
        throw "not support Futures"
    }
    while (true) {
        onTick()
        Sleep(1000)
    }
}

Logika strategi sangat sederhana:

  1. Pertama, beberapa variabel global dan parameter didefinisikan, termasuk:

Parameter strategi

  • maPeriod: Periode rata-rata bergerak.
  • batas: batas yang digunakan untuk menentukan waktu pembelian atau penjualan.
  • Jumlah: Jumlah untuk setiap transaksi.

Variabel global

  • c: Objek grafik garis K, digunakan untuk menggambar grafik.
  • openPrice: Mencatat harga pembukaan.
  • tradeState: Mencatat status perdagangan, yang bisa NULL (posisi kosong), BUY atau SELL.

Menghitung fungsi

  • fungsi calculateKLineArea: Ini digunakan untuk menghitung area antara harga dan garis rata-rata bergerak pada grafik K-line selama periode waktu tertentu, dan mengembalikan nilai area, indeks garis K yang terakhir melintasi ke atas, dan indeks garis K yang terakhir melintasi ke bawah. Nilai-nilai ini digunakan dalam keputusan berikutnya untuk menentukan kapan harus membeli dan menjual.

Fungsi lingkaran utama

  • Fungsi onTick: Ini adalah fungsi pelaksanaan strategi utama, dan berikut adalah operasi dalam fungsi:

    a. Dapatkan data K-line terbaru dan pastikan bahwa jumlah K-line tidak kurang dari maPeriod, jika tidak, catat status dan kembali.

    Menghitung garis rata-rata bergerak ma dan indikator ATR atr, serta indikator KDJ.

    c. Dapatkan informasi daerah dari areaInfo, indeks garis K yang terakhir disilang, dan indeks garis K yang terakhir disilang.

    d. Gunakan objek grafik K-line c untuk menggambar garis K dan garis indikator sambil mengisi warna yang berbeda berdasarkan hubungan hargas dengan garis rata-rata bergerak.

    e. Menentukan waktu pembelian atau penjualan sesuai dengan kondisi:

    Jika tradeState adalah NULL, dan area kurang dari -threshold, dan nilai K dari KDJ lebih besar dari 70, eksekusi operasi beli. Jika tradeState adalah NULL, dan area lebih besar dari ambang batas, dan nilai K dari KDJ kurang dari 30, eksekusi operasi jual. f. Tetapkan kondisi stop loss dan take profit. Jika kondisi ini terpenuhi, tutup posisi:

    Jika berada dalam kondisi pembelian, ketika harga jatuh di bawah harga penutupan hari perdagangan terakhir dikurangi ATR (Range Benar Rata-rata) hari sebelumnya, posisi ditutup. Jika berada dalam kondisi jual, ketika harga naik di atas harga penutupan hari perdagangan terakhir ditambah ATR (Range Benar Rata-rata) hari sebelumnya, posisi ditutup.

    fungsi utama: Ini berfungsi sebagai titik masuk eksekusi utama. Ini memeriksa apakah nama pertukaran berisi _Futures. Jika demikian, pengecualian akan dilemparkan; jika tidak, ia memasuki loop tak terbatas di mana fungsi onTick dijalankan setiap detik.

Dengan kata lain, strategi ini terutama mengandalkan grafik K-line dan indikator teknis untuk membuat keputusan pembelian atau penjualan sementara juga menggunakan strategi stop-loss & take-profit untuk mengelola risiko. Harap dicatat bahwa ini hanya berfungsi sebagai contoh strategi yang perlu disesuaikan & dioptimalkan sesuai dengan situasi pasar & persyaratan khusus selama penggunaan aktual.

PadaFMZ.COM, menggunakan bahasa JavaScript tidak memerlukan banyak baris kode, sebaliknya, ia menerapkan model ini dengan mudah. Dan dengan bantuan dari fungsi KLineChart representasi grafis dari area grafik K-line juga dengan mudah dicapai.

Strategi Backtesting

img

img

Saya memilih periode backtesting secara acak. Meskipun saya tidak kehilangan uang, saya juga tidak mengumpulkan keuntungan secara terus menerus, dan masalah penarikan cukup signifikan. Harus ada arah lain dan ruang untuk optimasi untuk strategi. Mereka yang tertarik dapat mencoba untuk meningkatkan strategi.

img img

Melalui strategi, kami tidak hanya belajar ide perdagangan yang agak tidak konvensional, tetapi juga belajar cara memetakan diagram; mewakili area yang dikelilingi oleh garis K dan garis rata-rata bergerak; memetakan indikator KDJ dll.

Ringkasan

Strategi area K-line adalah strategi trading yang didasarkan pada besarnya tren harga dan indikator KDJ. Ini membantu pedagang memprediksi tren pasar dengan menganalisis area antara garis K dan rata-rata bergerak, serta pergeseran sentimen pembelian dan penjualan. Meskipun ada risiko tertentu, strategi ini dapat memberikan alat trading yang kuat melalui optimasi dan penyesuaian berkelanjutan, membantu pedagang mengatasi fluktuasi pasar dengan lebih baik. Selain itu, pedagang harus menyesuaikan parameter dan aturan strategi secara fleksibel sesuai dengan situasi dan kondisi pasar tertentu untuk mencapai kinerja trading yang lebih baik.


Lebih banyak