MoonFlag MACD Momentum StochRSI Strategi Perdagangan

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

img

Gambaran umum

MoonFlag MACD Momentum StochRSI Trading Strategy adalah strategi perdagangan kuantitatif yang memanfaatkan indikator MACD, momentum dan StochRSI untuk penilaian.

Logika Strategi

Strategi ini menggunakan indikator kunci berikut untuk penilaian:

  1. Indikator MACD: Periode SMA cepat adalah 50 dan periode SMA lambat adalah 200, yang mewakili garis 50 hari dan 200 hari yang umum digunakan di pasar. Indikator ini menilai arah tren jangka panjang pasar.

  2. Indikator momentum khusus: Pada dasarnya mirip dengan indikator Stoch, digunakan untuk menilai arah momentum jangka pendek pasar.

  3. Indikator StochRSI: menilai kekuatan dan tingkat overbought / oversold pasar.

Untuk masuk panjang, ia perlu memenuhi 3 kondisi MACD> 0 (mewakili tren kenaikan jangka menengah ke panjang), indikator momentum khusus > 0 (mewakili momentum kenaikan jangka pendek) dan harga penutupan lebih tinggi dari penutupan sebelumnya (mewakili tren kenaikan saat ini) secara bersamaan.

Menutup sinyal panjang sedikit lebih kompleks, membutuhkan MACD <0, indikator momentum khusus <0, harga penutupan lebih rendah dari penutupan sebelumnya dan StochRSI>20 4 kondisi yang harus dipenuhi secara bersamaan.

Strategi ini secara komprehensif menilai tren jangka menengah ke panjang, momentum jangka pendek dan tren saat ini, dan merupakan sistem breakout yang relatif kuat.

Keuntungan dari Strategi

  1. Penilaian komprehensif dari beberapa indikator menghindari sinyal palsu

  2. Pemilihan parameter MACD mempertimbangkan garis 50 hari dan garis 200 hari yang penting di pasar

  3. Setelah parameter dari setiap indikator diuji untuk variasi, kinerja strategi sedikit berubah, menghindari risiko overfit

  4. Diuji dengan data yang cukup dengan keandalan tinggi

Risiko dari Strategi

  1. Sistem breakout rentan terhadap arbitrage, yang dapat meningkatkan jumlah perdagangan dan biaya slipage

  2. Kompleksitas tinggi dengan penilaian multi-indikator yang komprehensif, kesulitan dalam penyesuaian dan pengoptimalan parameter

  3. Risiko perdagangan intraday jangka pendek yang tinggi

Arahan Optimasi

  1. Masukkan analisis lebih banyak indikator, seperti volume perdagangan

  2. Meningkatkan algoritma pembelajaran mesin untuk optimasi parameter dinamis

  3. Frekuensi perdagangan yang lebih rendah, beralih ke periodikitas yang lebih tinggi untuk penilaian

Ringkasan

MoonFlag MACD Momentum StochRSI Trading Strategy secara komprehensif menilai tren pasar dan kekuatan dengan beberapa indikator, memiliki hasil backtest yang baik dan keandalan yang tinggi, cocok untuk pedagang kuantitatif berpengalaman untuk menerapkan dan mengoptimalkan pada cryptocurrency berkualitas.


/*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 banyak