Choppiness K-line Breakthrough chiến lược

Tác giả:ChaoZhang, Ngày: 2023-10-07 15:59:26
Tags:

Tổng quan

Chiến lược đột phá đường K của Choppiness là một chiến lược giao dịch định lượng sử dụng các mẫu đường K và các chỉ số động lực để xác định các bước vào và ra khỏi giao dịch chứng khoán. Chiến lược này kết hợp nhiều chỉ số kỹ thuật để xác định xu hướng giá và các tín hiệu động lực, nắm giữ các vị trí tại các điểm đột phá và thiết lập dừng lỗ và lấy lợi nhuận để kiểm soát hiệu quả rủi ro giao dịch.

Chiến lược logic

Các khái niệm cốt lõi của Chiến lược đột phá dòng K của Choppiness là:

  1. Sử dụng chỉ số kênh hàng hóa (CCI) để xác định xem giá có nằm trong khu vực mua quá mức hay bán quá mức.

  2. Xác định các mô hình đường K để phát hiện tín hiệu đột phá. Một đường K màu đỏ với mức đóng cao hơn mở cho thấy xu hướng tăng, trong khi một đường K màu xanh lá cây đóng thấp hơn mở cho thấy xu hướng giảm.

  3. Bao gồm khối lượng giao dịch để chỉ xem xét tín hiệu mua và bán khi khối lượng tăng vọt.

  4. Lấy các vị trí dài khi một xu hướng tăng được xác định và CCI cho thấy quá bán.

  5. Thiết lập điểm dừng lỗ và lấy lợi nhuận để kiểm soát rủi ro và khóa lợi nhuận.

Đặc biệt, chiến lược sử dụng CCI để phân tích quá mua / quá bán, mô hình đường K cho hướng xu hướng và khối lượng cho động lực. Nó đi vào các vị trí dài hoặc ngắn khi các tiêu chí được đáp ứng.

Phân tích lợi thế

Choppiness K-line Breakthrough Strategy có những lợi thế sau:

  1. Kết hợp nhiều chỉ số cải thiện độ tin cậy của tín hiệu giao dịch. CCI xác định các khu vực giao dịch, đường K xác định hướng xu hướng và khối lượng phản ánh đà thị trường.

  2. Sử dụng các mô hình đường K giúp xác định chính xác sự đảo ngược xu hướng.

  3. Dừng lỗ và lấy lợi nhuận có hiệu quả kiểm soát rủi ro và khóa lợi nhuận.

  4. Chỉ xem xét các tín hiệu về âm lượng tăng cao để tránh các tín hiệu sai.

  5. Logic chiến lược rõ ràng và các tham số linh hoạt để tối ưu hóa trên các cổ phiếu và môi trường thị trường.

  6. Chiến lược có thể được cải thiện hơn nữa thông qua nhiều yếu tố hơn, học máy vv, tăng tính ổn định và lợi nhuận.

Phân tích rủi ro

Các rủi ro tiềm ẩn của chiến lược bao gồm:

  1. Các tín hiệu CCI có thể bị chậm trễ, gây ra các điểm vào tối ưu bị bỏ qua. Các thông số CCI có thể được điều chỉnh để có độ nhạy cao hơn.

  2. Các sự đột phá giả trong các mô hình đường K có thể gây ra tổn thất không cần thiết.

  3. Sự gia tăng về khối lượng cũng có thể được thao túng, vì vậy điều quan trọng là phải theo dõi sự khác biệt về khối lượng-giá.

  4. Chế độ dừng lỗ / lấy lợi nhuận tĩnh có thể thoát sớm hoặc bỏ lỡ xu hướng tiếp theo.

  5. Các thông số được trang bị cho một cổ phiếu có thể không phù hợp với các cổ phiếu khác.

  6. Kết quả thử nghiệm có thể không thể hiện hiệu suất trực tiếp.

Hướng dẫn tối ưu hóa

Chiến lược có thể được tăng cường thông qua:

  1. Tối ưu hóa các thông số CCI để tạo tín hiệu nhanh hơn.

  2. Thêm thêm các chỉ số như MACD, Bollinger Bands để cải thiện độ chính xác tín hiệu.

  3. Sử dụng các mô hình máy học được đào tạo trên dữ liệu lịch sử để dự đoán các điểm nhập / xuất.

  4. Sử dụng stop loss động và lấy lợi nhuận dựa trên biến động thị trường.

  5. Cải thiện logic tăng khối lượng để phát hiện sự chênh lệch giá khối lượng.

  6. Điều chỉnh các tham số cho các cổ phiếu và chế độ thị trường khác nhau để cải thiện sự ổn định.

  7. Tích hợp các cơ chế theo xu hướng để hiệu suất tốt hơn trên tất cả các giai đoạn thị trường.

  8. Mô-đun hóa chiến lược cho sự linh hoạt và mở rộng hơn.

Kết luận

Choppiness K-line Breakthrough Strategy là một chiến lược giao dịch ngắn hạn tương đối đơn giản. Nó kết hợp các chỉ số kỹ thuật chung cho logic rõ ràng và kiểm soát rủi ro thông qua dừng lỗ và lấy lợi nhuận. Chiến lược có thể được tối ưu hóa linh hoạt dựa trên nhu cầu để nắm bắt sự đảo ngược ngắn hạn và xu hướng trung hạn.


/*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 **********

Thêm nữa