Chiến lược giao dịch dừng lỗ siêu xu hướng ngẫu nhiên


Ngày tạo: 2024-01-25 16:04:39 sửa đổi lần cuối: 2024-01-25 16:04:39
sao chép: 0 Số nhấp chuột: 712
1
tập trung vào
1617
Người theo dõi

Chiến lược giao dịch dừng lỗ siêu xu hướng ngẫu nhiên

Tổng quan

Đây là một chiến lược giao dịch dừng chân theo dõi kết hợp nhiều chỉ số kỹ thuật. Sử dụng các chỉ số chủ yếu là Supertrend, Stochastic, 200 ngày trung bình di chuyển và ATR để xác định tín hiệu giao dịch và thiết lập điểm dừng chân. Chiến lược này phù hợp với giao dịch xu hướng đường dài và dài, có thể kiểm soát rủi ro hiệu quả.

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

Khi đường Stochastic K đi xuống từ khu vực mua quá mức, Supertrend chỉ ra xu hướng lên, giá vượt qua đường trung bình di chuyển 200 ngày, làm nhiều; Khi đường Stochastic K đi lên từ khu vực bán quá mức, Supertrend chỉ ra xu hướng xuống, giá giảm dưới đường trung bình di chuyển 200 ngày, làm rỗng. Sử dụng chỉ số ATR để thiết lập vị trí dừng lỗ động sau khi giao dịch.

Cụ thể, khi Stochastic K vượt 80 thì được coi là tín hiệu mua quá mức; khi Stochastic K vượt 20 thì được coi là tín hiệu bán quá mức. Chỉ số Supertrend quyết định hướng xu hướng của giá, khi Supertrend chỉ lên thì giá đang trong xu hướng tăng, khi Supertrend chỉ xuống thì giá đang trong xu hướng giảm. Chỉ số ATR được sử dụng để tính toán sóng thực.

Điều kiện kích hoạt tín hiệu đa: Đường Stochastic K đi xuống từ vùng siêu mua (<80); Đường Supertrend đi lên; Giá cao hơn đường trung bình di chuyển 200 ngày.

Điều kiện kích hoạt tín hiệu thả giá: Đường Stochastic K tăng từ vùng bán tháo (> 20), Đường Supertrend hướng xuống, Giá thấp hơn đường trung bình di chuyển 200 ngày.

Sau khi nhập, thiết lập ATR dừng để theo dõi rủi ro kiểm soát biến động giá. Nhiều lần dừng là giá thấp nhất trừ ATR giá trị nhân hệ số; đơn dừng là giá cao nhất cộng với ATR giá trị nhân hệ số.

Lợi thế chiến lược

Chiến lược này kết hợp với nhiều chỉ số để xác định hướng xu hướng và thời gian nhập vào, có thể lọc hiệu quả các tín hiệu giả. Đồng thời, việc sử dụng ATR theo dõi động theo dõi dừng lỗ, có thể kiểm soát rủi ro theo biến động của thị trường, tiết kiệm tối đa tiền.

Chiến lược này có thể nắm bắt được các điểm biến chuyển tốt hơn so với các chiến lược theo dõi xu hướng như trung bình di chuyển đơn giản. ATR có thể linh hoạt hơn so với phương pháp dừng lại đơn lẻ. Do đó, chiến lược này có tỷ lệ lợi nhuận rủi ro tốt hơn.

Rủi ro chiến lược

Chiến lược này phụ thuộc chủ yếu vào sự phán đoán của chỉ số, nếu chỉ số phát ra tín hiệu sai, có thể dẫn đến tổn thất do hoạt động ngược. Ngoài ra, trong trường hợp xung đột, dừng lỗ có thể được kích hoạt thường xuyên, dẫn đến tổn thất.

Ngoài ra, ATR dừng, mặc dù có thể điều chỉnh điểm dừng theo biến động, nhưng không thể hoàn toàn tránh khả năng phá vỡ lệnh dừng. Nếu gặp phải giá tăng, lệnh dừng có thể được kích hoạt trực tiếp.

Tối ưu hóa chiến lược

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

  1. Điều chỉnh các tham số chỉ số, tối ưu hóa độ chính xác của tín hiệu mua và bán. Ví dụ: chỉ số Stochastic có thể kiểm tra các tham số khác nhau, hoặc điều chỉnh chu kỳ ATR và tham số nhân của chỉ số Supertrend.

  2. Thử nghiệm hiệu quả của các phương pháp dừng khác. Ví dụ, bạn có thể thử các thuật toán dừng thông minh thích ứng linh hoạt hơn so với dừng ATR, hoặc xem xét việc dừng theo một điểm dừng di động.

  3. Thêm các điều kiện lọc để nhập cảnh trong trường hợp đáng tin cậy hơn. Ví dụ: có thể thêm các bộ lọc như chỉ số năng lượng khối lượng giao dịch, tránh nhập cảnh sai lệch dựa trên chỉ số khi không đủ năng lượng.

  4. Tối ưu hóa chiến lược quản lý vốn, chẳng hạn như điều chỉnh vị trí động.

Tóm tắt

Stochastic Supertrend theo dõi chiến lược giao dịch dừng lỗ tổng hợp sử dụng nhiều chỉ số để xác định xu hướng xu hướng và sử dụng theo dõi thông minh ATR để kiểm soát rủi ro. Chiến lược này có thể lọc hiệu quả tiếng ồn mỗi lần tham gia, có tỷ lệ lợi nhuận rủi ro tốt hơn. Chúng ta có thể liên tục tối ưu hóa chiến lược này bằng cách điều chỉnh tham số, sửa đổi cách dừng lỗ và thêm các điều kiện lọc để nó có thể thích ứng với môi trường thị trường phức tạp hơn.

Mã nguồn chiến lược
/*backtest
start: 2024-01-01 00:00:00
end: 2024-01-24 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/
// © araamas

//@version=5
strategy("stoch supertrd atr 200ma", overlay=true, process_orders_on_close=true)
var B = 0
if strategy.position_size > 0 //to figure out how many bars away did buy order happen
    B += 1 

if strategy.position_size == 0
    B := 0
    
atrPeriod = input(10, "ATR Length")
factor = input.float(3.0, "Factor", step = 0.01)

[supertrend, direction] = ta.supertrend(factor, atrPeriod)

bodyMiddle = plot((open + close) / 2, display=display.none)
upTrend = plot(direction < 0 ? supertrend : na, "Up Trend", color = color.green, style=plot.style_linebr)
downTrend = plot(direction < 0? na : supertrend, "Down Trend", color = color.red, style=plot.style_linebr)

ema = ta.ema(close, 200)
plot(ema, title="200 ema", color=color.yellow)

b = input.int(defval=14, title="length k%")
d = input.int(defval=3, title="smoothing k%")
s = input.int(defval=3, title="smoothing d%")
smooth_k = ta.sma(ta.stoch(close, high, low, b), d)
smooth_d = ta.sma(smooth_k, s)

////////////////////////////////////////////////////////////////////////////////
length = input.int(title="Length", defval=12, minval=1)
smoothing = input.string(title="Smoothing", defval="SMA", options=["RMA", "SMA", "EMA", "WMA"])
m = input(1.5, "Multiplier")
src1 = input(high)
src2 = input(low)
pline = input(true, "Show Price Lines")
col1 = input(color.blue, "ATR Text Color")
col2 = input(color.teal, "Low Text Color",inline ="1")
col3 = input(color.red, "High Text Color",inline ="2")

collong = input(color.teal, "Low Line Color",inline ="1")
colshort = input(color.red, "High Line Color",inline ="2")

ma_function(source, length) =>
	if smoothing == "RMA"
		ta.rma(source, length)
	else
		if smoothing == "SMA"
			ta.sma(source, length)
		else
			if smoothing == "EMA"
				ta.ema(source, length)
			else
				ta.wma(source, length)
				
a = ma_function(ta.tr(true), length) * m
x = ma_function(ta.tr(true), length) * m + src1
x2 = src2 - ma_function(ta.tr(true), length) * m

p1 = plot(x, title = "ATR Short Stop Loss", color=color.blue)
p2 = plot(x2, title = "ATR Long Stop Loss", color= color.blue)


///////////////////////////////////////////////////////////////////////////////////////////////

shortCondition = high < ema and direction == 1 and smooth_k > 80
if (shortCondition) and strategy.position_size == 0
    strategy.entry("sell", strategy.short)

longCondition = low > ema and direction == -1 and smooth_k < 20
if (longCondition) and strategy.position_size == 0
    strategy.entry("buy", strategy.long)
    
g = (strategy.opentrades.entry_price(0)-x2) * 2
k = (x - strategy.opentrades.entry_price(0)) * 2

if strategy.position_size > 0
    strategy.exit(id="buy exit", from_entry="buy",limit=strategy.opentrades.entry_price(0) + g, stop=x2) 

if strategy.position_size < 0
    strategy.exit(id="sell exit", from_entry="sell",limit=strategy.opentrades.entry_price(0) - k, stop=x) 
    
//plot(strategy.opentrades.entry_price(0) - k, color=color.yellow)
//plot(strategy.opentrades.entry_price(0) + g, color=color.red)