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.
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.
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 adalah bahwa ia menggabungkan luas dan perubahan tren harga, serta konversi sentimen jual beli, untuk memberikan strategi perdagangan kuantitatif yang relatif lengkap. Keuntungannya meliputi:
Meskipun strategi area K-line memiliki beberapa keuntungan, ia juga memiliki beberapa risiko, termasuk:
Untuk mengoptimalkan strategi area garis K, Anda dapat mempertimbangkan hal berikut:
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
Variabel global
Fungsi perhitungan
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
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
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线面积的图形表示。策略设计用于加密货币现货市场,使用了「数字货币现货交易类库」模板,使用模板封装的函数下单,也是非常简单易用、易懂。
Jika Anda memilih jangka waktu retargeting, meskipun tidak kehilangan uang tetapi juga tidak terus menumpuk keuntungan, maka masalah retargeting masih relatif besar.
Dengan strategi ini, kita belajar bagaimana menggambar grafik, menunjukkan area yang dikelilingi garis K dan garis rata, menggambar indikator KDJ, dll.
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.