MoonFlag MACD Động lực StochRSI Chiến lược giao dịch

Tác giả:ChaoZhang, Ngày: 2024-02-23 15:06:59
Tags:

img

Tổng quan

Chiến lược giao dịch động lực MACD StochRSI của MoonFlag là một chiến lược giao dịch định lượng sử dụng các chỉ số MACD, động lực và StochRSI để đánh giá. Nó chủ yếu phù hợp với giao dịch hàng ngày Bitcoin và Ethereum.

Chiến lược logic

Chiến lược sử dụng các chỉ số chính sau đây để đánh giá:

  1. Chỉ số MACD: Thời gian SMA nhanh là 50 và thời gian SMA chậm là 200, đại diện cho đường 50 ngày và đường 200 ngày thường được sử dụng trên thị trường.

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

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

Để đi dài, nó cần phải đáp ứng 3 điều kiện của MACD> 0 (đại diện cho xu hướng tăng trung bình đến dài hạn), chỉ số động lực tùy chỉnh > 0 (đại diện cho động lực tăng ngắn hạn) và giá đóng cao hơn giá đóng trước (đại diện cho xu hướng tăng hiện tại) đồng thời.

Khóa tín hiệu dài hơi phức tạp hơn, đòi hỏi MACD <0, chỉ số động lực tùy chỉnh <0, giá đóng thấp hơn mức đóng trước và StochRSI>20 4 điều kiện phải được đáp ứng đồng thời.

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

Ưu điểm của Chiến lược

  1. Phân tích toàn diện về nhiều chỉ số tránh tạo ra tín hiệu sai

  2. Lựa chọn tham số MACD xem xét đường 50 ngày và đường 200 ngày quan trọng trên thị trường

  3. Sau khi các thông số của mỗi chỉ số được kiểm tra về sự thay đổi, hiệu suất chiến lược thay đổi rất ít, tránh rủi ro quá mức

  4. Được kiểm tra bằng dữ liệu đầy đủ với độ tin cậy cao

Rủi ro của chiến lược

  1. Các hệ thống breakout dễ bị chênh lệch, có thể làm tăng số lượng giao dịch và chi phí trượt

  2. Sự phức tạp cao với đánh giá đa chỉ số toàn diện, khó điều chỉnh và tối ưu hóa các thông số

  3. Rủi ro giao dịch ngắn hạn trong ngày cao

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

  1. Bao gồm phân tích nhiều chỉ số hơn, chẳng hạn như khối lượng giao dịch

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

  3. Tỷ lệ giao dịch thấp hơn, chuyển sang định kỳ cao hơn cho các phán quyết

Tóm lại

Chiến lược giao dịch MoonFlag MACD Momentum StochRSI đánh giá toàn diện xu hướng thị trường và sức mạnh với nhiều chỉ số, có kết quả backtest tốt và độ tin cậy cao, phù hợp với 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 điện tử chất lượng.


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



Thêm nữa