Melihat idea perdagangan yang tidak begitu boleh dipercayai
Strategi kawasan K-garis adalah strategi perdagangan berdasarkan hubungan kawasan antara garis K harga dan purata bergerak. Idea utamanya adalah untuk meramalkan kemungkinan trend harga saham dengan menganalisis besar dan perubahan trend harga, serta perubahan sentimen membeli dan menjual, dengan itu menentukan bila untuk membuka kedudukan dan keluar. Strategi ini bergantung pada kawasan antara garis K dan purata bergerak, serta nilai dari penunjuk KDJ, untuk menjana isyarat perdagangan panjang dan pendek.
Kawasan garis K merujuk kepada kawasan ruang antara garis K harga dan purata bergerak, dikira dengan mengurangkan nilai purata bergerak dari harga penutupan setiap bar dan kemudian mengjumlahkannya. Apabila terdapat peningkatan harga yang besar dalam jangka masa yang lama, kawasan garis K akan menjadi lebih besar, sementara semasa pasaran yang tidak menentu atau selepas pembalikan volatiliti, kawasan garis K lebih kecil. Menurut prinsip
Untuk mengesahkan lagi pembalikan trend yang akan datang, kami memperkenalkan penggunaan penunjuk KDJ yang membantu menentukan perubahan sentimen membeli atau menjual. ambang strategi dan nilai untuk penunjuk ini boleh disesuaikan mengikut keadaan dan keperluan tertentu untuk meningkatkan ketepatan.
Kelebihan strategi kawasan K-line terletak pada gabungan besar dan perubahan trend harga, serta perubahan sentimen membeli dan menjual, menyediakan strategi perdagangan kuantitatif yang agak lengkap.
Walaupun strategi kawasan garis K mempunyai kelebihan tertentu, ia juga membawa beberapa risiko, termasuk:
Untuk mengoptimumkan strategi kawasan garis K, pertimbangkan arah berikut:
Mengira Kawasan Garis K
Isyarat pembukaan kedudukan panjang:
(1) Kawasan
(2) Nilai penunjuk KDJ adalah lebih besar daripada 80.
Isyarat pembukaan kedudukan pendek:
(1) Kawasan
(2) Nilai penunjuk KDJ kurang daripada 20.
Keluar untuk kedudukan Long/Short: ATR menyusul stop loss dan mengambil keuntungan.
Pelaksanaan Kod
// 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)
}
}
Logik strategi adalah sangat mudah:
Parameter Strategi
Peralihan global
Mengira fungsi
Fungsi gelung utama
onTick fungsi: Ia adalah fungsi pelaksanaan strategi utama, dan berikut adalah operasi dalam fungsi:
a. Dapatkan data K-line terkini dan pastikan bahawa bilangan K-line tidak kurang daripada maPeriod, jika tidak, rekod status dan pulangan.
Mengira garis purata bergerak ma dan penunjuk ATR atr, serta penunjuk KDJ.
c. Dapatkan maklumat kawasan dari areaInfo, indeks garis K yang terakhir, dan indeks garis K yang terakhir.
d. Gunakan objek carta K-line c untuk melukis K-line dan garis penunjuk sambil mengisi warna yang berbeza berdasarkan hubungan harga
e. Menentukan masa membeli atau menjual mengikut syarat:
Jika tradeState adalah
Jika ia berada dalam keadaan membeli, apabila harga jatuh di bawah harga penutupan hari dagangan terakhir dikurangkan hari sebelumnya's ATR (Average True Range), kedudukan ditutup. Jika ia berada dalam keadaan jual, apabila harga meningkat di atas harga penutupan hari dagangan terakhir ditambah hari sebelumnya ATR (Rentang Benar Purata), kedudukan ditutup.
fungsi utama: Ini berfungsi sebagai titik kemasukan pelaksanaan utama. Ia memeriksa sama ada nama pertukaran mengandungi
Secara ringkasnya, strategi ini terutamanya bergantung kepada carta K-line dan penunjuk teknikal untuk membuat keputusan membeli atau menjual sementara juga menggunakan strategi stop-loss & take-profit untuk menguruskan risiko. Sila ambil perhatian bahawa ini hanya berfungsi sebagai contoh strategi yang perlu disesuaikan & dioptimumkan mengikut keadaan pasaran & keperluan khusus semasa penggunaan sebenar.
PadaFMZ.COM, menggunakan bahasa JavaScript tidak memerlukan banyak baris kod, sebaliknya, ia melaksanakan model ini dengan mudah. Dan dengan bantuan fungsi KLineChart, perwakilan grafik kawasan carta K-line juga dapat dicapai dengan mudah. Reka bentuk strategi memenuhi pasaran spot mata wang kripto dengan menggunakan
Saya memilih tempoh backtesting secara rawak. Walaupun saya tidak kehilangan wang, saya juga tidak mengumpulkan keuntungan secara berterusan, dan isu penarikan adalah agak penting. Harus ada arah lain dan ruang untuk pengoptimuman untuk strategi. Mereka yang berminat boleh cuba menaik taraf strategi.
Melalui strategi, kita bukan sahaja belajar idea perdagangan agak tidak konvensional, tetapi juga belajar bagaimana untuk merangka diagram; mewakili kawasan yang dikelilingi oleh K-garis dan garis purata bergerak; merangka penunjuk KDJ dan lain-lain.
Strategi kawasan K-line adalah strategi perdagangan berdasarkan magnitud trend harga dan penunjuk KDJ. Ia membantu peniaga meramalkan trend pasaran dengan menganalisis kawasan antara garis K dan purata bergerak, serta perubahan sentimen membeli dan menjual. Walaupun terdapat risiko tertentu, strategi ini dapat menyediakan alat perdagangan yang kuat melalui pengoptimuman dan penyesuaian berterusan, membantu peniaga mengatasi lebih baik dengan turun naik pasaran. Selain itu, peniaga harus menyesuaikan parameter dan peraturan strategi dengan fleksibel mengikut situasi dan keadaan pasaran tertentu untuk mencapai prestasi perdagangan yang lebih baik.