Nhìn vào một ý tưởng giao dịch không đáng tin cậy về chiến lược giao dịch diện tích đường dây K, trong bài viết này, chúng tôi cùng nhau khám phá ý tưởng này và cố gắng thực hiện kịch bản này.
K-Line Area Strategy là một chiến lược giao dịch dựa trên mối quan hệ giữa K-Line và đường trung bình. Ý tưởng chính của nó là dự đoán xu hướng có thể xảy ra của giá cổ phiếu bằng cách phân tích mức độ và sự thay đổi của xu hướng giá, và chuyển đổi tâm lý mua, do đó quyết định thời điểm mở và ra khỏi thị trường. Chiến lược này dựa trên diện tích giữa K-Line và đường trung bình, và số lượng các chỉ số KDJ, để tạo ra các tín hiệu giao dịch đa đầu và không đầu.
Vùng K là không gian giữa đường K giá và đường đồng xu, được tính bằng cách trừ giá đóng cửa của mỗi Bar ra khỏi giá trung bình, sau đó tổng hợp. Khi giá tăng xu hướng lớn, diện tích đường K sẽ lớn hơn trong thời gian dài, nhưng khi thị trường rung động hoặc đảo ngược sau khi rung động, diện tích đường K sẽ nhỏ hơn. Theo nguyên tắc phản hồi của động vật, xu hướng tăng càng lớn, thời gian càng dài, diện tích đường K tương ứng càng lớn, khả năng đảo ngược càng lớn, giống như một cái bồn tăng, kéo dài hơn, độ nổi bật càng cao. Vì vậy, đặt một ngưỡng trên diện tích đường K, khi đạt đến ngưỡng này, giá có thể đi qua xu hướng và có khả năng đảo ngược hơn.
Để xác nhận thêm xu hướng sắp đảo ngược, giới thiệu chỉ số KDJ, được sử dụng để đánh giá sự chuyển đổi tâm lý mua bán. Mức độ của chiến lược này và thiết lập các giá trị của chỉ số KDJ có thể được điều chỉnh theo tình huống và nhu cầu cụ thể để tăng độ chính xác của chiến lược.
Lợi thế của chiến lược K-Line Area là nó kết hợp với mức độ và sự thay đổi của xu hướng giá, và chuyển đổi tâm lý mua bán, cung cấp một chiến lược giao dịch định lượng tương đối hoàn chỉnh.
Mặc dù chiến lược K-Line có một số lợi thế, nhưng nó cũng có một số rủi ro, bao gồm:
Để tối ưu hóa chiến lược diện tích đường K, bạn có thể xem xét các hướng sau:
Tính diện tích đường K
Các tín hiệu đầu tư đa đầu:
(1) Lợi K đường phẳng với xu hướng giảm đạt ngưỡng, trước khi thành lập
(2) Chỉ số KDJ lớn hơn 80
Đánh dấu đầu tư trống:
(1) Các đường phẳng K có xu hướng tăng đã đạt được ngưỡng, trước khi được hình thành
(2) Chỉ số KDJ nhỏ hơn 20
Nhiều đầu / không đầu: ATR theo dõi dừng lỗ và dừng đòn
Thực hiện mã
// 参数
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)
}
}
Những người tham gia vào cuộc tấn công này đã bị giết chết.
Đầu tiên, một số biến và tham số toàn cầu được định nghĩa, bao gồm:
Các tham số chiến lược
Các biến số toàn cầu
Chức năng tính toán
Chức năng xoay chính
Chức năng onTick: Đây là chức năng thực hiện chính sách chính, sau đây là các hoạt động trong chức năng:
a. Nhận dữ liệu K-phần mới nhất và đảm bảo số lượng K-phần không nhỏ hơn maPeriod, nếu không ghi trạng thái và trả về.
b. Tính toán các chỉ số động trung bình ma và ATR atr, và chỉ số KDJ.
c. Nhận thông tin diện tích từ areaInfo, chỉ mục K cuối cùng được đi ngang qua và chỉ mục K cuối cùng được đi ngang qua.
d. Sử dụng đối tượng biểu đồ đường K c để vẽ đường K và đường chỉ số, đồng thời điền màu khác nhau dựa trên mối quan hệ giữa giá và đường trung bình di chuyển.
e. Thời điểm mua và bán được xác định theo điều kiện:
Nếu tradeState là NULL, và diện tích nhỏ hơn -threshold và giá trị K của KDJ lớn hơn 70, hãy thực hiện buy. Nếu tradeState là NULL, và diện tích lớn hơn threshold và KDJ của KDJ nhỏ hơn 30, hãy thực hiện sell. f. Thiết lập các điều kiện dừng lỗ và dừng đà, nếu điều kiện đạt được, hòa vốn:
Nếu là mua, khi giá thấp hơn giá đóng cửa của ngày giao dịch trước trừ ATR của ngày trước, ngang hàng.
Nếu là bán, khi giá cao hơn giá đóng cửa của ngày giao dịch trước cộng với ATR của ngày trước, ngang hàng.
hàm main: Đây là đầu vào thực thi chính, kiểm tra tên giao dịch có chứa hàm
Nhìn chung, chiến lược này chủ yếu dựa vào các biểu đồ K-line và các chỉ số kỹ thuật để đưa ra quyết định mua bán, đồng thời sử dụng các chiến lược dừng lỗ và dừng đà để quản lý rủi ro. Xin lưu ý rằng đây chỉ là một chiến lược ví dụ và khi sử dụng thực tế, cần phải điều chỉnh và tối ưu hóa theo tình hình thị trường và nhu cầu cụ thể.
在FMZ.COM上使用JavaScript语言没有用多少行代码,很简单的就实现了这个模型。并且使用KLineChart函数很容易实现了K线面积的图形表示。策略设计用于加密货币现货市场,使用了「数字货币现货交易类库」模板,使用模板封装的函数下单,也是非常简单易用、易懂。
Nếu bạn chọn một khoảng thời gian xem xét lại, mặc dù không mất tiền nhưng cũng không tích lũy lợi nhuận liên tục, vấn đề rút lại vẫn còn khá lớn.
Thông qua chiến lược này, chúng tôi đã học được một ý tưởng giao dịch tương tự, nhưng cũng học được cách vẽ biểu đồ; biểu thị diện tích bao quanh đường K và đường ngang; vẽ chỉ số KDJ, v.v.
Chiến lược K-Line Area là một chiến lược giao dịch dựa trên chiều rộng xu hướng giá và chỉ số KDJ, nó giúp các nhà giao dịch dự đoán xu hướng thị trường bằng cách phân tích diện tích và chuyển đổi tâm trạng mua bán giữa đường K và đường trung bình. Mặc dù có một số rủi ro, nhưng thông qua tối ưu hóa và điều chỉnh liên tục, chiến lược này có thể cung cấp một công cụ giao dịch mạnh mẽ để giúp các nhà giao dịch đối phó tốt hơn với biến động thị trường. Quan trọng hơn, các nhà giao dịch nên điều chỉnh các tham số và quy tắc của chiến lược một cách linh hoạt để đạt được hiệu suất giao dịch tốt hơn, tùy thuộc vào hoàn cảnh và điều kiện thị trường cụ thể.