Chiến lược dự đoán lộ trình tương lai của Mike D


Ngày tạo: 2023-12-13 17:21:44 sửa đổi lần cuối: 2023-12-13 17:21:44
sao chép: 0 Số nhấp chuột: 714
1
tập trung vào
1621
Người theo dõi

Chiến lược dự đoán lộ trình tương lai của Mike D

Tổng quan

Ý tưởng cốt lõi của chiến lược này là dự đoán xu hướng giá bằng cách phân tích xu hướng tương lai của chỉ số McD. Chiến lược này tận dụng tối đa tín hiệu giao dịch được tạo ra bởi sự giao thoa giữa đường trung bình nhanh và đường trung bình chậm của chỉ số McD.

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

  1. Tính toán chênh lệch của chỉ số McD ((giá trị lịch sử) và dựa trên đó đánh giá tăng và giảm của đường McD và đường tín hiệu.
  2. Bằng cách thiết lập quyền chọn nhị phân, sử dụng giá trị tương lai của chỉ số McD trong phạm vi thời gian 4 giờ để đánh giá xu hướng tương lai của chỉ số McD để dự đoán xu hướng giá.
  3. Khi điểm chênh lệch của chỉ số McD lớn hơn 0 (đại diện cho thị trường đa đầu) và dự kiến sẽ tiếp tục tăng, hãy làm nhiều; Khi điểm chênh lệch của chỉ số McD nhỏ hơn 0 (đại diện cho thị trường trống) và dự kiến sẽ tiếp tục giảm, hãy làm trống.
  4. Chiến lược này kết hợp cả hai phương thức giao dịch theo xu hướng và đảo ngược xu hướng, đồng thời nắm bắt xu hướng và nắm bắt thời điểm đảo ngược xu hướng.

Phân tích lợi thế chiến lược

  1. Sử dụng chỉ số McD để đánh giá ưu thế của xu hướng thị trường, bạn có thể lọc hiệu quả các biến động và nắm bắt xu hướng đường dài.
  2. Với dự đoán về xu hướng tương lai của chỉ số McD, các nhà đầu tư có thể nắm bắt được các điểm biến giá sớm hơn và tăng cường khả năng dự đoán của chiến lược.
  3. Đồng thời kết hợp theo dõi xu hướng và cách giao dịch đảo ngược xu hướng, bạn có thể đảo ngược vị trí vào thời điểm thích hợp trong quá trình theo dõi xu hướng, thu được lợi nhuận lớn hơn.
  4. Các tham số chiến lược có thể được điều chỉnh, người dùng có thể tối ưu hóa tùy theo chu kỳ thời gian và môi trường thị trường khác nhau, tăng sự ổn định của chiến lược.

Phân tích rủi ro chiến lược

  1. Nếu dự đoán không đúng, giao dịch sẽ thất bại.
  2. Cần phải phối hợp với Stop Loss để kiểm soát tổn thất đơn lẻ. Thiết lập Stop Loss Rate không chính xác cũng ảnh hưởng đến hiệu quả của chiến lược.
  3. Chỉ số McD có thể bỏ lỡ cơ hội biến đổi giá nhanh chóng do sự chậm trễ. Điều này cần quan tâm trong hoạt động chiến lược trong tình huống biến động cao.
  4. Cần chú ý đến ảnh hưởng của chi phí giao dịch.

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

  1. Kết hợp với các chỉ số khác để dự báo, giảm sự phụ thuộc vào chỉ số MacD duy nhất, tăng độ chính xác dự báo. Ví dụ: xem xét sự thay đổi của khối lượng giao dịch.
  2. Tham gia thuật toán học máy, mô hình đào tạo dự đoán xu hướng tương lai của chỉ số McD.
  3. Thiết lập tham số tối ưu hóa, tìm kiếm sự kết hợp tham số tối ưu nhất.
  4. Các tham số tự động tối ưu hóa có thể được thêm vào để thích ứng với các môi trường thị trường khác nhau.

Tóm tắt

Chiến lược này tận dụng tối đa lợi thế của chỉ số McD để đánh giá xu hướng, đồng thời bổ sung thêm phân tích dự đoán về xu hướng tương lai của chỉ số, nắm bắt các điểm chuyển đổi quan trọng trên cơ sở nắm bắt xu hướng. So với xu hướng theo dõi đơn giản, chiến lược này có tính tiên tiến hơn và có nhiều cơ hội lợi nhuận hơn. Tất nhiên, cũng có một số rủi ro cần được tối ưu hóa và hoàn thiện hơn.

Mã nguồn chiến lược
/*backtest
start: 2023-12-05 00:00:00
end: 2023-12-12 00:00:00
period: 5m
basePeriod: 1m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

// @version=4
// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © x11joe
strategy(title="MacD (Future Known or Unknown) Strategy", overlay=false, precision=2,commission_value=0.26, initial_capital=10000, currency=currency.USD, default_qty_type=strategy.percent_of_equity, default_qty_value=100)

//OPTIONAL:: Allow only entries in the long or short position
allowOnlyLong = input(title="Allow position ONLY in LONG",type=input.bool, defval=false)
allowOnlyShort = input(title="Allow position ONLY in SHORT",type=input.bool, defval=false)


strategy.risk.allow_entry_in(allowOnlyLong ? strategy.direction.long : allowOnlyShort ? strategy.direction.short : strategy.direction.all) // There will be no short entries, only exits from long.

// Create MacD inputs
fastLen = input(title="MacD Fast Length", type=input.integer, defval=12)
slowLen = input(title="MacD Slow Length", type=input.integer, defval=26)
sigLen  = input(title="MacD Signal Length", type=input.integer, defval=9)

// Get MACD values
[macdLine, signalLine, _] = macd(close, fastLen, slowLen, sigLen)
hist = macdLine - signalLine

useFuture = input(title="Use The Future?",type=input.bool,defval=true)

macDState(resolutionType) =>
    hist_from_resolution = security(syminfo.tickerid, resolutionType, hist,barmerge.gaps_off, barmerge.lookahead_on)
    Green_IsUp = hist_from_resolution > hist_from_resolution[1] and hist_from_resolution > 0
    Green_IsDown = hist_from_resolution < hist_from_resolution[1] and hist_from_resolution > 0
    Red_IsDown = hist_from_resolution < hist_from_resolution[1] and hist_from_resolution <= 0
    Red_IsUp = hist_from_resolution > hist_from_resolution[1] and hist_from_resolution <= 0
    result=0
    if(Green_IsUp)
        result := 1
    if(Green_IsDown)
        result := 2
    if(Red_IsDown)
        result := 3
    if(Red_IsUp)
        result := 4
    result

macDStateNonFuture(resolutionType) =>
    hist_from_resolution = security(syminfo.tickerid, resolutionType, hist,barmerge.gaps_off, barmerge.lookahead_off)
    Green_IsUp = hist_from_resolution > hist_from_resolution[1] and hist_from_resolution > 0
    Green_IsDown = hist_from_resolution < hist_from_resolution[1] and hist_from_resolution > 0
    Red_IsDown = hist_from_resolution < hist_from_resolution[1] and hist_from_resolution <= 0
    Red_IsUp = hist_from_resolution > hist_from_resolution[1] and hist_from_resolution <= 0
    result=0
    if(Green_IsUp)
        result := 1
    if(Green_IsDown)
        result := 2
    if(Red_IsDown)
        result := 3
    if(Red_IsUp)
        result := 4
    result

// === INPUT BACKTEST RANGE ===
FromMonth = input(defval = 1, title = "From Month", minval = 1, maxval = 12)
FromDay   = input(defval = 1, title = "From Day", minval = 1, maxval = 31)
FromYear  = input(defval = 2019, title = "From Year", minval = 2017)
ToMonth   = input(defval = 1, title = "To Month", minval = 1, maxval = 12)
ToDay     = input(defval = 1, title = "To Day", minval = 1, maxval = 31)
ToYear    = input(defval = 9999, title = "To Year", minval = 2017)

start     = timestamp(FromYear, FromMonth, FromDay, 00, 00)  // backtest start window
finish    = timestamp(ToYear, ToMonth, ToDay, 23, 59)        // backtest finish window
window()  => time >= start and time <= finish ? true : false // create function "within window of time"
// === INPUT BACKTEST RANGE END ===

//Get FUTURE or NON FUTURE data
macDState240=useFuture ? macDState("240") : macDStateNonFuture("240") //1 is green up, 2 if green down, 3 is red, 4 is red up

//Fill in the GAPS
if(macDState240==0)
    macDState240:=macDState240[1]

//Plot Positions
plot(close,color= macDState240==1 ? color.green : macDState240==2 ? color.purple : macDState240==3 ? color.red : color.yellow,linewidth=4,style=plot.style_histogram,transp=50)

if(useFuture)
    strategy.entry("buy_1",long=true,when=window() and (macDState240==4 or macDState240==1))
    strategy.close("buy_1",when=window() and macDState240==3 and macDState240[1]==4)
    strategy.entry("sell_1",long=false,when=window() and macDState240==2)
else
    strategy.entry("buy_1",long=true,when=window() and (macDState240==4 or macDState240==1))//If we are in a red macD trending downwards MacD or in a MacD getting out of Red going upward.
    strategy.close("buy_1",when=window() and macDState240==3 and macDState240[1]==4)//If the state is going upwards from red but we are predicting back to red...
    strategy.entry("sell_1",long=false,when=window() and macDState240==2)//If we are predicting the uptrend to end soon.