Chiến lược MACD đa khung thời gian được tối ưu hóa về thời gian và không gian


Ngày tạo: 2024-01-29 10:15:34 sửa đổi lần cuối: 2024-01-29 10:15:34
sao chép: 1 Số nhấp chuột: 683
1
tập trung vào
1617
Người theo dõi

Chiến lược MACD đa khung thời gian được tối ưu hóa về thời gian và không gian

Tổng quan

Chiến lược này tạo ra chiến lược giao dịch ngoại hối có tỷ lệ thắng cao bằng cách tối ưu hóa các tham số của chỉ số MACD, kết hợp với moving average, hành động giá và thời gian giao dịch cụ thể.

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

  1. Sử dụng 3 đường K để xác định xu hướng giá. Nếu giá đóng cửa 3 đường K cuối cùng cao hơn giá mở cửa, thì được đánh giá là xu hướng tăng; Nếu giá đóng cửa 3 đường K cuối cùng thấp hơn giá mở cửa, thì được đánh giá là xu hướng giảm.

  2. Tính toán độ chênh lệch của đường nhanh, đường chậm và MACD. Các tham số đường nhanh là 12, tham số đường chậm là 26 và tham số đường tín hiệu là 9.

  3. Thời gian giao dịch được thiết lập là 09:00-09:15 mỗi ngày. Trong khoảng thời gian này, nếu đáp ứng các điều kiện sau:

    • xu hướng tăng cùng với MACD chênh lệch trên 0 làm cho nhiều
    • Xu hướng giảm đồng thời MACD chênh lệch phá vỡ khi 0
  4. Stop Loss được thiết lập ở 0.3 điểm và Stop Loss là 100 điểm.

  5. Khoảng từ 21:00 đến 21:15 là khoảng trống.

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

  1. Sử dụng các chỉ số đa khung thời gian để đánh giá tổng hợp các xu hướng và cải thiện độ chính xác của quyết định.

  2. Tối ưu hóa thời gian giao dịch, tránh biến động mạnh mẽ của thị trường, giảm rủi ro dừng lỗ không cần thiết.

  3. Thiết lập tỷ lệ dừng lỗ hợp lý, tối đa hóa lợi nhuận và tránh thiệt hại.

  4. Nhìn chung, chiến lược này có tỷ lệ chiến thắng cao, phù hợp với các giao dịch ngắn và thường xuyên.

Rủi ro chiến lược

  1. Thời gian giao dịch của chiến lược là khá cố định, nếu không vào sân kịp thời, bạn có thể bỏ lỡ cơ hội giao dịch.

  2. Chỉ số MACD dễ gây ra tín hiệu sai lệch, nên sử dụng thận trọng nếu không thể xác định được xu hướng tăng hoặc giảm rõ ràng.

  3. Cài đặt điểm dừng lỗ là không hợp lý, có thể gây ra sự mất cân bằng tỷ lệ lợi nhuận, cần điều chỉnh tham số theo các giống khác nhau.

  4. Nhìn chung, rủi ro chiến lược nhỏ hơn. Tuy nhiên, trong trường hợp có đòn bẩy cao, vị trí quá lớn cũng có thể gây ra tổn thất lớn hơn.

Hướng tối ưu hóa chiến lược

  1. Có thể kết hợp các chỉ số khác để đánh giá xu hướng, tránh MACD tạo ra tín hiệu sai. Ví dụ, kết hợp các chỉ số như đường Brin, RSI để sử dụng kết hợp.

  2. Có thể tối ưu hóa tỷ lệ dừng lỗ bằng cách tính toán tham số tối ưu bằng dữ liệu đo đạc.

  3. Có thể mở rộng các loại giao dịch mà chiến lược áp dụng, đánh giá hiệu quả điều chỉnh tham số của các loại khác nhau.

  4. Có thể giới thiệu các thuật toán học máy để chọn tham số tối ưu theo các tình huống thị trường khác nhau, để thực hiện điều chỉnh động.

Tóm tắt

Chiến lược này nói chung rất phù hợp với các nhà giao dịch mới bắt đầu, tư duy chiến lược rõ ràng, không gian tối ưu hóa tham số lớn, rủi ro có thể kiểm soát được. Bằng cách tùy chỉnh thời gian mở vị trí và thiết lập tỷ lệ thua lỗ hợp lý, có thể đạt được tỷ lệ lợi nhuận cao hơn.

Mã nguồn chiến lược
/*backtest
start: 2023-12-01 00:00:00
end: 2023-12-31 23:59:59
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("Very high win rate strategy", overlay=true)


//

fast_length =12
slow_length= 26
src = close
signal_length = 9
sma_source = false
sma_signal = false

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

//ma

len=10
srca = input(close, title="Source")
out = hma(srca, len)

fromDay = input(defval = 1, title = "From Day", minval = 1, maxval = 31)
fromMonth = input(defval = 1, title = "From Month", minval = 1, maxval = 12)
fromYear = input(defval = 2000, title = "From Year", minval = 1970)
 //monday and session 
// To Date Inputs
toDay = input(defval = 31, title = "To Day", minval = 1, maxval = 31)
toMonth = input(defval = 12, title = "To Month", minval = 1, maxval = 12)
toYear = input(defval = 2021, title = "To Year", minval = 1970)

startDate = timestamp(fromYear, fromMonth, fromDay, 00, 00)
finishDate = timestamp(toYear, toMonth, toDay, 00, 00)
time_cond = true


timeinrange(res, sess) => time(res, sess) != 0

// = input('0900-0915', type=input.session, title="My Defined Hours")
myspecifictradingtimes = '0900-0915'
exittime = '2100-2115'

optionmacd=true


entrytime = time(timeframe.period, myspecifictradingtimes) != 0
exit = time(timeframe.period, exittime) != 0     

if(time_cond and optionmacd )
    if(close > open and close[1] > open[1] and close[2] > open[2] and entrytime  and crossover(hist,0))
        strategy.entry("long",1)
    if(close< open and close[1] < open[1] and close[2] < open[2] and entrytime and crossunder(hist,0))
        strategy.entry("short",0)      


tp = input(0.0003, title="tp")
//tp = 0.0003
sl = input(1.0 , title="sl")
//sl = 1.0
strategy.exit("closelong", "long" , profit = close * tp / syminfo.mintick, loss = close * sl / syminfo.mintick, alert_message = "closelong")
strategy.exit("closeshort", "short" , profit = close * tp / syminfo.mintick, loss = close * sl / syminfo.mintick, alert_message = "closeshort")