
Chiến lược theo dõi xu hướng của Golden Cross Celtic Channel là một chiến lược chỉ giao dịch theo hướng xu hướng. Nó kết hợp đường trung bình di chuyển Golden Cross và Celtic Channel làm tín hiệu đầu vào để nắm bắt xu hướng.
Chiến lược này sử dụng hai đường trung bình di chuyển, tức là đường trung bình di chuyển ngắn hạn và đường trung bình di chuyển dài hạn, tạo thành đường giao thoa vàng và đường giao thoa chết để đánh giá xu hướng. Đồng thời, nó sử dụng nhân định nghĩa của người dùng để vẽ đường đua lên và xuống của kênh Celtic, tạo ra tín hiệu giao dịch khi giá vượt qua kênh.
Cụ thể, chiến lược này sẽ đánh giá trước tiên liệu đường trung bình di chuyển dài hạn có nằm trên đường trung bình di chuyển ngắn hạn hay không, và nếu vậy, nó sẽ được chéo cho vàng và đánh giá là xu hướng lên; nếu đường trung bình di chuyển ngắn hạn nằm dưới đường trung bình di chuyển dài hạn, nó sẽ được chéo cho cái chết và đánh giá là xu hướng xuống.
Dựa trên phán đoán xu hướng, nếu giá phá vỡ đường ray, sẽ tạo ra tín hiệu nhiều; Nếu giá rơi xuống đường ray, sẽ tạo ra tín hiệu ngắn. Người dùng có thể tự điều chỉnh chu kỳ trung bình di chuyển và chiều rộng của kênh, do đó điều chỉnh các tham số của chiến lược.
Sau khi tham gia, chiến lược sử dụng nhân số ATR Stop Loss Stop Loss của người dùng để thiết lập điểm dừng. Đồng thời, chiến lược cũng cung cấp các điều kiện dừng và dừng phá vỡ bổ sung để kiểm soát vị trí với sự linh hoạt hơn.
Chiến lược này kết hợp lợi thế của theo dõi xu hướng và phá vỡ kênh, có thể xác định hiệu quả xu hướng thị trường và cơ hội nắm bắt xu hướng. Các lợi thế cụ thể như sau:
Sử dụng giao dịch vàng để đánh giá xu hướng, bạn có thể lọc hiệu quả các giao dịch ồn không phù hợp với xu hướng lớn.
Sự đột phá của Celtic Channel kết hợp với định hướng xu hướng có thể cải thiện độ chính xác thời gian ra thị trường.
Cơ chế dừng lỗ có thể khóa lợi nhuận và chủ động kiểm soát rủi ro.
Các tham số chiến lược có thể được điều chỉnh linh hoạt để phù hợp với các giống và môi trường thị trường khác nhau.
Có thể thực hiện nhiều lần đồng thời để mở rộng phạm vi áp dụng chiến lược.
Mặc dù chiến lược này có nhiều ưu điểm, nhưng cũng có một số rủi ro cần lưu ý:
Có một số rủi ro trong việc bỏ lỡ cơ hội quay trở lại.
Nếu có sự thay đổi trong xu hướng, có thể có nguy cơ thua lỗ ngược.
Thiết lập tham số không đúng có thể dẫn đến giao dịch quá thoải mái hoặc quá thường xuyên.
Có một số rủi ro liên quan đến việc ngủ qua đêm.
Có một số rủi ro phù hợp với đường cong.
Đối với điều này, bạn có thể giảm rủi ro bằng cách tối ưu hóa tham số, điều chỉnh chu kỳ trung bình di chuyển theo thời gian thích hợp hoặc thu nhỏ kích thước vị trí phù hợp.
Chiến lược này có thể được tối ưu hóa hơn nữa:
Có thể xem xét thêm các chỉ số phán đoán, hình thành mô hình đa yếu tố, tăng độ chính xác chiến lược. Ví dụ như thêm MACD, RSI, v.v.
Các tham số có thể được tối ưu hóa dựa trên học máy để phù hợp hơn với các môi trường thị trường khác nhau.
Có thể xem xét động điều chỉnh điều kiện dừng lỗ, theo đuổi lợi nhuận lớn hơn với điều kiện đảm bảo lợi nhuận.
Kích thước vị trí có thể được điều chỉnh theo sự thay đổi động của tỷ lệ biến động.
Nghiên cứu các tham số ưa thích của các giống khác nhau, tạo ra các tham số phù hợp với các giống khác nhau.
Thêm cơ chế giảm tần số giao dịch để giảm tác động của phí giao dịch.
Chiến lược theo dõi xu hướng kênh Celtic Gold Cross là một chiến lược theo dõi xu hướng ổn định và đáng tin cậy hơn. Nó kết hợp lợi thế của phán đoán xu hướng và đột phá kênh, có thể xác định hiệu quả hướng xu hướng thị trường và chọn cơ hội giao dịch có xác suất cao.
/*backtest
start: 2022-10-26 00:00:00
end: 2023-11-01 00:00:00
period: 1d
basePeriod: 1h
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/
// © OversoldPOS
//@version=5
// strategy("Keltner Channel Strategy by OversoldPOS", overlay=true,initial_capital = 100000,default_qty_type = strategy.percent_of_equity,default_qty_value = 10, commission_type = strategy.commission.cash_per_order, commission_value = 7)
// Parameters
length = input(21, title="MA Length")
Entrymult = input(1, title="Entry ATR")
profit_mult = input(4, title="Profit Taker")
exit_mult = input(-1, title="Exit ATR")
// Moving Average Type Input
ma_type = input.string("SMA", title="Moving Average Type", options=["SMA", "EMA", "WMA"])
// Calculate Keltner Channels for different ATR multiples
atr_value = ta.atr(length)
basis = switch ma_type
"SMA" => ta.sma(close, length)
"EMA" => ta.ema(close, length)
"WMA" => ta.wma(close, length)
//
EntryKeltLong = basis + Entrymult * ta.atr(10)
EntryKeltShort = basis - Entrymult * ta.atr(10)
upper_channel1 = basis + 1 * ta.atr(10)
lower_channel1 = basis - 1 * ta.atr(10)
upper_channel2 = basis + 2 * ta.atr(10)
lower_channel2 = basis - 2 * ta.atr(10)
upper_channel3 = basis + 3 * ta.atr(10)
lower_channel3 = basis - 3 * ta.atr(10)
upper_channel4 = basis + 4 * ta.atr(10)
lower_channel4 = basis - 4 * ta.atr(10)
// Entry condition parameters
long_entry_condition = input(true, title="Long Positions")
short_entry_condition = input(true, title="Enable Short Positions")
// Additional conditions for long and short entries
is_long_entry = ta.ema(close, 20) > ta.ema(close, 50)
is_short_entry = ta.ema(close, 20) < ta.ema(close, 50)
// Additional conditions for long and short entries
MAShort = input(50, title="Short MA for Golden Cross")
MALong = input(200, title="Long MA for Golden Cross")
is_long_entry2 = ta.ema(close, MAShort) > ta.ema(close, MALong)
is_short_entry2 = ta.ema(close, MAShort) < ta.ema(close, MALong)
// Exit condition parameters
long_exit_condition1_enabled = input(true, title="Enable Long Profit Taker")
long_exit_condition2_enabled = input(true, title="Enable Long Stop")
short_exit_condition1_enabled = input(true, title="Enable Short Profit Taker")
short_exit_condition2_enabled = input(true, title="Enable Short Stop")
// Take Profit condition parameters
take_profit_enabled = input(true, title="Enable Take Profit Condition")
Takeprofit = basis + profit_mult * atr_value
STakeprofit = basis - profit_mult * atr_value
// Long entry condition
long_condition = long_entry_condition and ta.crossover(close, EntryKeltLong) and is_long_entry2
// Short entry condition
short_condition = short_entry_condition and ta.crossunder(close, EntryKeltShort) and is_short_entry2
// Exit conditions
long_exit_condition1 = long_exit_condition1_enabled and close > Takeprofit
long_exit_condition2 = long_exit_condition2_enabled and close < basis + exit_mult * atr_value
short_exit_condition1 = short_exit_condition1_enabled and close < STakeprofit
short_exit_condition2 = short_exit_condition2_enabled and close > basis - exit_mult * atr_value
// Strategy logic
if (long_condition)
strategy.entry("Long", strategy.long)
if (short_condition)
strategy.entry("Short", strategy.short)
if (long_exit_condition1 or long_exit_condition2)
strategy.close("Long")
if (short_exit_condition1 or short_exit_condition2)
strategy.close("Short")
// Moving Averages
var float MA1 = na
var float MA2 = na
if (ma_type == "SMA")
MA1 := ta.sma(close, MAShort)
MA2 := ta.sma(close, MALong)
else if (ma_type == "EMA")
MA1 := ta.ema(close, MAShort)
MA2 := ta.ema(close, MALong)
else if (ma_type == "WMA")
MA1 := ta.wma(close, MAShort)
MA2 := ta.wma(close, MALong)
// Plotting Keltner Channels with adjusted transparency
transparentColor = color.rgb(255, 255, 255, 56)
plot(upper_channel1, color=transparentColor, title="Upper Channel 1")
plot(lower_channel1, color=transparentColor, title="Lower Channel 1")
plot(upper_channel2, color=transparentColor, title="Upper Channel 2")
plot(lower_channel2, color=transparentColor, title="Lower Channel 2")
plot(upper_channel3, color=transparentColor, title="Upper Channel 3")
plot(lower_channel3, color=transparentColor, title="Lower Channel 3")
plot(upper_channel4, color=transparentColor, title="Upper Channel 4")
plot(lower_channel4, color=transparentColor, title="Lower Channel 4")
plot(basis, color=color.white, title="Basis")
plot(MA1, color=color.rgb(4, 248, 216), linewidth=2, title="Middle MA")
plot(MA2, color=color.rgb(220, 7, 248), linewidth=2, title="Long MA")