
Strategi ini didasarkan pada sinyal Gold Fork Dead Fork dari ALMA Moving Average ganda, yang dikombinasikan dengan sinyal MACD indicator, untuk memungkinkan otomatis melakukan lebih banyak blanko. Strategi ini berlaku untuk periode waktu 4 jam atau lebih, data uji adalah BNB/USDT, periode waktu dari 2017 hingga saat ini, biaya setelan 0,03% .
Strategi menggunakan ALMA garis cepat dan garis lambat untuk membangun dua rata-rata bergerak. Panjang garis cepat adalah 20, panjang garis lambat adalah 40, masing-masing menggunakan 0,9 offset, dengan standard deviasi 5.
Sementara itu, strategi yang menggabungkan sinyal grafik lurus dengan indikator MACD. Hanya jika grafik lurus MACD adalah positif (,) naik, sinyal multiply akan efektif; hanya jika grafik lurus MACD adalah negatif (,) turun, sinyal shorting akan efektif.
Strategi ini juga menetapkan kondisi stop loss. Stop loss adalah 2 kali lebih banyak dan stop loss adalah 0,2 kali lebih banyak. Stop loss adalah 0,05 kali lebih banyak dan stop loss adalah 1 kali lebih banyak.
Strategi ini menggabungkan penilaian tren dari dua rata-rata bergerak dan penilaian energi dari indikator MACD, yang dapat secara efektif memfilter sinyal palsu, meningkatkan akurasi masuk. Pengaturan stop loss yang masuk akal, maksimal mengunci keuntungan, menghindari kerugian besar.
Data retrospektif yang diadopsi sejak tahun 2017, termasuk beberapa kali konversi bullish dan bearish, menunjukkan bahwa strategi ini masih berkinerja baik dalam kondisi lintas-siklus. Ini membuktikan bahwa strategi ini beradaptasi dengan karakteristik linier dan non-linier pasar.
Strategi ini memiliki risiko sebagai berikut:
Solusi:
Strategi ini juga dapat dioptimalkan dalam beberapa hal:
Strategi ini berhasil menggabungkan penilaian tren dari moving averages dan penilaian tambahan dari MACD, dan menetapkan stop loss yang masuk akal, yang dapat menghasilkan keuntungan yang stabil dalam berbagai situasi. Dengan cara terus-menerus mengoptimalkan pengaturan parameter, menambahkan kondisi filter tambahan, stabilitas dan profitabilitas strategi dapat ditingkatkan lebih lanjut.
/*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')