Williams
Strategi ini menggunakan tiga SMA dengan panjang tempoh yang berbeza - garis cepat sma1, garis tengah sma2, dan garis perlahan sma3, di mana sma1 mempunyai tempoh yang paling pendek dan sma3 mempunyai yang paling lama.
Apabila sma1 melintasi di atas sma2, dan sma2 melintasi di atas sma3, ia menunjukkan pasaran berada dalam trend menaik dan membentuk mulut buaya menaik.
Sebaliknya, apabila sma1 melintasi di bawah sma2, dan sma2 melintasi di bawah sma3, ia menunjukkan pasaran berada dalam trend ke bawah dan membentuk mulut buaya ke bawah.
Keadaan keluar adalah apabila ketiga-tiga garis sejajar semula, dengan garis cepat di bawah garis tengah atau garis tengah di bawah garis perlahan.
Strategi ini juga menggambar warna latar belakang untuk mengenal pasti arah trend - hijau untuk uptrend dan merah untuk downtrend.
Ringkasnya, strategi ini menggunakan kekuatan purata bergerak dan corak mulut buaya untuk menentukan arah trend dan berdagang dengan sewajarnya.
Untuk menangani risiko, penambahbaikan berikut boleh dibuat:
Tambah penapis trend untuk mengelakkan whipsaws di pasaran yang berbeza.
Mengoptimumkan keadaan keluar menggunakan penunjuk trend.
Tambah strategi stop loss untuk mengawal kerugian perdagangan tunggal.
Gunakan purata bergerak adaptif supaya tempoh menyesuaikan secara dinamik.
Strategi ini boleh dioptimumkan lagi dalam aspek berikut:
Tambah penapis kekuatan trend untuk mengelakkan kemasukan awal dalam trend lemah. Penunjuk seperti MACD, KDJ boleh membantu.
Mengoptimumkan tempoh purata bergerak untuk mencari kombinasi terbaik melalui backtesting.
Gunakan purata bergerak adaptif supaya tempoh menyesuaikan diri berdasarkan momentum pasaran.
Tambah strategi stop loss seperti trailing stop loss, baki akaun stop loss untuk mengawal risiko.
Meningkatkan keadaan kemasukan menggunakan jumlah, Bollinger Bands dan lain-lain untuk meningkatkan ketepatan.
Meningkatkan keadaan keluar dengan menilai kebarangkalian pembalikan trend dengan penunjuk apabila garis bersilang.
Williams
/*backtest start: 2023-10-13 00:00:00 end: 2023-11-12 00:00:00 period: 1h basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //Noro //2019 //@version=3 strategy(title = "Noro's Alligator Strategy by Bill Williams", shorttitle = "Alligator", overlay = true, default_qty_type = strategy.percent_of_equity, default_qty_value = 100, pyramiding = 0) //Settings needlong = input(true, defval = true, title = "Long") needshort = input(true, defval = true, title = "Short") capital = input(100, defval = 100, minval = 1, maxval = 10000, title = "Lot") len1 = input(50, defval = 50, minval = 1, title = "MA 1 Length") len2 = input(100, defval = 100, minval = 1, title = "MA 2 Length") len3 = input(200, defval = 200, minval = 1, title = "MA 3 Length") src = input(close, title = "Source") showbg = input(false, title = "Show Background") fromyear = input(1900, defval = 1900, minval = 1900, maxval = 2100, title = "From Year") toyear = input(2100, defval = 2100, minval = 1900, maxval = 2100, title = "To Year") frommonth = input(01, defval = 01, minval = 01, maxval = 12, title = "From Month") tomonth = input(12, defval = 12, minval = 01, maxval = 12, title = "To Month") fromday = input(01, defval = 01, minval = 01, maxval = 31, title = "From day") today = input(31, defval = 31, minval = 01, maxval = 31, title = "To day") //MAs sma1 = sma(src, len1) sma2 = sma(src, len2) sma3 = sma(src, len3) plot(sma1, color = lime, linewidth = 2) plot(sma2, color = blue, linewidth = 2) plot(sma3, color = red, linewidth = 2) //Signals up = sma1 > sma2 and sma2 > sma3 dn = sma1 < sma2 and sma2 < sma3 //Background trend = 0 trend := up ? 1 : dn ? -1 : trend[1] col = showbg == false ? na : trend == 1 ? lime : red bgcolor(col) //Trading size = strategy.position_size lot = 0.0 lot := size != size[1] ? strategy.equity / close * capital / 100 : lot[1] if up strategy.entry("Long", strategy.long, needlong ? lot : 0, when = (time > timestamp(fromyear, frommonth, fromday, 00, 00) and time < timestamp(toyear, tomonth, today, 23, 59))) if dn strategy.entry("Short", strategy.short, needshort ? lot : 0, when = (time > timestamp(fromyear, frommonth, fromday, 00, 00) and time < timestamp(toyear, tomonth, today, 23, 59))) if time > timestamp(toyear, tomonth, today, 23, 59) strategy.close_all()