Chiến lược giao dịch dao động động lượng động


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

Chiến lược giao dịch dao động động lượng động

Tổng quan

Chiến lược giao dịch dao động động động (Dynamic Momentum Oscillator Trading Strategy) dựa trên chỉ số dao động động động động (Dynamo) do E. Marshall Wall đưa ra trong bài viết được xuất bản trên tạp chí Futures Trader vào tháng 7 năm 1996, đã xử lý bình thường cho dao động tiêu chuẩn để loại bỏ tác động của xu hướng.

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

Chiến lược này đầu tiên tính một chỉ số ngẫu nhiên có độ dài 10 ngày (Stochastic Oscillator), sau đó tính một trung bình di chuyển đơn giản 10 ngày của chỉ số đó, và dựa trên trung bình di chuyển này, tính toán 20 ngày di chuyển. Trung bình. Điều này tạo thành cơ sở tính toán của dao động động động động.

Strategy sau đó tính toán các giá trị cao nhất và thấp nhất của chỉ số, sau đó tính toán giá trị trung bình. Nó làm chênh lệch đường trung bình 20 ngày với chỉ số ban đầu, sau đó trừ đi chênh lệch này từ giá trị trung bình để tạo ra giá trị dao động sau khi tiêu chuẩn hóa.

Phân tích lợi thế

Những ưu điểm chính của chiến lược này là:

  1. Sử dụng chỉ số động lực động lực vibrator loại bỏ tác động của xu hướng, làm cho tín hiệu giao dịch đáng tin cậy hơn.

  2. Kết hợp với khu vực mua quá mức, có thể tạo ra tín hiệu giao dịch chính xác hơn tại các điểm đảo ngược.

  3. Các quy tắc đơn giản, rõ ràng và dễ thực hiện.

Phân tích rủi ro

Những rủi ro chính của chiến lược này là:

  1. Các chỉ số có khả năng phát ra tín hiệu sai khi thị trường bất ổn. Bạn có thể đặt lệnh dừng lỗ để kiểm soát rủi ro.

  2. Trong thị trường chấn động, thường xuyên có các tín hiệu giả. Bạn có thể điều chỉnh các tham số một cách thích hợp, lọc ra một số tiếng ồn.

  3. Tỷ lệ giao dịch có thể cao hơn và chi phí giao dịch có thể ảnh hưởng đến lợi nhuận.

Hướng tối ưu hóa

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

  1. Kiểm tra dữ liệu của các thị trường khác nhau để tìm kiếm hợp đồng tốt nhất và sự kết hợp tham số tối ưu.

  2. Thêm các điều kiện lọc để đánh giá cường độ xu hướng trước khi phát ra tín hiệu, tránh bị mắc kẹt trong tình huống chấn động.

  3. Tăng cơ chế dừng lỗ. Chọn dừng lỗ khi giá vượt qua một ngưỡng thấp theo hướng bất lợi.

  4. Các hệ thống giao dịch phức tạp hơn có thể được phát triển dựa trên chiến lược này, kết hợp với nhiều chỉ số khác để đưa ra quyết định.

Tóm tắt

Chiến lược giao dịch động lực vibrator bằng cách loại bỏ tác động của xu hướng, phát tín hiệu giao dịch chính xác hơn trong khu vực quá mua quá bán. Chiến lược này đơn giản, dễ thực hiện, nhưng cũng có một số rủi ro. Bằng cách tối ưu hóa tham số và quy tắc, có thể cải thiện hơn nữa sự ổn định và lợi nhuận của hệ thống.

Mã nguồn chiến lược
/*backtest
start: 2023-01-15 00:00:00
end: 2024-01-21 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=2
////////////////////////////////////////////////////////////
//  Copyright by HPotter v1.0 10/04/2017
// In July 1996 Futures magazine, E. Marshall Wall introduces the 
// Dynamic Momentum Oscillator (Dynamo). Please refer to this article 
// for interpretation.
// The Dynamo oscillator is a normalizing function which adjusts the 
// values of a standard oscillator for trendiness by taking the difference 
// between the value of the oscillator and a moving average of the oscillator 
// and then subtracting that value from the oscillator midpoint.
//
// You can change long to short in the Input Settings
// Please, use it only for learning or paper trading. Do not for real trading
////////////////////////////////////////////////////////////
strategy(title="Dynamo", shorttitle="Dynamo")
OscLen = input(10, minval=1)
MALen = input(20, minval=1)
HiBand = input(77, minval=1)
LowBand = input(23)
reverse = input(false, title="Trade reverse")
hline(HiBand, color=red, linestyle=line)
hline(LowBand, color=green, linestyle=line)
xOscK = stoch(close, high, low, OscLen)
xOscAvg = sma(xOscK, OscLen)
xMAVal = sma(xOscAvg, MALen)
maxNum = 9999999
LowestSoFar = iff(xOscAvg < nz(LowestSoFar[1], maxNum), xOscAvg, nz(LowestSoFar[1], maxNum))
HighestSoFar = iff(xOscAvg > nz(HighestSoFar[1]), xOscAvg, nz(HighestSoFar[1]))
MidPnt = (LowestSoFar + HighestSoFar) / 2
nRes = MidPnt - (xMAVal - xOscAvg)
pos = iff(nRes > HiBand, 1,
	     iff(nRes < LowBand, -1, nz(pos[1], 0))) 
possig = iff(reverse and pos == 1, -1,
          iff(reverse and pos == -1, 1, pos))	   
if (possig == 1) 
    strategy.entry("Long", strategy.long)
if (possig == -1)
    strategy.entry("Short", strategy.short)	   	    
barcolor(possig == -1 ? red: possig == 1 ? green : blue )
plot(nRes, color=blue, title="Dynamo")