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

Tác giả:ChaoZhang
Tags:

img

Tổng quan

Chiến lược logic

Phân tích lợi thế

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

  1. Bằng cách sử dụng chỉ số Dynamo, nó loại bỏ tác động của xu hướng và tạo ra các tín hiệu giao dịch đáng tin cậy hơn.

  2. Bằng cách kết hợp các khu vực mua quá mức / bán quá mức, nó có thể tạo ra các tín hiệu tương đối chính xác tại các điểm chuyển đổi.

Phân tích rủi ro

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

  1. Tại các cú sốc thị trường, xác suất tín hiệu sai từ chỉ số sẽ cao hơn.

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

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

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

  2. Thêm bộ lọc để đánh giá sức mạnh của xu hướng trước khi tín hiệu để tránh bị mắc kẹt trong thị trường dao động.

  3. Tích hợp các cơ chế dừng lỗ. Các giao dịch thoát khi giá vượt qua các ngưỡng nhất định theo hướng bất lợi.

Tóm lại


/*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")

Thêm nữa