Sumber daya yang dimuat... Pemuatan...

Ide perdagangan alternatif - Strategi perdagangan area K-line

Penulis:Penemu Kuantitas - Mimpi Kecil, Dibuat: 2023-11-03 17:12:42, Diperbarui: 2023-11-03 17:35:03

img

Lihatlah ide perdagangan yang tidak dapat diandalkan untuk strategi perdagangan area K-line, di sini kita akan membahas ide ini dan mencoba mengimplementasikan skrip ini.

Gagasan utama strategi area garis K

Strategi area K-line adalah strategi perdagangan yang didasarkan pada hubungan area antara garis K harga dan garis rata-rata. Ide utamanya adalah untuk memprediksi kemungkinan pergerakan harga saham dengan menganalisis luas dan perubahan tren harga, serta pergeseran sentimen jual beli, sehingga menentukan waktu buka dan keluar. Strategi ini bergantung pada area antara garis K dan garis rata, serta nilai indikator KDJ, untuk menghasilkan sinyal perdagangan multihead dan blank.

Prinsip-prinsip dari strategi area K-line

Luas garis K adalah luas ruang antara garis K harga dan garis rata-rata, yang dihitung dengan mengurangi nilai rata-rata harga penutupan untuk setiap Bar, lalu mencari jumlahnya. Ketika harga naik, luasnya akan lebih besar, tetapi luasnya akan lebih kecil saat pasar goyah atau reversal setelah goyah. Menurut prinsip petir yang sangat wajib untuk memberi umpan balik, semakin besar tren naik, semakin lama, semakin besar luasnya garis K yang sesuai, semakin besar kemungkinan reversal, seperti pulsa, semakin lama ditarik, dan semakin besar resiliensinya. Oleh karena itu, menetapkan batas luas garis K, ketika harga mencapai puncaknya, semakin besar kemungkinan tren akan berakhir dan reversal akan terjadi.

Untuk mengkonfirmasi lebih lanjut bahwa tren akan berubah, indikator KDJ diperkenalkan, yang digunakan untuk menilai pergeseran sentimen jual beli. Setting ambang strategi ini dan nilai indikator KDJ dapat disesuaikan dengan situasi dan kebutuhan khusus untuk meningkatkan akurasi strategi.

Keuntungan dari strategi area K-line

Keuntungan dari strategi area K-line adalah bahwa ia menggabungkan luas dan perubahan tren harga, serta konversi sentimen jual beli, untuk memberikan strategi perdagangan kuantitatif yang relatif lengkap. Keuntungannya meliputi:

  • Ini memberikan cara yang sederhana dan intuitif untuk mengidentifikasi kemungkinan perubahan tren dan membantu pedagang memahami pergerakan pasar dengan lebih baik.
  • Menggunakan kombinasi area garis K dan indikator KDJ, strategi ditingkatkan keandalan dan akurasi.
  • Fleksibilitas tinggi, parameter dapat disesuaikan sesuai dengan kondisi pasar untuk memenuhi kebutuhan transaksi yang berbeda.

Risiko dari strategi area K

Meskipun strategi area K-line memiliki beberapa keuntungan, ia juga memiliki beberapa risiko, termasuk:

  • Pengaturan ambang batas mungkin membutuhkan beberapa pengalaman dan penyesuaian, dan jika tidak diatur dengan benar, dapat menyebabkan penilaian yang salah tentang tren pasar.
  • Akurasi indikator KDJ dipengaruhi oleh fluktuasi pasar dan kebisingan, sehingga sinyal palsu dapat muncul.
  • Kinerja strategi dapat berubah sesuai dengan kondisi pasar yang berbeda dan perlu terus dioptimalkan dan disesuaikan.

Arah optimasi strategi area K-line

Untuk mengoptimalkan strategi area garis K, Anda dapat mempertimbangkan hal berikut:

  • Optimisasi parameter: terus menyesuaikan dan mengoptimalkan parameter dari indikator KDJ dan threshold untuk menyesuaikan dengan situasi pasar dan kebutuhan perdagangan yang berbeda.
  • Manajemen risiko: Mengimplementasikan strategi manajemen risiko yang efektif, termasuk aturan stop loss dan stop loss, untuk mengurangi risiko kerugian.
  • Kombinasi multi-strategi: Menggabungkan strategi area K-line dengan strategi lain untuk meningkatkan kinerja strategi perdagangan komprehensif.
  • Pemantauan dan penyesuaian secara real-time: kinerja strategi pemantauan secara berkala, yang disesuaikan dan ditingkatkan sesuai dengan situasi yang sebenarnya.

Kebijakan ini dilakukan dengan menggunakan bahasa JavaScript

  • Menghitung luas garis K

  • Di sini, Anda dapat melihat beberapa gambar yang menarik.

    (1) Kerucut garis K yang mengalami penurunan dapat terbentuk sebelum kerucut mencapai batas.

    (2) Nilai indikator KDJ lebih dari 80

  • Sinyal untuk membuka posisi kosong:

    (1) Kerucut area garis K dari tren naik mencapai batas, sebelum terbentuk

    (2) Nilai indikator KDJ kurang dari 20

  • Multi-head/Blank-head: ATR melacak Stop Loss Stop

Implementasi kode

// 参数
var maPeriod = 30
var threshold = 50000
var amount = 0.1

// 全局变量
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(), "K线数量不足")
        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 strategisnya sangat sederhana:

Pertama, beberapa variabel global dan parameter didefinisikan, termasuk:

Parameter Strategi

  • maPeriod: Periode dari moving average.
  • Threshold: digunakan untuk menentukan batas waktu pembelian atau penjualan.
  • jumlah: jumlah transaksi per transaksi.

Variabel global

  • c: Objek grafik K-line, digunakan untuk menggambar grafik.
  • OpenPrice: Mencatat harga bukaan.
  • tradeState: mencatat status transaksi, yang dapat berupa "NULL" (tidak ada) BUY (beli) SELL (menjual)

Fungsi perhitungan

  • Fungsi calculateKLineArea: Fungsi ini digunakan untuk menghitung area antara harga dan rata-rata bergerak pada grafik K-line pada suatu waktu dan mengembalikan nilai area, indeks K-line yang terakhir kali dipintal dan indeks K-line yang terakhir kali dipintal. Nilai-nilai ini digunakan dalam keputusan berikutnya untuk menentukan waktu membeli dan menjual.

Fungsi lingkaran utama

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

    a. Mendapatkan data K-line terbaru dan memastikan jumlah K-line tidak lebih kecil dari maPeriod, jika tidak, mencatat status dan kembali;

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

    c. Mendapatkan informasi area dari areaInfo, indeks string K yang terakhir kali disilangkan dan indeks string K yang terakhir kali disilangkan.

    d. Menggambar garis K dan garis indikator dengan menggunakan objek grafik garis K c, sambil mengisi warna yang berbeda berdasarkan hubungan harga dengan rata-rata bergerak.

    e. Waktu pembelian dan penjualan berdasarkan kondisi:

    Jika tradeState adalah NULL, dan luasnya kurang dari -threshold, dan nilai K-line KDJ lebih besar dari 70, maka buy dilakukan. Jika tradeState adalah null, dan luasnya lebih besar dari threshold, dan nilai K-line KDJ kurang dari 30, lakukan operasi jual. f. Menetapkan kondisi stop loss dan stop loss, jika kondisi tersebut tercapai, berdamai:

    Jika posisi beli, ketika harga lebih rendah dari harga penutupan pada hari perdagangan sebelumnya dikurangi ATR pada hari sebelumnya. Jika posisi jual, ketika harga lebih tinggi dari harga penutupan hari sebelumnya ditambah ATR hari sebelumnya, pegangan. Fungsi utama: Ini adalah input utama yang dijalankan untuk memeriksa apakah nama bursa berisi tombol _Futures, jika ada, buang keanehan, jika tidak masuk ke lingkaran tanpa batas, jalankan fungsi onTick di setiap lingkaran dan tidur selama 1 detik.

Secara umum, strategi ini sebagian besar mengandalkan grafik K-line dan indikator teknis untuk membuat keputusan jual beli, sementara strategi stop loss dan stop loss digunakan untuk mengelola risiko. Harap dicatat bahwa ini hanya contoh strategi, dan penggunaan praktis membutuhkan penyesuaian dan pengoptimalan sesuai dengan situasi pasar dan kebutuhan spesifik.

在FMZ.COM上使用JavaScript语言没有用多少行代码,很简单的就实现了这个模型。并且使用KLineChart函数很容易实现了K线面积的图形表示。策略设计用于加密货币现货市场,使用了「数字货币现货交易类库」模板,使用模板封装的函数下单,也是非常简单易用、易懂。

Uji Kembali Strategi

img

img

Jika Anda memilih jangka waktu retargeting, meskipun tidak kehilangan uang tetapi juga tidak terus menumpuk keuntungan, maka masalah retargeting masih relatif besar.

img

Dengan strategi ini, kita belajar bagaimana menggambar grafik, menunjukkan area yang dikelilingi garis K dan garis rata, menggambar indikator KDJ, dll.

Pengamatan

Strategi area K-line adalah strategi trading berdasarkan luas tren harga dan indikator KDJ yang membantu trader memprediksi pergerakan pasar dengan menganalisis area dan pergeseran sentimen jual beli antara garis K dan garis rata. Meskipun ada risiko tertentu, strategi ini dapat memberikan alat trading yang kuat dengan optimasi dan penyesuaian terus-menerus untuk membantu trader mengatasi fluktuasi pasar dengan lebih baik. Yang penting, trader harus fleksibel menyesuaikan parameter dan aturan strategi sesuai dengan situasi dan kondisi pasar tertentu untuk mencapai kinerja perdagangan yang lebih baik.


Lebih banyak