MoonFlag MACD Momentum StochRSI Trading Strategy adalah strategi perdagangan kuantitatif yang memanfaatkan indikator MACD, momentum dan StochRSI untuk penilaian.
Strategi ini menggunakan indikator kunci berikut untuk penilaian:
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.
Indikator momentum khusus: Pada dasarnya mirip dengan indikator Stoch, digunakan untuk menilai arah momentum jangka pendek pasar.
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.
Penilaian komprehensif dari beberapa indikator menghindari sinyal palsu
Pemilihan parameter MACD mempertimbangkan garis 50 hari dan garis 200 hari yang penting di pasar
Setelah parameter dari setiap indikator diuji untuk variasi, kinerja strategi sedikit berubah, menghindari risiko overfit
Diuji dengan data yang cukup dengan keandalan tinggi
Sistem breakout rentan terhadap arbitrage, yang dapat meningkatkan jumlah perdagangan dan biaya slipage
Kompleksitas tinggi dengan penilaian multi-indikator yang komprehensif, kesulitan dalam penyesuaian dan pengoptimalan parameter
Risiko perdagangan intraday jangka pendek yang tinggi
Masukkan analisis lebih banyak indikator, seperti volume perdagangan
Meningkatkan algoritma pembelajaran mesin untuk optimasi parameter dinamis
Frekuensi perdagangan yang lebih rendah, beralih ke periodikitas yang lebih tinggi untuk penilaian
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")