
Melihat idea dagangan yang tidak boleh dipercayai - Strategi perdagangan kawasan K-line, dalam artikel ini kita akan membincangkan idea ini dan cuba melaksanakan skrip ini.
Strategi kawasan K-line ialah strategi perdagangan berdasarkan hubungan kawasan antara harga K-line dan purata bergerak. Idea utamanya adalah untuk meramalkan kemungkinan arah aliran harga saham dengan menganalisis amplitud dan perubahan arah aliran harga, serta penukaran sentimen membeli dan menjual, untuk menentukan masa pembukaan dan keluar dari posisi. Strategi ini bergantung pada kawasan antara batang lilin dan purata bergerak, serta nilai penunjuk KDJ, untuk menjana isyarat dagangan panjang dan pendek.
Kawasan candlestick merujuk kepada ruang antara candlestick harga dan purata bergerak, yang dikira dengan menolak nilai purata bergerak daripada harga penutup setiap bar dan kemudian menjumlahkannya. Apabila harga meningkat untuk masa yang lama dan dalam amplitud yang besar, kawasan garis K akan menjadi lebih besar, manakala dalam pasaran yang tidak menentu atau pembalikan selepas turun naik, kawasan garisan K akan menjadi lebih kecil. . Menurut prinsip “semuanya pergi ke ekstrem yang bertentangan”, semakin besar aliran menaik dan semakin lama masa, semakin besar kawasan garis K yang sepadan, dan semakin besar kebarangkalian pembalikan, sama seperti spring, semakin lama ia diregangkan, lebih besar daya lantunan. Oleh itu, ambang untuk kawasan garisan K ditetapkan Apabila ambang ini dicapai, arah aliran harga mungkin selesai dan kemungkinan pembalikan adalah lebih besar.
Untuk mengesahkan lagi bahawa arah aliran akan berbalik, penunjuk KDJ diperkenalkan untuk menilai penukaran sentimen beli dan jual. Tetapan ambang dan nilai penunjuk KDJ bagi strategi ini boleh dilaraskan mengikut keadaan tertentu dan perlu meningkatkan ketepatan strategi.
Kelebihan strategi kawasan K-line ialah ia menggabungkan amplitud dan perubahan arah aliran harga, serta penukaran sentimen membeli dan menjual, menyediakan strategi perdagangan kuantitatif yang agak lengkap. Kelebihannya termasuk:
Walaupun strategi kawasan candlestick mempunyai kelebihan tertentu, ia juga mempunyai beberapa risiko, termasuk:
Untuk mengoptimumkan strategi kawasan K-line, arahan berikut boleh dipertimbangkan:
Kira luas batang lilin
Isyarat untuk membuka kedudukan panjang:
(1) “Kawasan garis-K” arah aliran menurun mencapai ambang, yang boleh diwujudkan sebelum ini
(2) Nilai penunjuk KDJ lebih besar daripada 80
(1) “Kawasan garis-K” arah aliran menaik mencapai ambang, yang boleh diwujudkan sebelum ini
(2) Nilai penunjuk KDJ kurang daripada 20
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)
}
}
Logik strategi adalah sangat mudah:
Parameter strategi
Pembolehubah global
Fungsi Pengiraan
Fungsi gelung utama
a. Dapatkan data K-line terkini dan pastikan bilangan K-line tidak kurang daripada maPeriod, jika tidak rekod status dan kembalikan.
b. Kira purata bergerak ma dan penunjuk ATR, serta penunjuk KDJ.
c. Dapatkan maklumat kawasan, indeks K-line silang terakhir, dan indeks K-line silang terakhir dari areaInfo.
d. Gunakan objek carta candlestick c untuk melukis garisan candlestick dan penunjuk, dan isikannya dengan warna yang berbeza mengikut hubungan antara harga dan purata bergerak.
e. Tentukan masa pembelian dan penjualan berdasarkan syarat:
Jika tradeState ialah “NULL”, dan kawasannya kurang daripada -ambang dan nilai candlestick KDJ lebih daripada 70, operasi belian dilakukan. Jika tradeState ialah “NULL”, dan kawasan lebih besar daripada ambang dan nilai candlestick KDJ kurang daripada 30, laksanakan operasi jual. f. Tetapkan syarat stop loss dan take profit dan tutup kedudukan jika syarat dipenuhi:
Jika ia dalam keadaan beli, kedudukan ditutup apabila harga lebih rendah daripada harga penutupan hari dagangan sebelumnya tolak ATR hari sebelumnya. Jika ia dalam keadaan jualan, kedudukan ditutup apabila harga lebih tinggi daripada harga penutupan hari dagangan sebelumnya ditambah dengan ATR hari sebelumnya. fungsi utama: Ini adalah titik masuk pelaksanaan utama, menyemak sama ada nama pertukaran mengandungi “_Niaga hadapan”, jika disertakan, melontar pengecualian, sebaliknya memasuki gelung tak terhingga, melaksanakan fungsi onTick dalam setiap gelung dan tidur selama 1 saat.
Secara umum, strategi ini bergantung terutamanya pada carta garis K dan penunjuk teknikal untuk membuat keputusan membeli dan menjual, sambil menggunakan strategi henti rugi dan ambil untung untuk mengurus risiko. Sila ambil perhatian bahawa ini hanyalah contoh strategi dan penggunaan sebenar perlu diselaraskan dan dioptimumkan berdasarkan keadaan pasaran dan keperluan khusus.
Model ini mudah dilaksanakan menggunakan JavaScript pada FMZ.COM tanpa menggunakan banyak baris kod. Dan perwakilan grafik kawasan garis-K mudah dicapai menggunakan fungsi KLineChart. Strategi ini direka untuk pasaran spot mata wang kripto dan menggunakan templat “Perpustakaan Dagangan Spot Mata Wang Digital” Membuat pesanan menggunakan fungsi yang terkandung dalam templat juga sangat mudah, mudah digunakan dan difahami.


Saya secara rawak memilih tempoh masa ujian balik Walaupun saya tidak kehilangan wang, saya tidak mengumpul keuntungan secara berterusan, jadi masalah pengeluaran masih agak besar. Perlu ada arah dan ruang pengoptimuman lain untuk strategi ini. Kepada yang berminat boleh cuba upgrade strategi ini.

Melalui strategi ini, di samping mempelajari idea perdagangan yang lebih alternatif, kami juga mempelajari cara melukis carta mewakili kawasan yang dilampirkan oleh garis K dan purata bergerak, dsb.
Strategi kawasan K-line ialah strategi dagangan berdasarkan amplitud arah aliran harga dan penunjuk KDJ Ia membantu pedagang meramalkan arah aliran pasaran dengan menganalisis kawasan antara garis K dan purata bergerak serta penukaran sentimen jual beli. Walaupun terdapat risiko tertentu, melalui pengoptimuman dan pelarasan berterusan, strategi ini boleh menyediakan alat dagangan yang berkuasa untuk membantu peniaga menghadapi turun naik pasaran dengan lebih baik. Adalah penting bahawa pedagang harus menyesuaikan parameter dan peraturan strategi mereka secara fleksibel mengikut situasi dan keadaan pasaran khusus untuk mencapai prestasi dagangan yang lebih baik.