Sức mạnh chiến lược đột phá K-line


Ngày tạo: 2023-10-07 15:59:26 sửa đổi lần cuối: 2023-10-07 15:59:26
sao chép: 0 Số nhấp chuột: 632
1
tập trung vào
1617
Người theo dõi

Tổng quan

Chiến lược phá vỡ đường K là một chiến lược giao dịch định lượng sử dụng hình thức đường K và chỉ số đường K để thực hiện mua và bán cổ phiếu. Chiến lược này kết hợp nhiều chỉ số kỹ thuật để xác định xu hướng giá cổ phiếu và tín hiệu đường K, tạo vị trí tại điểm phá vỡ, thiết lập lệnh dừng lỗ và rút lui, có thể kiểm soát rủi ro giao dịch một cách hiệu quả.

Nguyên tắc chiến lược

Chiến lược đột phá K-Line được xây dựng dựa trên các điểm sau:

  1. Sử dụng chỉ số kênh hàng hóa (CCI) để xác định liệu giá cổ phiếu có nằm trong khu vực mua bán quá mức không. Khi CCI vượt qua 100 được coi là tín hiệu mua quá mức và khi CCI vượt qua 100 được coi là tín hiệu bán quá mức.

  2. Xác định hình dạng đường K, nhận ra tín hiệu phá vỡ. Khi có giá đóng cửa cao hơn giá mở cửa, đường K màu đỏ được đánh giá là xu hướng tăng, và đường K màu xanh lá cây có giá đóng cửa thấp hơn giá mở cửa được đánh giá là xu hướng giảm.

  3. Kết hợp các chỉ số giao dịch, chỉ khi số lượng giao dịch tăng lên, bạn sẽ được xem xét để phát ra tín hiệu mua và bán.

  4. Khi xác định xu hướng tăng và chỉ số CCI cho thấy quá bán, hãy mua. Khi xác định xu hướng giảm và chỉ số CCI cho thấy quá mua, hãy bán.

  5. Thiết lập điểm dừng lỗ. Sau khi mua, thiết lập một tỷ lệ dừng lỗ để kiểm soát rủi ro đi xuống, đồng thời cũng thiết lập một tỷ lệ dừng lỗ để khóa lợi nhuận.

Cụ thể, chiến lược này sử dụng chỉ số CCI để đánh giá quá mua quá bán, K-line để đánh giá xu hướng xu hướng, và chỉ số volume để đánh giá. Khi điều kiện phù hợp, thực hiện hoạt động longing (mua nhiều đầu mở) hoặc shorting (bán nhiều đầu mở). Kiểm soát rủi ro và khóa lợi nhuận bằng cách dừng lỗ.

Phân tích lợi thế

Chiến lược đột phá K-Line có những ưu điểm sau:

  1. Kết hợp nhiều chỉ số để đưa ra quyết định, làm cho tín hiệu giao dịch đáng tin cậy hơn. Chỉ số CCI có thể xác định điểm mua và bán, đường K xác định hướng xu hướng, và khối lượng phản ánh sức mạnh của thị trường.

  2. Sử dụng hình dạng đường K hỗ trợ định hướng xu hướng, có thể nắm bắt chính xác hơn cơ hội biến động giá. Ví dụ: đường K đỏ kết hợp với CCI bán quá mức là thời gian mua.

  3. Thiết lập hệ thống dừng lỗ có thể kiểm soát rủi ro hiệu quả, ngăn chặn tổn thất mở rộng và có thể khóa lợi nhuận.

  4. Chỉ xem xét tín hiệu giao dịch khi khối lượng giao dịch tăng lên, có thể lọc các tín hiệu giả.

  5. Chiến lược được thiết kế rõ ràng và dễ hiểu, các tham số được thiết lập linh hoạt, có thể được tối ưu hóa cho các cổ phiếu và môi trường thị trường khác nhau.

  6. Các chiến lược có thể được tối ưu hóa để mở rộng, chẳng hạn như thêm các yếu tố, học máy, v.v., để tăng sự ổn định và lợi nhuận của chiến lược.

Phân tích rủi ro

Chiến lược phá vỡ đường K cũng có những rủi ro sau:

  1. Các tín hiệu mua bán của chỉ số CCI có thể bị trễ, dẫn đến việc bỏ lỡ điểm đầu vào tốt nhất. Các tham số của CCI có thể được tối ưu hóa thích hợp để tăng độ nhạy.

  2. Tín hiệu phá vỡ giả của phán đoán hình dạng K có thể gây ra tổn thất không cần thiết. Bạn có thể thêm nhiều chỉ số để xác nhận hoặc điều chỉnh tỷ lệ dừng lỗ.

  3. Việc tăng khối lượng giao dịch cũng có thể phản ánh sự thao túng thị trường, cần chú ý đến mối quan hệ giữa khối lượng giá và tránh đi vào bẫy.

  4. Cài đặt dừng lỗ tĩnh có thể dừng lỗ quá sớm hoặc bỏ lỡ các trường hợp lớn hơn. Bạn có thể cân nhắc điều chỉnh tỷ lệ dừng lỗ động.

  5. Các tham số được thiết lập cho từng cổ phiếu không nhất thiết phải được áp dụng cho các cổ phiếu khác, cần phải được thử nghiệm và tối ưu hóa theo các đặc điểm của các cổ phiếu khác nhau.

  6. Dữ liệu phản hồi dài hạn không nhất thiết phải đại diện cho hoạt động của đĩa thực, trong đó cần chú ý đến rủi ro của đĩa thực.

Hướng tối ưu hóa

Chiến lược này có thể được xem xét để tối ưu hóa từ các khía cạnh sau:

  1. Tối ưu hóa các tham số CCI, nâng cao tính nhạy cảm của chỉ số CCI đối với điểm mua bán.

  2. Thêm các chỉ số phụ trợ khác, chẳng hạn như MACD, Bollinger Band, để tăng độ chính xác của tín hiệu mua và bán.

  3. Tham gia thuật toán học máy, sử dụng dữ liệu lịch sử để dự đoán điểm mua và bán.

  4. Sử dụng phương pháp dừng lỗ động, điều chỉnh tỷ lệ dừng lỗ theo mức độ biến động của thị trường.

  5. Tối ưu hóa logic phán đoán của khối lượng giao dịch lớn hơn, ngăn chặn giá lệch.

  6. Cài đặt tham số tối ưu hóa, tăng sự ổn định chiến lược theo các đặc điểm của cổ phiếu và môi trường thị trường khác nhau.

  7. Thêm một cơ chế theo dõi xu hướng để tối ưu hóa chiến lược trong các giai đoạn khác nhau.

  8. Cải thiện cấu trúc chiến lược, giới thiệu quản lý mô-đun, cải thiện tính linh hoạt và khả năng mở rộng mã.

Tóm tắt

Chiến lược phá vỡ đường K là một chiến lược giao dịch đường ngắn tương đối đơn giản và rõ ràng. Nó kết hợp các lợi thế của nhiều chỉ số kỹ thuật thường dùng, logic phán đoán rõ ràng và dễ hiểu, kiểm soát rủi ro bằng cách dừng lỗ. Chiến lược này có thể được tối ưu hóa linh hoạt theo nhu cầu của mình để nắm bắt các điểm đảo ngược giá đường ngắn, theo dõi xu hướng trung hạn.

Mã nguồn chiến lược
/*backtest
start: 2023-09-06 00:00:00
end: 2023-10-06 00:00:00
period: 2h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © vikris

//@version=4
strategy("[VJ]War Machine PAT Intra", overlay=true, calc_on_every_tick = false)

// ********** Strategy inputs - Start **********

// Used for intraday handling
// Session value should be from market start to the time you want to square-off 
// your intraday strategy
// Important: The end time should be at least 2 minutes before the intraday
// square-off time set by your broker
var i_marketSession = input(title="Market session", type=input.session, 
     defval="0915-1455", confirm=true)

// Make inputs that set the take profit % (optional)
longProfitPerc = input(title="Long Take Profit (%)",
     type=input.float, minval=0.0, step=0.1, defval=5.0) * 0.01

shortProfitPerc = input(title="Short Take Profit (%)",
     type=input.float, minval=0.0, step=0.1, defval=5.0) * 0.01
     
// Set stop loss level with input options (optional)
longLossPerc = input(title="Long Stop Loss (%)",
     type=input.float, minval=0.0, step=0.1, defval=5.0) * 0.01

shortLossPerc = input(title="Short Stop Loss (%)",
     type=input.float, minval=0.0, step=0.1, defval=5.0) * 0.01    

trendFactor = input(title="Trend Factor(Lower means trending)", type=input.integer, minval=1, step=1, defval=50)

oversold = input(title="Oversold", type=input.integer, minval=1, step=1, defval=25)

overbought = input(title="Overbought", type=input.integer, minval=1, step=1, defval=75)

// ********** Strategy inputs - End **********


// ********** Supporting functions - Start **********

// A function to check whether the bar or period is in intraday session
barInSession(sess) => time(timeframe.period, sess) != 0
// Figure out take profit price
longExitPrice  = strategy.position_avg_price * (1 + longProfitPerc)
shortExitPrice = strategy.position_avg_price * (1 - shortProfitPerc)

// Determine stop loss price
longStopPrice  = strategy.position_avg_price * (1 - longLossPerc)
shortStopPrice = strategy.position_avg_price * (1 + shortLossPerc)


// ********** Supporting functions - End **********


// ********** Strategy - Start **********
// See if intraday session is active
bool intradaySession = barInSession(i_marketSession)

// Trade only if intraday session is active

//=================Strategy logic goes in here===========================
//Vol Confirmation
vol = volume > volume[1]

//Engulfing candle confirm
bullishEC = close > open[1] and close[1] < open[1]
bearishEC = close < open[1] and close[1] > open[1]

//Candles colors
greenCandle = (close > open)
redCandle = (close < open)

length = input(title="Length", type=input.integer, defval=14, minval=1, maxval=2000)
src = hlc3
upper = sum(volume * (change(src) <= 0 ? 0 : src), length)
lower = sum(volume * (change(src) >= 0 ? 0 : src), length)
_rsi(upper, lower) =>
    100.0 - (100.0 / (1.0 + upper / lower))
mf = _rsi(upper, lower)
ci = 100 * log10(sum(atr(1), length) / (highest(length) - lowest(length))) / log10(length)

//tradeSignal = ((rsiOS or rsiOS[1]) and bullishEC) or ((rsiOB or rsiOB[1]) and bearishEC)




//Final Long/Short Condition
longCondition =  redCandle and mf < oversold and ci <trendFactor and vol
shortCondition = greenCandle and mf >overbought and ci <trendFactor and vol
 
//Long Strategy - buy condition and exits with Take profit and SL
if (longCondition and intradaySession)
    stop_level = longStopPrice
    profit_level = longExitPrice
    strategy.entry("My Long Entry Id", strategy.long)
    strategy.exit("TP/SL", "My Long Entry Id", stop=stop_level, limit=profit_level)


//Short Strategy - sell condition and exits with Take profit and SL
if (shortCondition and intradaySession)
    stop_level = shortStopPrice
    profit_level = shortExitPrice
    strategy.entry("My Short Entry Id", strategy.short)
    strategy.exit("TP/SL", "My Short Entry Id", stop=stop_level, limit=profit_level)
 
 
// Square-off position (when session is over and position is open)
squareOff = (not intradaySession) and (strategy.position_size != 0)
strategy.close_all(when = squareOff, comment = "Square-off")

// ********** Strategy - End **********