Chiến lược giao dịch đột phá có khả năng cao dựa trên cân bằng áp lực

Tác giả:ChaoZhang, Ngày: 2023-11-13 11:40:53
Tags:

img

Tổng quan

Chiến lược này sử dụng sự kết hợp của nhiều chỉ số để xác định hướng xu hướng và cơ hội giao dịch, áp dụng phương pháp cân bằng áp lực để tăng tỷ lệ thắng của các giao dịch.

Chiến lược logic

  1. Sử dụng EMA để tính trung bình động để xác định hướng xu hướng tổng thể. Giá trị EMA lớn hơn cho thấy xu hướng tăng, trong khi giá trị EMA nhỏ hơn cho thấy xu hướng giảm.

  2. Sử dụng MACD để tính toán sự khác biệt giữa trung bình di chuyển nhanh và chậm. Khi sự khác biệt lớn hơn 0, nó chỉ ra xu hướng tăng, khi nhỏ hơn 0, nó chỉ ra xu hướng giảm.

  3. Sử dụng PSAR để tính điểm biến đổi liên tục. Khi giá trị PSAR lớn, nó chỉ ra xu hướng giảm, khi giá trị PSAR nhỏ, nó chỉ ra xu hướng tăng.

  4. Kết hợp ba chỉ số trên để xác định sự nhất quán của xu hướng. Khi các phán đoán của ba chỉ số là phù hợp, nó đại diện cho một xu hướng rõ ràng cho phép giao dịch nhập cảnh.

  5. Nhập giao dịch dựa trên tiêu chí mua và bán, và thiết lập điểm dừng lỗ và lấy lợi nhuận.

  6. Các quy tắc cụ thể là:

    • Điều kiện mua: không có xu hướng tăng, biểu đồ MACD < 0, giá đóng > EMA
    • Điều kiện bán: trong xu hướng tăng, biểu đồ MACD > 0, giá đóng < EMA
    • Điều kiện dừng lỗ: giá đạt giá trị PSAR tiếp theo
    • Điều kiện thu lợi nhuận: đạt tỷ lệ thu lợi nhuận được đặt trước

Ưu điểm của Chiến lược

  1. Sử dụng nhiều chỉ số để xác định xu hướng cải thiện độ chính xác.

  2. Mở giao dịch dựa trên xu hướng xác định được xác định thông qua cân bằng áp lực làm tăng tỷ lệ thắng.

  3. Thiết lập dừng lỗ và lấy lợi nhuận có thể hạn chế lỗ và khóa lợi nhuận.

  4. Các quy tắc giao dịch rõ ràng và có hệ thống làm cho nó phù hợp với giao dịch thuật toán.

  5. Các tham số có thể được tối ưu hóa để thích nghi với các sản phẩm và khung thời gian khác nhau.

Rủi ro của chiến lược

  1. Phán quyết xu hướng có thể sai, dẫn đến hướng giao dịch không chính xác.

  2. Các động thái thị trường cực đoan có thể tạo ra các tín hiệu sai từ các chỉ số.

  3. Đánh lỗ bị đặt quá rộng, không thể thoát được kịp thời.

  4. Điều chỉnh tham số không đúng dẫn đến giao dịch quá mức hoặc bỏ lỡ giao dịch.

  5. Các sản phẩm không thanh khoản không thể thực hiện các kế hoạch dừng lỗ và lấy lợi nhuận.

  6. Các rủi ro có thể được giảm bằng cách tối ưu hóa các thông số, điều chỉnh dừng và chọn các sản phẩm lỏng.

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

  1. Điều chỉnh thời gian EMA để tối ưu hóa độ chính xác xu hướng.

  2. Điều chỉnh thời gian MACD nhanh và chậm để cải thiện độ nhạy.

  3. Tối ưu hóa tỷ lệ dừng lỗ và lợi nhuận để tìm sự cân bằng lý tưởng.

  4. Thêm các chỉ số phụ khác để cải thiện thời gian nhập cảnh.

  5. Chọn các sản phẩm có thanh khoản tốt và dao động lớn.

  6. Điều chỉnh khung thời gian để phù hợp với các đặc điểm sản phẩm khác nhau.

Tóm lại

Chiến lược này tích hợp nhiều chỉ số để phân tích xu hướng và tham gia giao dịch dựa trên các xu hướng xác định, với lệnh dừng lỗ và lấy lợi nhuận được đặt trước, có thể nắm bắt hiệu quả các chuyển động của thị trường và đạt được lợi nhuận tốt trong khi đảm bảo lợi nhuận nhất định.


/*backtest
start: 2023-10-13 00:00:00
end: 2023-11-12 00:00:00
period: 1h
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/
// © exlux99

//@version=4
strategy(title = "Crypto Scalper", overlay = true,  pyramiding=1,initial_capital = 100, default_qty_type= strategy.percent_of_equity, default_qty_value = 100, calc_on_order_fills=false, slippage=0,commission_type=strategy.commission.percent,commission_value=0.03)
len = input(60, minval=1, title="Length EMA")
src = input(close, title="Source")
out = ema(src, len)
//
fast_length = input(title="Fast Length MACD", type=input.integer, defval=12)
slow_length = input(title="Slow Length MACD", type=input.integer, defval=26)
signal_length = input(title="Signal Smoothing", type=input.integer, minval = 1, maxval = 50, defval = 9)
sma_source = input(title="Oscillator MA Type MACD", type=input.string, defval="EMA", options=["SMA", "EMA"])
sma_signal = input(title="Signal Line MA Type MACD", type=input.string, defval="EMA", options=["SMA", "EMA"])

// Calculating
fast_ma = sma_source == "SMA" ? sma(src, fast_length) : ema(src, fast_length)
slow_ma = sma_source == "SMA" ? sma(src, slow_length) : ema(src, slow_length)
macd = fast_ma - slow_ma
signal = sma_signal == "SMA" ? sma(macd, signal_length) : ema(macd, signal_length)
hist = macd - signal


start = input(0.02)
increment = input(0.02)
maximum = input(0.2)
var bool uptrend = na
var float EP = na
var float SAR = na
var float AF = start
var float nextBarSAR = na
if bar_index > 0
	firstTrendBar = false
	SAR := nextBarSAR
	if bar_index == 1
		float prevSAR = na
		float prevEP = na
		lowPrev = low[1]
		highPrev = high[1]
		closeCur = close
		closePrev = close[1]
		if closeCur > closePrev
			uptrend := true
			EP := high
			prevSAR := lowPrev
			prevEP := high
		else
			uptrend := false
			EP := low
			prevSAR := highPrev
			prevEP := low
		firstTrendBar := true
		SAR := prevSAR + start * (prevEP - prevSAR)
	if uptrend
		if SAR > low
			firstTrendBar := true
			uptrend := false
			SAR := max(EP, high)
			EP := low
			AF := start
	else
		if SAR < high
			firstTrendBar := true
			uptrend := true
			SAR := min(EP, low)
			EP := high
			AF := start
	if not firstTrendBar
		if uptrend
			if high > EP
				EP := high
				AF := min(AF + increment, maximum)
		else
			if low < EP
				EP := low
				AF := min(AF + increment, maximum)
	if uptrend
		SAR := min(SAR, low[1])
		if bar_index > 1
			SAR := min(SAR, low[2])
	else
		SAR := max(SAR, high[1])
		if bar_index > 1
			SAR := max(SAR, high[2])
	nextBarSAR := SAR + AF * (EP - SAR)

tplong=input(0.245, step=0.005)
sllong=input(1.0, step=0.005)
tpshort=input(0.055, step=0.005)
slshort=input(0.03, step=0.005)

if (uptrend and hist >0 and close < out)
	strategy.entry("short", strategy.short, stop=nextBarSAR, comment="short")
	strategy.exit("short_tp/sl", "short", profit=close * tpshort / syminfo.mintick, loss=close * slshort / syminfo.mintick, comment='SHORT EXIT',  alert_message = 'closeshort')
if (not uptrend and hist <0 and close > out)
	strategy.entry("long", strategy.long, stop=nextBarSAR, comment="long")
	strategy.exit("short_tp/sl", "long", profit=close * tplong / syminfo.mintick, loss=close * sllong / syminfo.mintick, comment='LONG EXIT',  alert_message = 'closelong')

	

Thêm nữa