Strategi ini berdasarkan isyarat salib emas dan salib mati garis purata bergerak ALMA berganda, digabungkan dengan isyarat panjang dan pendek penunjuk MACD, untuk mencapai kedudukan panjang dan pendek automatik. Strategi ini sesuai untuk bingkai masa 4 jam atau lebih, dan data ujian adalah BNB / USDT dari 2017 hingga sekarang, dengan kadar komisen ditetapkan pada 0.03%.
Strategi ini menggunakan garis pantas dan perlahan yang dibina dari ALMA untuk membina purata bergerak berganda. Panjang garis pantas adalah 20 dan garis perlahan adalah 40, kedua-duanya mengamalkan ofset 0.9 dan penyimpangan standard 5. Apabila garis pantas melintasi garis perlahan, isyarat panjang dihasilkan. Apabila garis pantas melintasi di bawah garis perlahan, isyarat pendek dihasilkan.
Pada masa yang sama, strategi ini menggabungkan isyarat histogram penunjuk MACD. Hanya apabila histogram MACD positif (naik), isyarat panjang adalah sah; hanya apabila histogram MACD negatif (turun), isyarat pendek adalah sah.
Strategi ini juga menetapkan mengambil keuntungan dan syarat berhenti rugi. mengambil keuntungan panjang adalah 2 kali dan kehilangan berhenti adalah 0.2 kali; mengambil keuntungan pendek adalah 0.05 kali dan kehilangan berhenti adalah 1 kali.
Strategi ini menggabungkan penilaian trend purata bergerak berganda dan penilaian tenaga penunjuk MACD, yang dapat menapis isyarat palsu dengan berkesan dan meningkatkan ketepatan kemasukan.
Data backtest telah digunakan sejak tahun 2017, meliputi pelbagai kitaran penukaran bull dan bear. Strategi ini masih berfungsi dengan baik di sepanjang tempoh. Ini membuktikan bahawa strategi ini menyesuaikan diri dengan ciri-ciri linier dan bukan linier pasaran.
Strategi ini mempunyai risiko berikut:
Penyelesaian:
Strategi ini juga boleh dioptimumkan dalam aspek berikut:
Strategi ini berjaya menggabungkan pertimbangan trend purata bergerak dan pertimbangan tambahan MACD, dan menetapkan keuntungan yang munasabah dan menghentikan kerugian, yang dapat memperoleh pulangan yang stabil dalam pelbagai keadaan pasaran. Kestabilan dan keuntungan strategi dapat ditingkatkan dengan terus mengoptimumkan tetapan parameter, menambah syarat penapisan tambahan, dll.
/*backtest start: 2023-11-04 00:00:00 end: 2023-12-04 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/ // © exlux99 //@version=4 strategy(title = "Full Crypto Swing Strategy ALMA Cross", overlay = true, pyramiding=1,initial_capital = 1, default_qty_type= strategy.percent_of_equity, default_qty_value = 100, calc_on_order_fills=false, slippage=0,commission_type=strategy.commission.percent,commission_value=0.03) //time condition 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 = 2010, title = "From Year", minval = 1970) //monday and session // To Date Inputs toDay = input(defval = 31, title = "To Day", minval = 1, maxval = 31) toMonth = input(defval = 12, title = "To Month", minval = 1, maxval = 12) toYear = input(defval = 2031, title = "To Year", minval = 1970) startDate = timestamp(fromYear, fromMonth, fromDay, 00, 00) finishDate = timestamp(toYear, toMonth, toDay, 00, 00) time_cond = time >= startDate and time <= finishDate UseHAcandles = input(false, title="Use Heikin Ashi Candles in Algo Calculations") haClose = UseHAcandles ? security(heikinashi(syminfo.tickerid), timeframe.period, close) : close haOpen = UseHAcandles ? security(heikinashi(syminfo.tickerid), timeframe.period, open) : open haHigh = UseHAcandles ? security(heikinashi(syminfo.tickerid), timeframe.period, high) : high haLow = UseHAcandles ? security(heikinashi(syminfo.tickerid), timeframe.period, low) : low //alma fast and slow src = haClose windowsize = input(title="Length Size Fast", type=input.integer, defval=20) windowsize2 = input(title="Length Size Slow", type=input.integer, defval=40) offset = input(title="Offset", type=input.float, defval=0.9, step=0.05) sigma = input(title="Sigma", type=input.float, defval=5) outfast=alma(src, windowsize, offset, sigma) outslow=alma(src, windowsize2, offset, sigma) //macd fast_length = input(title="Fast Length", type=input.integer, defval=6) slow_length = input(title="Slow Length", type=input.integer, defval=25) signal_length = input(title="Signal Smoothing", type=input.integer, minval = 1, maxval = 50, defval = 9) // Calculating fast_ma = ema(src, fast_length) slow_ma = ema(src, slow_length) macd = fast_ma - slow_ma signal = ema(macd, signal_length) hist = macd - signal long=crossover(outfast,outslow) and hist > hist[1] and time_cond short=crossunder(outfast,outslow) and hist < hist[1] and time_cond takeProfit_long=input(2.0, step=0.005) stopLoss_long=input(0.2, step=0.005) takeProfit_short=input(0.05, step=0.005) stopLoss_short=input(1.0, step=0.005) strategy.entry("long",1,when=long) strategy.entry("short",0,when=short) strategy.exit("short_tp/sl", "long", profit=close * takeProfit_long / syminfo.mintick, loss=close * stopLoss_long / syminfo.mintick, comment='LONG EXIT', alert_message = 'closeshort') strategy.exit("short_tp/sl", "short", profit=close * takeProfit_short / syminfo.mintick, loss=close * stopLoss_short / syminfo.mintick, comment='SHORT EXIT', alert_message = 'closeshort')