Sumber dimuat naik... memuat...

Idea Perdagangan Alternatif - Strategi Perdagangan Kawasan K

Penulis:Pencipta Kuantiti - Impian Kecil, Dicipta: 2023-11-03 17:12:42, Dikemas kini: 2024-11-08 09:08:54

img

Lihatlah satu idea perdagangan yang tidak boleh dipercayai untuk strategi perdagangan kawasan K-line, di sini kita meneroka idea ini dan cuba mewujudkan skrip ini.

Idea utama strategi kawasan K

Strategi kawasan garis K adalah strategi dagangan berdasarkan hubungan kawasan antara garis K harga dan garis purata. Idea utamanya adalah untuk meramalkan kemungkinan pergerakan harga saham dengan menganalisis ketinggian dan perubahan trend harga, serta perubahan sentimen jual beli, dan dengan itu menentukan masa untuk membuka dan keluar. Strategi ini bergantung pada kawasan antara garis K dan garis purata, serta nilai penunjuk KDJ, untuk menghasilkan isyarat dagangan berbilang dan kosong.

Prinsip-prinsip strategi kawasan garis K

Kawasan garis K adalah kawasan ruang antara garis K harga dan garis rata, yang dikira dengan mengurangkan nilai rata-rata harga penutupan untuk setiap Bar, dan kemudian mencari jumlah. Kawasan K baris akan menjadi lebih besar apabila ketinggian trend kenaikan harga adalah besar, dengan masa yang lama, dan kawasan K baris akan menjadi lebih kecil apabila pasaran goyah atau reversal selepas goyah. Menurut prinsip pemangsa yang sangat mesti memberi maklum balas, semakin besar trend menaik, semakin lama, semakin besar kawasan K baris yang sepadan, semakin besar kebarangkalian pembalikan, lebih lama, seperti moncong lompatan, lebih besar daya tahan. Oleh itu, menetapkan ambang kawasan K baris, apabila harga mencapai ambang, lebih mungkin trend akan berakhir dan kemungkinan pembalikan akan lebih besar.

Untuk mengesahkan lebih lanjut bahawa trend akan berbalik, petunjuk KDJ diperkenalkan, yang digunakan untuk menilai perubahan sentimen membeli dan menjual. Seting ambang strategi ini dan nilai petunjuk KDJ boleh disesuaikan dengan keadaan dan keperluan tertentu untuk meningkatkan ketepatan strategi.

Kelebihan Strategi Kawasan Garis K

Kelebihan strategi kawasan K-Line adalah ia menggabungkan ketinggian dan perubahan trend harga, dan pemindahan sentimen jual beli, untuk menyediakan strategi perdagangan kuantitatif yang agak lengkap. Kelebihannya termasuk:

  • Ia menyediakan kaedah mudah dan intuitif untuk mengenal pasti kemungkinan perubahan trend dan membantu peniaga memahami pergerakan pasaran dengan lebih baik.
  • Menggunakan gabungan kawasan garis K dan penunjuk KDJ, meningkatkan kebolehpercayaan dan ketepatan strategi.
  • Fleksibiliti yang tinggi, parameter boleh disesuaikan mengikut keadaan pasaran untuk memenuhi keperluan dagangan yang berbeza.

Risiko strategi K-Line Area

Walaupun strategi K-Line mempunyai kelebihan, ia juga mempunyai beberapa risiko, termasuk:

  • Tetapan ambang nilai mungkin memerlukan beberapa pengalaman dan penyesuaian, dan jika tidak ditetapkan dengan betul, ia boleh menyebabkan persepsi yang salah mengenai pergerakan pasaran.
  • Keakuratan penunjuk KDJ dipengaruhi oleh turun naik pasaran dan bunyi bising, yang mungkin menunjukkan isyarat palsu.
  • Prestasi strategi boleh berubah mengikut keadaan pasaran yang berbeza dan memerlukan pengoptimuman dan penyesuaian yang berterusan.

Arahan pengoptimuman strategi kawasan K-line

Untuk mengoptimumkan strategi K-Line Area, anda boleh mempertimbangkan perkara berikut:

  • Pengoptimuman Parameter: Tetap menyesuaikan dan mengoptimumkan parameter ambang dan penunjuk KDJ untuk menyesuaikan diri dengan keadaan pasaran dan keperluan dagangan yang berbeza.
  • Pengurusan risiko: Melaksanakan strategi pengurusan risiko yang berkesan, termasuk peraturan penghentian kerugian dan pembatalan, untuk mengurangkan risiko kerugian.
  • Kombinasi multi-strategi: Menggabungkan strategi kawasan K-Line dengan strategi lain untuk meningkatkan prestasi strategi perdagangan komprehensif.
  • Pemantauan dan Penyesuaian Masa Nyata: Prestasi strategi pemantauan berkala, disesuaikan dan diperbaiki mengikut keadaan sebenar.

Menggunakan bahasa JavaScript untuk melaksanakan strategi ini

  • Mengira kawasan garis K

  • Tanda-tanda pembukaan berganda:

    (1) Kerosakan yang berlaku apabila kerosakan pada kerosakan pada kerosakan pada kerosakan pada kerosakan pada kerosakan pada kerosakan pada kerosakan pada kerosakan pada kerosakan.

    (2) Nilai penunjuk KDJ lebih daripada 80

  • Isyarat untuk membuka dagangan kosong:

    (1) Tanda-tanda peningkatan trend yang berlaku sebelum ketinggian kerucut kawasan garis K mencapai paras terhad.

    (2) Nilai penunjuk KDJ kurang daripada 20

  • Multi-head/Blank-head: ATR mengesan stop loss dan stop loss

Pelaksanaan kod

// 参数
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)
    }
}

Di sini, kita akan melihat bagaimana ia boleh membantu anda untuk mencapai matlamat anda.

Pertama, beberapa pembolehubah dan parameter global ditakrifkan, termasuk:

Parameter strategi

  • maPeriod: Tempoh purata bergerak.
  • Threshold: digunakan untuk menentukan ambang harga semasa membeli atau menjual.
  • jumlah: jumlah transaksi setiap kali.

Variabel global

  • c: Objek carta K, digunakan untuk melukis carta.
  • OpenPrice: Mencatatkan harga pembukaan.
  • tradeState: Mengetengahkan status urus niaga, boleh menjadi "NULL" (tidak ada) BUY (beli) atau "SELL" (jual).

Fungsi pengiraan

  • calculateKLineArea: Fungsi ini digunakan untuk mengira kawasan antara harga dan purata bergerak pada carta K pada satu masa dan mengembalikan nilai kawasan, indeks K yang terakhir kali disilang dan indeks K yang terakhir kali disilang. Nilai ini digunakan dalam keputusan berikutnya untuk menentukan masa membeli dan menjual.

Fungsi pusingan utama

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

    a. Dapatkan data K-line terkini dan pastikan jumlah K-line tidak kurang daripada maPeriod, jika tidak, rakam status dan kembali;

    b. Mengira ma dan ATR indikator atr, serta indikator KDJ.

    c. Mengambil maklumat kawasan dari areaInfo, indeks K yang terakhir dilipat dan indeks K yang terakhir dilipat.

    d. Menggambar garis K dan garis penunjuk menggunakan objek carta K-Line c, sambil mengisi warna yang berbeza mengikut hubungan harga dengan purata bergerak.

    e. Masa pembelian dan penjualan berdasarkan syarat:

    Jika tradeState adalah NULL, dan kawasannya kurang daripada -threshold dan nilai K baris KDJ lebih besar daripada 70, lakukan operasi beli. Jika tradeState adalah NULL, dan luasnya lebih besar daripada threshold dan nilai K baris KDJ kurang daripada 30, menjalankan operasi jual. f. Tetapkan syarat berhenti kerugian dan berhenti kenaikan, jika syarat dicapai, berdamai:

    Jika berada dalam keadaan beli, apabila harga adalah lebih rendah daripada harga penutupan pada hari dagangan yang lalu dikurangkan ATR pada hari sebelumnya, penutupan berlaku. Jika keadaan dijual, apabila harga lebih tinggi daripada harga penutupan pada hari dagangan sebelumnya ditambah ATR pada hari sebelumnya, penutupan. Fungsi utama: Ini adalah input pelaksanaan utama, memeriksa sama ada nama bursa mengandungi tag _Futures, jika terdapat, buang keanehan, jika tidak, masuk ke dalam gelung tanpa akhir, menjalankan fungsi onTick pada setiap gelung dan tidur selama 1 saat.

Secara umum, strategi ini bergantung kepada carta K-line dan penunjuk teknikal untuk membuat keputusan jual beli, sementara strategi stop loss dan stop loss digunakan untuk menguruskan risiko. Sila ambil perhatian bahawa ini hanya satu contoh strategi, dan penggunaan sebenar memerlukan penyesuaian dan pengoptimuman mengikut keadaan pasaran dan keperluan khusus.

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

Ujian semula strategi

img

img

Jika anda memilih jangka masa pengembalian yang tidak disengajakan, walaupun tidak kehilangan wang tetapi juga tidak terus menjana keuntungan, masalah pengunduran diri masih besar.

img

Dengan strategi ini, kita belajar cara menggambar grafik, menunjukkan kawasan yang dikelilingi oleh garis K dan garis rata, menggambar penunjuk KDJ, dan lain-lain.

Ringkasan

Strategi kawasan garis K adalah strategi dagangan berdasarkan lebar trend harga dan penunjuk KDJ yang membantu peniaga meramalkan pergerakan pasaran dengan menganalisis kawasan dan perubahan sentimen jual beli antara garis K dan garis purata. Walaupun terdapat risiko tertentu, dengan pengoptimuman dan penyesuaian berterusan, strategi ini boleh memberikan alat dagangan yang kuat untuk membantu peniaga menangani lebih baik turun naik pasaran. Yang penting, peniaga harus menyesuaikan parameter dan peraturan strategi dengan fleksibel mengikut keadaan dan keadaan pasaran tertentu untuk mencapai prestasi dagangan yang lebih baik.


Lebih lanjut