MoonFlag MACD Momentum StochRSI Strategi Dagangan

Penulis:ChaoZhang, Tarikh: 2024-02-23 15:06:59
Tag:

img

Ringkasan

MoonFlag MACD Momentum StochRSI Trading Strategy adalah strategi perdagangan kuantitatif yang menggunakan penunjuk MACD, momentum dan StochRSI untuk pertimbangan.

Logika Strategi

Strategi ini menggunakan penunjuk utama berikut untuk penilaian:

  1. Indikator MACD: Tempoh SMA pantas adalah 50 dan tempoh SMA perlahan adalah 200, mewakili garis 50 hari dan 200 hari yang biasa digunakan di pasaran.

  2. Penunjuk momentum tersuai: Pada dasarnya serupa dengan penunjuk Stoch, yang digunakan untuk menilai arah momentum jangka pendek pasaran.

  3. Indikator StochRSI: Mengkaji kekuatan dan tahap overbought / oversold pasaran.

Untuk masuk panjang, ia perlu memenuhi 3 syarat MACD> 0 (mewakili trend menaik jangka sederhana hingga panjang), penunjuk momentum tersuai > 0 (mewakili momentum menaik jangka pendek) dan harga penutupan yang lebih tinggi daripada penutupan sebelumnya (mewakili trend menaik semasa) pada masa yang sama.

Isyarat panjang penutupan agak lebih kompleks, memerlukan MACD <0, penunjuk momentum tersuai <0, harga penutupan lebih rendah daripada penutupan sebelumnya dan StochRSI>20 4 syarat yang harus dipenuhi secara serentak.

Strategi ini menilai secara komprehensif trend jangka sederhana hingga panjang, momentum jangka pendek dan trend semasa, dan merupakan sistem breakout yang agak kukuh.

Kelebihan Strategi

  1. Penghakiman komprehensif pelbagai penunjuk mengelakkan menghasilkan isyarat palsu

  2. Pemilihan parameter MACD mengambil kira garis penting 50 hari dan garis 200 hari di pasaran

  3. Selepas parameter setiap penunjuk diuji untuk variasi, prestasi strategi sedikit berubah, mengelakkan risiko overfit

  4. Diuji semula dengan data yang mencukupi dengan kebolehpercayaan yang tinggi

Risiko Strategi

  1. Sistem breakout terdedah kepada arbitrage, yang boleh meningkatkan bilangan perdagangan dan kos slippage

  2. Kerumitan yang tinggi dengan penilaian pelbagai penunjuk yang komprehensif, kesukaran dalam penyesuaian dan pengoptimuman parameter

  3. Risiko dagangan jangka pendek intraday yang tinggi

Arahan pengoptimuman

  1. Menggabungkan analisis lebih banyak penunjuk, seperti jumlah dagangan

  2. Meningkatkan algoritma pembelajaran mesin untuk pengoptimuman parameter dinamik

  3. Kekerapan perdagangan yang lebih rendah, menukar kepada kekerapan yang lebih tinggi untuk penghakiman

Ringkasan

MoonFlag MACD Momentum StochRSI Strategi Dagangan menilai secara komprehensif trend pasaran dan kekuatan dengan pelbagai penunjuk, mempunyai hasil backtest yang baik dan kebolehpercayaan yang tinggi, sesuai untuk peniaga kuantitatif yang berpengalaman untuk memohon dan mengoptimumkan pada cryptocurrency berkualiti.


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



Lebih lanjut