Strategi Purata Bergerak Poligon membina poligon dengan pelbagai purata bergerak dari tempoh yang berbeza dan menggunakan terobosan poligon sebagai isyarat perdagangan. Strategi trend berikut ini menggabungkan beberapa bingkai masa dan dapat menapis bunyi pasaran dengan berkesan dan menangkap trend utama.
Strategi ini merangkumi beberapa EMA, seperti EMA 3-periode, 7-periode dan 13-periode, untuk membentuk saluran poligon. Apabila harga memecahkan di atas EMA, isyarat panjang dihasilkan. Apabila harga memecahkan di bawah EMA, isyarat pendek dihasilkan. Ini membantu mengelakkan banyak pecah palsu.
Kod ini menentukan isyarat terobosan dengan membandingkan harga penutupan dengan EMA menggunakan syarat seperti close>ema1 dan ema1>ema2 dan ema2>ema3.
Kelebihan terbesar strategi ini adalah keupayaannya untuk menangkap arah trend utama dengan berkesan dengan menggunakan pelbagai purata bergerak sebagai penapis untuk mengelakkan bunyi bising.
Risiko utama adalah bahawa strategi ini gagal mengenal pasti titik pembalikan trend dan boleh membawa kepada kerugian semasa pembalikan trend. Tetapan tempoh MA yang tidak sesuai juga boleh mengakibatkan overtrading atau isyarat tertinggal. Risiko dapat dikurangkan dengan mengoptimumkan kombinasi MA, menambah penunjuk pembalikan, memperluaskan julat stop loss, dll.
Strategi ini boleh dioptimumkan dalam aspek berikut:
Mengoptimumkan tempoh MA untuk mencari kombinasi yang terbaik.
Tambah penunjuk pembalikan seperti RSI dan MACD untuk keluar perdagangan tepat pada masanya.
Mengoptimumkan julat stop loss dan offset untuk mengurangkan stop loss awal.
Mengoptimumkan parameter untuk produk yang berbeza untuk meningkatkan kebolehsesuaian.
Strategi purata bergerak poligon umumnya merupakan sistem trend berikut yang boleh dipercayai dan berkesan. Kekuatannya yang terbesar adalah menangkap trend utama sambil menapis bunyi bising dengan ketara. Tetapi ia mempunyai beberapa batasan dalam mengenal pasti pembalikan. Kita boleh memperbaikinya dengan pengoptimuman parameter, menambah penunjuk tambahan, dll. Ia sesuai untuk pasaran dengan trend yang jelas dan boleh menjana keuntungan yang stabil jika digunakan dengan betul.
/*backtest start: 2023-09-30 00:00:00 end: 2023-10-30 00:00:00 period: 1h basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ // This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/ // © Crypto-Oli //@version=4 strategy("BLANK Strategy + TSL", initial_capital=5000, default_qty_type=strategy.percent_of_equity, default_qty_value=100, commission_type=strategy.commission.percent, pyramiding=1, commission_value=0.075, overlay=true) //////////////////////////////////////////////////////////////////////////////// // BACKTESTING RANGE // From Date Inputs fromDay = input(defval = 1, title = "From Day", minval = 1, maxval = 31) fromMonth = input(defval = 1, title = "From Month", minval = 1, maxval = 12) fromYear = input(defval = 2019, title = "From Year", minval = 1970) // To Date Inputs toDay = input(defval = 1, title = "To Day", minval = 1, maxval = 31) toMonth = input(defval = 1, title = "To Month", minval = 1, maxval = 12) toYear = input(defval = 2020, title = "To Year", minval = 1970) // Calculate start/end date and time condition startDate = timestamp(fromYear, fromMonth, fromDay, 00, 00) finishDate = timestamp(toYear, toMonth, toDay, 00, 00) time_cond = true //////////////////////////////////////////////////////////////////////////////// /// YOUR INPUTS BELOW - DELET EXAPLES /// ema1=ema(close,input(3)) ema2=ema(close,input(7)) ema3=ema(close,input(13)) /// PLOTS IF YOU NEED BELOW - DELET EXAPLES /// plot(ema1, "EMA1", color.yellow) plot(ema2, "EMA2", color.white) plot(ema3, "EMA3", color.blue) /// YOUR CONDITIONS BELOW - DELET EXAPLES /// longCondition = close>ema1 and ema1>ema2 and ema2>ema3 and time_cond shortCondition = close<ema1 and ema1<ema2 and ema2<ema3 and time_cond /// EXECUTION /// if (longCondition) strategy.entry("Long", strategy.long) strategy.exit("Long Exit", "Long", trail_points = close * 0.05 / syminfo.mintick, trail_offset = close * 0.02 / syminfo.mintick) if (shortCondition) strategy.entry("Short", strategy.short) strategy.exit("Short Exit", "Short", trail_points = close * 0.05 / syminfo.mintick, trail_offset = close * 0.02 / syminfo.mintick)