
Chiến lược này tạo ra tín hiệu giao dịch bằng cách chọn động các loại moving average khác nhau và kết hợp chúng với nhiều chu kỳ thời gian.
Chiến lược này cho phép chọn năm chỉ số trung bình di chuyển SMA, EMA, TEMA, WMA, HMA, và thiết lập độ dài chu kỳ của đường trung bình. Chiến lược sẽ vẽ các loại đường trung bình khác nhau tùy thuộc vào động lực được chọn.
Cụ thể, chiến lược này sẽ xác định thời gian đo lường dựa trên các tham số đầu vào. Sau đó tính toán năm chỉ số trung bình:
Theo lựa chọn, vẽ đường trung bình tương ứng. Khi giá đóng cửa cao hơn đường trung bình, hãy làm nhiều hơn; Khi giá đóng cửa thấp hơn đường trung bình, hãy làm trống.
Chiến lược này có thể tạo ra tín hiệu giao dịch đáng tin cậy hơn bằng cách kết hợp các loại đường trung bình khác nhau để làm mịn dữ liệu giá, lọc tiếng ồn thị trường và cho phép tùy chỉnh độ dài chu kỳ đường trung bình để giao dịch theo xu hướng trong các chu kỳ khác nhau.
Bạn có thể giảm thiểu rủi ro bằng cách tối ưu hóa:
Chiến lược này có thể được tối ưu hóa theo các hướng sau:
Ví dụ, có thể thêm chỉ số năng lượng, chỉ khi khối lượng giao dịch tăng lên mới tạo ra tín hiệu giao dịch, lọc ra một số đột phá giả.
Có thể thiết lập một kênh, chỉ vào khi giá vượt qua kênh; thiết lập một đường dừng lỗ, giá chạm đường dừng lỗ sau khi thanh toán. Điều này có thể làm giảm tổn thất không cần thiết.
Có thể điều chỉnh chu kỳ đường trung bình theo tình hình thị trường, sử dụng đường trung bình chu kỳ dài khi xu hướng rõ ràng hơn, sử dụng đường trung bình chu kỳ ngắn khi kết thúc.
Bạn có thể điều chỉnh kích thước vị trí tùy theo trường hợp rút tiền, giảm vị trí khi rút tiền và tăng vị trí khi lợi nhuận.
Chiến lược này được sử dụng kết hợp nhiều chỉ số đường trung bình, kết hợp với nhiều chu kỳ thời gian, tạo ra hiệu quả theo dõi xu hướng ổn định hơn. Có nhiều không gian tối ưu hóa chiến lược, có thể cải thiện từ các khía cạnh của bộ lọc nhập cảnh, cách thoát ra, tối ưu hóa tham số, để chiến lược có hiệu quả tốt hơn trong đĩa thật.
/*backtest
start: 2022-10-20 00:00:00
end: 2023-10-26 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=3
strategy("MA_strategy ", shorttitle="MA_strategy", overlay=true, initial_capital=100000)
qty = input(100000000, "Buy quantity")
testStartYear = input(2017, "Backtest Start Year")
testStartMonth = input(1, "Backtest Start Month")
testStartDay = input(1, "Backtest Start Day")
testStartHour = input(0, "Backtest Start Hour")
testStartMin = input(0, "Backtest Start Minute")
testPeriodStart = timestamp(testStartYear,testStartMonth,testStartDay,testStartHour,testStartMin)
testStopYear = input(2099, "Backtest Stop Year")
testStopMonth = input(1, "Backtest Stop Month")
testStopDay = input(30, "Backtest Stop Day")
testPeriodStop = timestamp(testStopYear,testStopMonth,testStopDay,0,0)
testPeriodBackground = input(title="Color Background?", type=bool, defval=true)
testPeriodBackgroundColor = testPeriodBackground and (time >= testPeriodStart) and (time <= testPeriodStop) ? #00FF00 : na
bgcolor(testPeriodBackgroundColor, transp=97)
testPeriod() =>
time >= testPeriodStart and time <= testPeriodStop ? true : false
ma1 = input( "SMA",title="Select MA", options=["SMA", "EMA","TEMA", "WMA","HMA"])
len1 = input(7, minval=1, title="Period")
s=sma(close,len1)
e=ema(close,len1)
xEMA1 = ema(close, len1)
xEMA2 = ema(xEMA1, len1)
xEMA3 = ema(xEMA2, len1)
t = 3 * xEMA1 - 3 * xEMA2 + xEMA3
f_hma(_src, _length)=>
_return = wma((2 * wma(_src, _length / 2)) - wma(_src, _length), round(sqrt(_length)))
h = f_hma(close, len1)
w = wma(close, len1)
ma = ma1 == "SMA"?s:ma1=="EMA"?e:ma1=="WMA"?w:ma1=="HMA"?h:ma1=="TEMA"?t:na
buy= close>ma
sell= close<ma
alertcondition(buy, title='buy', message='buy')
alertcondition(sell, title='sell', message='sell')
ordersize=floor(strategy.equity/close)
if testPeriod()
strategy.entry("long",strategy.long,ordersize,when=buy)
strategy.close("long", when = sell )