
Strategi ini dengan mengoptimumkan strategi persilangan purata bergerak biasa, menetapkan purata bergerak tiga tempoh yang berbeza, menggunakan purata bergerak 9 tempoh, 50 tempoh dan 100 tempoh untuk membina bentuk garpu emas, dalam keadaan rata-rata garis tengah panjang berada dalam trend menaik, garis rata-rata garis tengah melalui garis pendek membentuk sinyal beli garpu emas. Strategi ini dinamakan strategi perdagangan yang dioptimumkan garpu emas.
Strategi ini menggunakan tiga purata bergerak 9 kitaran, 50 kitaran dan 100 kitaran. Di antaranya, purata bergerak 9 kitaran adalah purata jangka pendek, purata bergerak 50 kitaran adalah purata garis tengah, dan purata bergerak 100 kitaran adalah purata jangka panjang. Isyarat perdagangan strategi berasal dari persilangan rata-rata jangka pendek dan rata-rata garis tengah.
Berbanding dengan strategi persilangan garis rata-rata bergerak ganda biasa, strategi ini menambah syarat untuk menilai trend jangka panjang sebelum menghasilkan isyarat perdagangan, yang dapat menyaring dengan berkesan beberapa isyarat yang tidak berkesan. Dalam kes trend jangka panjang yang tidak jelas, strategi ini tidak akan menghasilkan isyarat, dan dapat mengelakkan terikat.
Strategi ini memerlukan penyesuaian kitaran kitaran rata-rata semasa menetapkan parameter, kombinasi kitaran yang berbeza akan memberi kesan kepada kesan strategi. Jika parameter kitaran tidak ditetapkan dengan betul, terdapat risiko menghasilkan terlalu banyak isyarat palsu. Selain itu, peniaga perlu berjaga-jaga terhadap potensi risiko sistematik dan menghentikan kerugian tepat pada masanya untuk mengelakkan risiko.
Anda boleh mempertimbangkan untuk menetapkan syarat kemasukan yang lebih ketat dalam kombinasi dengan indikator lain untuk membantu menentukan trend pasaran, seperti MACD, BOLL, dan lain-lain, atau untuk membina purata bergerak yang menyesuaikan diri dalam kombinasi dengan indikator kadar turun naik, yang membolehkan parameter menyesuaikan diri secara automatik mengikut keadaan pasaran, untuk mengoptimumkan lagi strategi.
Strategi ini adalah strategi yang mudah dan praktikal untuk mengesan trend. Tetapi pedagang masih perlu memberi perhatian kepada pengoptimuman parameter dan risiko sistematik, dan membuat strategi pengurusan wang scient.
/*backtest
start: 2022-12-12 00:00:00
end: 2023-12-18 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=4
strategy("Golden Cross, SMA 100, Moving Average Strategy (by Coinrule)", shorttitle="Golden_Cross_Strat_MA100_optimized", overlay=true, initial_capital = 1000,process_orders_on_close=true, default_qty_type = strategy.percent_of_equity, default_qty_value = 100)
// Input
switch1=input(true, title="Enable Bar Color?")
switch2=input(false, title="Show Fast Moving Average")
switch3=input(true, title="Show Slow Moving Average")
//Calculate Moving Averages
movingaverage_fast = sma(close, input(9))
movingaverage_slow = sma(close, input(100))
movingaverage_normal= sma(close, input(50))
//Backtest dates
fromMonth = input(defval = 1, title = "From Month", type = input.integer, minval = 1, maxval = 12)
fromDay = input(defval = 1, title = "From Day", type = input.integer, minval = 1, maxval = 31)
fromYear = input(defval = 2020, title = "From Year", type = input.integer, minval = 1970)
thruMonth = input(defval = 1, title = "Thru Month", type = input.integer, minval = 1, maxval = 12)
thruDay = input(defval = 1, title = "Thru Day", type = input.integer, minval = 1, maxval = 31)
thruYear = input(defval = 2112, title = "Thru Year", type = input.integer, minval = 1970)
showDate = input(defval = true, title = "Show Date Range", type = input.bool)
start = timestamp(fromYear, fromMonth, fromDay, 00, 00) // backtest start window
finish = timestamp(thruYear, thruMonth, thruDay, 23, 59) // backtest finish window
window() => time >= start and time <= finish ? true : false // create function "within window of time"
// Calculation
bullish_cross = crossover(movingaverage_fast, movingaverage_normal)
bearish_cross = crossunder(movingaverage_fast, movingaverage_normal)
//Entry and Exit
if bullish_cross and window() and movingaverage_slow > movingaverage_normal
strategy.entry("long", strategy.long)
strategy.close("long", when = bearish_cross and window())
// Colors
bartrendcolor = close > movingaverage_fast and close > movingaverage_slow and change(movingaverage_slow) > 0 ? color.green : close < movingaverage_fast and close < movingaverage_slow and change(movingaverage_slow) < 0 ? color.red : color.blue
barcolor(switch1?bartrendcolor:na)
// Output
plot(movingaverage_fast, color=color.orange, linewidth=2)
plot(movingaverage_slow, color=color.purple, linewidth=3)
plot(movingaverage_normal, color=color.blue, linewidth=2)
bgcolor(color = showDate and window() ? color.gray : na, transp = 90)