
Chiến lược giao dịch chéo vàng ba đường trung bình là một chiến lược phân tích kỹ thuật điển hình. Chiến lược này sử dụng ba đường trung bình di chuyển với các độ dài khác nhau để nắm bắt xu hướng và giao dịch rủi ro thấp. Sản xuất tín hiệu mua khi đường trung bình di chuyển ngắn hạn vượt qua đường trung bình di chuyển trung bình và đường trung bình di chuyển trung bình cao hơn đường trung bình di chuyển dài hạn; Sản xuất tín hiệu bán khi đường trung bình di chuyển ngắn hạn vượt qua đường trung bình di chuyển trung bình và đường trung bình di chuyển trung bình thấp hơn đường trung bình di chuyển dài hạn.
Chiến lược Gold Cross Triple Line phụ thuộc chủ yếu vào ba đường trung bình di chuyển để xác định hướng của xu hướng. Đường trung bình di chuyển ngắn hạn có thể đáp ứng nhạy cảm với sự thay đổi giá; Đường trung bình di chuyển trung hạn cung cấp sự phán đoán xu hướng rõ ràng hơn; Đường trung bình di chuyển dài hạn lọc tiếng ồn thị trường, xác định hướng xu hướng dài hạn.
Khi trung bình di chuyển ngắn hạn vượt qua trung bình di chuyển trung bình, giá bắt đầu phá vỡ lên; tại thời điểm này, nếu trung bình di chuyển trung bình cao hơn trung bình di chuyển dài hạn, điều này cho thấy hiện tại đang tăng, vì vậy tại thời điểm này tạo ra tín hiệu mua.
Ngược lại, khi trung bình di chuyển ngắn hạn vượt qua trung bình di chuyển trung bình, thì giá bắt đầu phá vỡ xuống; tại thời điểm này, nếu trung bình di chuyển trung bình thấp hơn trung bình di chuyển dài hạn, thì hiện tại đang ở trong xu hướng giảm, vì vậy tại thời điểm này có tín hiệu bán.
Chiến lược này đồng thời thiết lập rào cản dừng lỗ. Sau khi giao dịch, giá dừng lỗ và giá dừng sẽ được tính dựa trên tỷ lệ dừng lỗ được thiết lập. Nếu giá chạm vào rào cản hoặc rào cản, vị trí sẽ được giải quyết.
Giải pháp: Điều chỉnh các tham số trung bình di chuyển để tránh các tín hiệu sai
Giải pháp: Điều chỉnh đúng tỷ lệ Stop Loss Stop, không quá lớn và không quá nhỏ
Giải pháp: Kiểm tra các tham số khác nhau để tìm ra sự kết hợp tốt nhất
Chiến lược giao chéo vàng ba đường trung bình có thể được tối ưu hóa theo các khía cạnh sau:
Có thể thử nghiệm các kết hợp trung bình di chuyển với độ dài khác nhau hoặc các loại khác nhau để có được hiệu quả giao dịch tốt nhất
Các chỉ số khác như KDJ, MACD và các chỉ số khác có thể được thêm vào chiến lược, để xác thực đa yếu tố, lọc các tín hiệu sai
Có thể rút ngắn chu kỳ trung bình di chuyển đối với các giống có biến động cao; kéo dài chu kỳ trung bình di chuyển đối với các giống có biến động thấp
Tự động đi qua các tham số thông qua thuật toán để nhanh chóng xác định các tham số tối ưu
Chiến lược giao chéo vàng ba đường trung bình là một chiến lược theo dõi xu hướng đơn giản và thực tế hơn. Nó sử dụng ba đường trung bình di chuyển để nắm bắt hướng xu hướng cùng lúc, đặt rủi ro kiểm soát dừng lỗ và có thể thu được lợi nhuận ổn định.
/*backtest
start: 2024-01-08 00:00:00
end: 2024-01-15 00:00:00
period: 5m
basePeriod: 1m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=3
strategy("Kozlod - 3 MA strategy with SL/PT", shorttitle="kozlod_3ma", overlay = true, default_qty_type = strategy.percent_of_equity, default_qty_value = 5)
//
// author: Kozlod
// date: 2018-03-25
//
////////////
// INPUTS //
////////////
ma_type = input(title = "MA Type", defval = "SMA", options = ['SMA', 'EMA', 'WMA', 'VWMA', 'HMA', 'SMMA', 'DEMA'])
short_ma_len = input(title = "Short MA Length", defval = 5, minval = 1)
short_ma_src = input(title = "Short MA Source", defval = close)
medium_ma_len = input(title = "Medium MA Length", defval = 20, minval = 2)
medium_ma_src = input(title = "Medium MA Source", defval = close)
long_ma_len = input(title = "Long MA Length", defval = 100, minval = 3)
long_ma_src = input(title = "Long MA Source", defval = close)
sl_lev_perc = input(title = "SL Level % (0 - Off)", type = float, defval = 0, minval = 0, step = 0.01)
pt_lev_perc = input(title = "PT Level % (0 - Off)", type = float, defval = 0, minval = 0, step = 0.01)
// Set initial values to 0
short_ma = 0.0
long_ma = 0.0
medium_ma = 0.0
// Simple Moving Average (SMA)
if ma_type == 'SMA'
short_ma := sma(short_ma_src, short_ma_len)
medium_ma := sma(medium_ma_src, medium_ma_len)
long_ma := sma(long_ma_src, long_ma_len)
// Exponential Moving Average (EMA)
if ma_type == 'EMA'
short_ma := ema(short_ma_src, short_ma_len)
medium_ma := ema(medium_ma_src, medium_ma_len)
long_ma := ema(long_ma_src, long_ma_len)
// Weighted Moving Average (WMA)
if ma_type == 'WMA'
short_ma := wma(short_ma_src, short_ma_len)
medium_ma := wma(medium_ma_src, medium_ma_len)
long_ma := wma(long_ma_src, long_ma_len)
// Hull Moving Average (HMA)
if ma_type == 'HMA'
short_ma := wma(2*wma(short_ma_src, short_ma_len / 2) - wma(short_ma_src, short_ma_len), round(sqrt(short_ma_len)))
medium_ma := wma(2*wma(medium_ma_src, medium_ma_len / 2) - wma(medium_ma_src, medium_ma_len), round(sqrt(medium_ma_len)))
long_ma := wma(2*wma(long_ma_src, long_ma_len / 2) - wma(long_ma_src, long_ma_len), round(sqrt(long_ma_len)))
// Volume-weighted Moving Average (VWMA)
if ma_type == 'VWMA'
short_ma := vwma(short_ma_src, short_ma_len)
medium_ma := vwma(medium_ma_src, medium_ma_len)
long_ma := vwma(long_ma_src, long_ma_len)
// Smoothed Moving Average (SMMA)
if ma_type == 'SMMA'
short_ma := na(short_ma[1]) ? sma(short_ma_src, short_ma_len) : (short_ma[1] * (short_ma_len - 1) + short_ma_src) / short_ma_len
medium_ma := na(medium_ma[1]) ? sma(medium_ma_src, medium_ma_len) : (medium_ma[1] * (medium_ma_len - 1) + medium_ma_src) / medium_ma_len
long_ma := na(long_ma[1]) ? sma(long_ma_src, long_ma_len) : (long_ma[1] * (long_ma_len - 1) + long_ma_src) / long_ma_len
// Double Exponential Moving Average (DEMA)
if ma_type == 'DEMA'
e1_short = ema(short_ma_src , short_ma_len)
e1_medium = ema(medium_ma_src, medium_ma_len)
e1_long = ema(long_ma_src, long_ma_len)
short_ma := 2 * e1_short - ema(e1_short, short_ma_len)
medium_ma := 2 * e1_medium - ema(e1_medium, medium_ma_len)
long_ma := 2 * e1_long - ema(e1_long, long_ma_len)
/////////////
// SIGNALS //
/////////////
long_signal = crossover( short_ma, medium_ma) and medium_ma > long_ma
short_signal = crossunder(short_ma, medium_ma) and medium_ma < long_ma
// Calculate PT/SL levels
// Initial values
last_signal = 0
prev_tr_price = 0.0
pt_level = 0.0
sl_level = 0.0
// Calculate previous trade price
prev_tr_price := (long_signal[1] and nz(last_signal[2]) != 1) or (short_signal[1] and nz(last_signal[2]) != -1) ? open : nz(last_signal[1]) != 0 ? prev_tr_price[1] : na
// Calculate SL/PT levels
pt_level := nz(last_signal[1]) == 1 ? prev_tr_price * (1 + pt_lev_perc / 100) : nz(last_signal[1]) == -1 ? prev_tr_price * (1 - pt_lev_perc / 100) : na
sl_level := nz(last_signal[1]) == 1 ? prev_tr_price * (1 - sl_lev_perc / 100) : nz(last_signal[1]) == -1 ? prev_tr_price * (1 + sl_lev_perc / 100) : na
// Calculate if price hit sl/pt
long_hit_pt = pt_lev_perc > 0 and nz(last_signal[1]) == 1 and close >= pt_level
long_hit_sl = sl_lev_perc > 0 and nz(last_signal[1]) == 1 and close <= sl_level
short_hit_pt = pt_lev_perc > 0 and nz(last_signal[1]) == -1 and close <= pt_level
short_hit_sl = sl_lev_perc > 0 and nz(last_signal[1]) == -1 and close >= sl_level
// What is last active trade?
last_signal := long_signal ? 1 : short_signal ? -1 : long_hit_pt or long_hit_sl or short_hit_pt or short_hit_sl ? 0 : nz(last_signal[1])
//////////////
// PLOTTING //
//////////////
// Plot MAs
plot(short_ma, color = red, linewidth = 2)
plot(medium_ma, color = green, linewidth = 2)
plot(long_ma, color = yellow, linewidth = 2)
// Plot Levels
plotshape(prev_tr_price, style = shape.cross, color = gray, location = location.absolute, size = size.small)
plotshape(sl_lev_perc > 0 ? sl_level : na, style = shape.cross, color = red, location = location.absolute, size = size.small)
plotshape(pt_lev_perc > 0 ? pt_level : na, style = shape.cross, color = green, location = location.absolute, size = size.small)
//////////////
// STRATEGY //
//////////////
strategy.entry("long", true, when = long_signal)
strategy.entry("short", false, when = short_signal)
strategy.close("long", when = long_hit_pt or long_hit_sl)
strategy.close("short", when = short_hit_pt or short_hit_sl)