Chiến lược giao dịch Moon Flag MACD Momentum StochRSI


Ngày tạo: 2024-02-23 15:06:59 sửa đổi lần cuối: 2024-02-23 15:06:59
sao chép: 0 Số nhấp chuột: 584
1
tập trung vào
1617
Người theo dõi

Chiến lược giao dịch Moon Flag MACD Momentum StochRSI

Tổng quan

Chiến lược giao dịch MACD động lực StochRSI là một chiến lược giao dịch định lượng sử dụng ba chỉ số MACD, động lực và StochRSI để phán đoán. Chiến lược này chủ yếu áp dụng cho giao dịch đường nét Bitcoin và Ethereum.

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

Chiến lược này được đánh giá dựa trên một số chỉ số quan trọng:

  1. Chỉ số MACD: chu kỳ SMA nhanh là 50, chu kỳ SMA chậm là 200, đại diện cho đường 50 ngày và đường 200 ngày thường được sử dụng trong thị trường. Chỉ số này đánh giá hướng xu hướng dài hạn của thị trường.

  2. Chỉ số động lực tự tạo: Về bản chất tương tự như chỉ số Sttoch, được sử dụng để đánh giá hướng động lực ngắn hạn của thị trường.

  3. StochRSI: Đánh giá sức mạnh của thị trường và quá mua quá bán.

Khi tham gia vào nhiều đầu, cần phải đáp ứng 3 điều kiện: MACD> 0 (đã đại diện cho xu hướng tăng trung bình dài hạn), chỉ số tự tạo động lượng> 0 (đã đại diện cho xu hướng tăng ngắn hạn) và giá đóng cửa tăng cao hơn một ngày trước (đã đại diện cho xu hướng tăng hiện tại).

Tín hiệu đa đầu phẳng hơi phức tạp, cần đáp ứng cùng một lúc 4 điều kiện MACD < 0, chỉ số tự tạo < 0, giá đóng cửa giảm so với ngày trước và StochRSI > 20.

Chiến lược tổng hợp các xu hướng trung và dài hạn, động lực ngắn hạn và xu hướng hiện tại, một hệ thống đột phá mạnh mẽ.

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

  1. Xác định tổng hợp nhiều chỉ số, tránh phát ra tín hiệu sai

  2. Các tham số MACD được chọn để xem xét các đường 50 và đường 200 quan trọng đối với thị trường

  3. Sau khi thay đổi các tham số chỉ số thử nghiệm, hiệu quả của chiến lược không thay đổi nhiều, tránh rủi ro quá phù hợp

  4. Dữ liệu phản hồi đầy đủ, đáng tin cậy cao

Rủi ro chiến lược

  1. Hệ thống phá vỡ dễ bị mạo hiểm, có thể làm tăng số lần giao dịch và chi phí trượt

  2. Sự phức tạp của đánh giá đa chỉ số tổng hợp cao, điều chỉnh và tối ưu hóa tham số khó khăn

  3. Các hoạt động ngắn trong ngày có nhiều rủi ro hơn

Tối ưu hóa chiến lược

  1. Kết hợp với nhiều chỉ số khác như phân tích số lượng giao dịch

  2. Thêm các thuật toán học máy để tối ưu hóa tham số động

  3. Giảm tần suất giao dịch, chuyển sang chu kỳ cao hơn để phán đoán

Tóm tắt

Chiến lược giao dịch MACD động lực StochRSI của Moon Flag kết hợp nhiều chỉ số để xác định xu hướng và cường độ của thị trường, có hiệu quả đo lường tốt, độ tin cậy cao, phù hợp để các nhà giao dịch định lượng có kinh nghiệm áp dụng và tối ưu hóa trên tiền kỹ thuật số chất lượng cao.

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

// // This Pine Script™ code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// // © MoonFlag
//@version=5
strategy("MoonFlag 1D MACD Momentum StochRSI Strategy", max_bars_back=500, overlay=false, initial_capital=5000, default_qty_type=strategy.percent_of_equity, default_qty_value=80, pyramiding=0, calc_on_order_fills=true)


d(gaps_1, data)=>
    float out = 0.
    out :=(ta.wma(ta.wma(ta.wma(data,  math.round(((1 * gaps_1) - math.round((1 * gaps_1) / 3)) / 2)), math.round((1 * gaps_1) / 3)) , int(((1 * gaps_1) - math.round((1 * gaps_1) / 3)) / 2)))
    out
MoonFlagAverage(gaps_1,data)=>
    float out = 0.
    out:=d(gaps_1,d(gaps_1, d(gaps_1, data)))
    out

fastLength = input.int(50,  "MACD SMA Fast Length")
slowlength = input.int(200, "MACD SMA Slow Length")
MACDLength = 9//input.int(9,   "MACD Length")

MACD  = ta.ema(close, fastLength) - ta.ema(close, slowlength)
aMACD = ta.sma(MACD, MACDLength)
MACDdelta = MACD - aMACD

//plot (MACD, "MACD1", color.red)
//plot (aMACD, "aMACD1", color.green)
//plot (delta, "MACD delta", color.white)

fastLength2 = input.int(12, "MoonFlag Momentum Length")
slowlength2 = 2*fastLength2//input.int(50, "MoonFlag Momentum Slow Length")
MACDLength2 = 20//input.int(20, "Momentum Delta")

MoonFlag_MACD2 = MoonFlagAverage(fastLength2, close) - MoonFlagAverage(slowlength2,close)
MoonFlag_aMACD2 = MoonFlagAverage(MACDLength2, MoonFlag_MACD2)

MoonFlag_delta = MoonFlag_MACD2 - MoonFlag_aMACD2
MoonFlag_delta_line=0
if MoonFlag_delta < 0
    MoonFlag_delta_line:=-100
else
    MoonFlag_delta_line:=100
//plot (MoonFlag_MACD2, "MoonFlag Momentum Fast Length", color.red)
//plot (MoonFlag_aMACD2, "MoonFlag Momentum Slow Length", color.green)
//plot (MoonFlag_delta2, "MoonFlag Delta", color.white)

uptrend   = (close + high)/(close[1] + high[1])
downtrend =  (close + low)/(close[1] + low[1])

lineColor = color.green
if uptrend > 1
    lineColor := color.green
if downtrend < 1
    lineColor := color.red

smoothK     = 2//input.int(2, minval=1, title="K smoothing Stoch RSI")
smoothD     = 3//input.int(3, minval=1, title= "D smoothing for Stoch RSI")
lengthRSI   = 7//input.int(7, minval=1, title="RSI Length")
lengthStoch = 8//input.int(8, minval=1, title="Stochastic Length")
src = close//input(close, title="RSI Source")

rsi1 = ta.rsi(src, lengthRSI)
k = ta.sma(ta.stoch(rsi1, rsi1, rsi1, lengthStoch), smoothK)
StochRSI = ta.sma(k, smoothD)

MACDdirection_line = 0
MACDdirection_line := MACDdirection_line[1]
if (MACDdelta > 0) 
    MACDdirection_line := 50
if (MACDdelta < 0) 
    MACDdirection_line := -50

useStochRSI = input.bool(true,"Include Condition (StochRSI > 20) with Exit Long/Enter Short")
StochRSI_val = 20//input.int(20,"StochRSI greater than to exit short")
h1 = hline(StochRSI_val)

StochRSIGreaterThanSetValue = true
if useStochRSI
    if  (StochRSI > StochRSI_val)
        StochRSIGreaterThanSetValue := true
    else
        StochRSIGreaterThanSetValue := false

stoch20 = lineColor
if StochRSI < StochRSI_val
    stoch20 := color.white

yearin = input.int(2019, title="Start backtesting from year:")

includeShorts = false//input.bool(false, "Include Shorts")

plot(MoonFlag_delta_line,"MoonFlag Momentum Direction", color.white)
plot(MACDdirection_line,"MACD Direction", color = color.orange)
plot(StochRSI, "StochRSI", color=lineColor)

if  (year>=yearin)
    if (MACDdelta > 0) and (uptrend > 1)   and MoonFlag_delta_line > 0
        strategy.entry("buy2", strategy.long, comment="buy")
    if (MACDdelta < 0) and (downtrend < 1) and MoonFlag_delta_line < 0 and StochRSIGreaterThanSetValue
        if includeShorts    
            strategy.entry("sell", strategy.short, comment="sell")
        else
            strategy.close("buy2", comment = "sell")