Strategi GM-8 & ADX Dual Moving Average adalah strategi perdagangan kuantitatif yang menggabungkan beberapa penunjuk teknikal. Ia menggunakan penunjuk GM-8, penunjuk ADX, dan penunjuk EMA kedua untuk mengenal pasti isyarat beli dan jual yang berpotensi. Penunjuk GM-8 digunakan untuk menentukan trend harga, penunjuk ADX digunakan untuk mengesahkan kekuatan trend, dan penunjuk EMA kedua digunakan untuk membantu menentukan arah trend. Isyarat beli dan jual dihasilkan apabila harga menembusi purata bergerak GM-8 dan penunjuk ADX berada di atas ambang. Kelebihan strategi ini terletak pada kombinasi beberapa penunjuk, yang meningkatkan kebolehpercayaan isyarat. Walau bagaimanapun, ia juga membawa risiko tertentu, seperti isyarat palsu dan kelewatan. Arahan strategi pengoptimuman termasuk pengoptimuman parameter, pengoptimuman stop-loss dan mengambil keuntungan, dan lain-lain.
Prinsip strategi purata bergerak berganda GM-8 & ADX adalah seperti berikut:
Strategi GM-8 & ADX Dual Moving Average adalah strategi perdagangan kuantitatif klasik yang menggabungkan beberapa penunjuk teknikal untuk mengenal pasti isyarat beli dan jual. Kelebihan strategi ini terletak pada logiknya yang mudah dan jelas, isyarat yang agak boleh dipercayai, dan kesesuaian untuk pemula untuk belajar dan menggunakan. Walau bagaimanapun, ia juga membawa risiko seperti pengenalan trend yang tertinggal, perdagangan yang kerap, dan kesukaran dalam pemilihan parameter. Untuk meningkatkan lagi prestasi strategi, langkah-langkah pengoptimuman seperti memperkenalkan lebih banyak keadaan penapisan, masa masuk dan keluar, menyesuaikan parameter secara dinamik, dan menambah pengurusan kedudukan boleh dipertimbangkan. Secara keseluruhan, Strategi GM-8 & ADX Dual Moving Average menyediakan kerangka asas yang baik untuk perdagangan kuantitatif dan bernilai penyempurnaan dan peningkatan yang berterusan dalam amalan.
/*backtest start: 2023-04-24 00:00:00 end: 2024-04-29 00:00:00 period: 1d basePeriod: 1h exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=5 strategy("GM-8 and ADX Strategy with Second EMA", overlay=true) // Input parameters gm_period = input(15, title="GM-15 Period") second_ema_period = input(59, title="Second EMA Period") adx_period = input(8, title="ADX Period") adx_threshold = input(34, title="ADX Threshold") lot_size = input.float(0.4, title="Lot Size") // Calculate the ADX manually adx(high, low, close, length) => sum_truerange = 0.0 sum_plusDM = 0.0 sum_minusDM = 0.0 for i = 1 to length truerange_calc = high[i] - low[i] truerange_prev_close = high[i] - close[i-1] truerange_close = low[i] - close[i-1] truerange_calc := truerange_prev_close > truerange_calc ? truerange_prev_close : truerange_calc truerange_calc := truerange_close > truerange_calc ? truerange_close : truerange_calc sum_truerange := sum_truerange + truerange_calc plusDM = high[i] - high[i-1] > low[i-1] - low[i] and high[i] - high[i-1] > 0 ? high[i] - high[i-1] : 0 sum_plusDM := sum_plusDM + plusDM minusDM = low[i-1] - low[i] > high[i] - high[i-1] and low[i-1] - low[i] > 0 ? low[i-1] - low[i] : 0 sum_minusDM := sum_minusDM + minusDM plusDI = sum_plusDM / sum_truerange * 100 minusDI = sum_minusDM / sum_truerange * 100 sumDI = plusDI + minusDI adx_value = 100 * (plusDI - minusDI) / (sumDI == 0 ? 1 : sumDI) // Calculate indicators gm_8 = ta.sma(close, gm_period) second_ema = ta.ema(close, second_ema_period) adx_value = adx(high, low, close, adx_period) // Define buy and sell conditions buy_condition = ta.crossover(close, gm_8) and close > gm_8 and close > second_ema and adx_value > adx_threshold sell_condition = ta.crossunder(close, gm_8) and close < gm_8 and close < second_ema and adx_value > adx_threshold // Entry and exit logic if (buy_condition) strategy.entry("Buy", strategy.long, qty=lot_size) if (sell_condition) strategy.entry("Sell", strategy.short, qty=lot_size) // Exit conditions exit_buy_condition = ta.crossunder(close, gm_8) and close < gm_8 exit_sell_condition = ta.crossover(close, gm_8) and close > gm_8 if (exit_buy_condition) strategy.close("Buy") if (exit_sell_condition) strategy.close("Sell")