
Strategi ini adalah berdasarkan isyarat Gold Fork Dead Fork pada purata bergerak ALMA berganda, digabungkan dengan isyarat Blank Multiple pada MACD, untuk melakukan Blank Multiple secara automatik. Strategi ini digunakan untuk tempoh masa 4 jam dan lebih, data ujian adalah BNB/USDT, tempoh masa adalah 2017 hingga kini, dan bayaran set adalah 0.03%.
Strategi menggunakan ALMA garis cepat dan garis perlahan untuk membina purata bergerak ganda. Panjang garis cepat adalah 20, panjang garis perlahan adalah 40, masing-masing menggunakan bias 0.9, perbezaan piawai adalah 5.
Pada masa yang sama, strategi menggabungkan isyarat carta lurus MACD. Isyarat peta lurus MACD hanya berkesan apabila carta lurus MACD adalah positif ((naik), dan isyarat lebih berkesan; isyarat peta lurus MACD hanya berkesan apabila carta lurus MACD adalah negatif ((turun), dan isyarat kosong berkesan.
Strategi ini pada masa yang sama menetapkan syarat stop loss. Stop loss sebanyak 2 kali, stop loss sebanyak 0.2 kali; stop loss sebanyak 0.05 kali, stop loss sebanyak 1 kali.
Strategi ini digabungkan dengan penghakiman trend dari purata bergerak ganda dan penghakiman tenaga dari penunjuk MACD, yang dapat menyaring isyarat palsu dengan berkesan, meningkatkan ketepatan masuk. Tetapan hentian hentian adalah munasabah, memaksimumkan keuntungan, dan mengelakkan kerugian besar.
Data retrospektif yang diterima pakai sejak tahun 2017 merangkumi beberapa peralihan lembu dan lembu, strategi ini masih berprestasi baik dalam keadaan melintasi kitaran. Ini membuktikan bahawa strategi ini sesuai dengan ciri-ciri linear dan bukan linear pasaran.
Strategi ini mempunyai risiko sebagai berikut:
Penyelesaian:
Strategi ini juga boleh dioptimumkan dalam beberapa aspek:
Strategi ini berjaya menggabungkan penilaian trend rata-rata bergerak dan penilaian tambahan MACD, dan menetapkan hentian hentian yang munasabah, yang dapat memperoleh keuntungan yang stabil dalam pelbagai keadaan. Dengan cara yang terus-menerus mengoptimumkan parameter dan menambah syarat penapis tambahan, kestabilan dan keuntungan strategi dapat ditingkatkan lagi.
/*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')