MoonFlag MACD Momentum StochRSI Trading Strategy adalah strategi perdagangan kuantitatif yang menggunakan penunjuk MACD, momentum dan StochRSI untuk pertimbangan.
Strategi ini menggunakan penunjuk utama berikut untuk penilaian:
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.
Penunjuk momentum tersuai: Pada dasarnya serupa dengan penunjuk Stoch, yang digunakan untuk menilai arah momentum jangka pendek pasaran.
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.
Penghakiman komprehensif pelbagai penunjuk mengelakkan menghasilkan isyarat palsu
Pemilihan parameter MACD mengambil kira garis penting 50 hari dan garis 200 hari di pasaran
Selepas parameter setiap penunjuk diuji untuk variasi, prestasi strategi sedikit berubah, mengelakkan risiko overfit
Diuji semula dengan data yang mencukupi dengan kebolehpercayaan yang tinggi
Sistem breakout terdedah kepada arbitrage, yang boleh meningkatkan bilangan perdagangan dan kos slippage
Kerumitan yang tinggi dengan penilaian pelbagai penunjuk yang komprehensif, kesukaran dalam penyesuaian dan pengoptimuman parameter
Risiko dagangan jangka pendek intraday yang tinggi
Menggabungkan analisis lebih banyak penunjuk, seperti jumlah dagangan
Meningkatkan algoritma pembelajaran mesin untuk pengoptimuman parameter dinamik
Kekerapan perdagangan yang lebih rendah, menukar kepada kekerapan yang lebih tinggi untuk penghakiman
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")