Strategi ini mengira pelbagai jenis purata bergerak untuk menentukan arah trend harga dan melaksanakan kemasukan satu sisi. Ia membuka kedudukan panjang atau pendek apabila harga memecahkan purata bergerak.
Strategi ini membolehkan memilih dari 7 jenis purata bergerak yang berbeza, termasuk Purata Bergerak Sederhana (SMA), Purata Bergerak Eksponen (EMA), Purata Bergerak Bertimbang Volume (VWMA), Purata Bergerak Eksponen Ganda (DEMA), Purata Bergerak Eksponen Ganda (TEMA), Purata Bergerak Adaptif Kaufman (KAMA) dan Garis Tengah Saluran Harga. Ia menilai arah trend harga berdasarkan hubungan antara purata bergerak yang dipilih dan harga penutupan.
Apabila harga penutupan menembusi garis purata bergerak ke atas, ia dinilai sebagai trend menaik dan kedudukan panjang dibuka. Apabila harga penutupan menembusi garis purata bergerak ke bawah, ia dinilai sebagai downtrend dan kedudukan pendek dibuka. Ini dapat menangkap titik perubahan dalam trend harga dan mencapai kemasukan satu sisi.
Kelebihan strategi ini ialah:
Pelbagai jenis purata bergerak boleh dipilih untuk fleksibiliti yang sesuai dengan produk dan kitaran yang berbeza.
Masukan satu sisi boleh mengawal risiko dengan berkesan.
Masuk ke arah trend adalah mudah untuk mendapat keuntungan.
Ia mudah difahami dan dilaksanakan.
Terdapat juga beberapa risiko dengan strategi ini:
Apabila harga berayun di sekitar garis purata bergerak, akan ada beberapa isyarat palsu dan kedudukan masuk terbalik.
Ia tidak dapat sepenuhnya mengelakkan risiko yang disebabkan oleh pergerakan harga naik atau turun yang cepat.
Penganalisis perlu memilih parameter purata bergerak yang sesuai. Parameter yang tidak sesuai dengan mudah boleh menyebabkan kelewatan isyarat perdagangan.
Strategi ini boleh dioptimumkan dari aspek berikut:
Gabungkan dengan penunjuk teknikal lain seperti MACD, RSI untuk menilai isyarat trend dan membentuk gabungan perdagangan.
Tambah logik stop loss, seperti trailing stop loss atau pending order stop loss.
Uji dan optimum parameter seperti tempoh purata bergerak, jenis purata bergerak untuk mencari kombinasi parameter yang optimum.
Pertimbangkan untuk menggunakan jenis pesanan MarketIfTouched untuk masuk, untuk mengikuti trend.
Strategi ini menentukan arah trend harga berdasarkan purata bergerak, dan melaksanakan kemasukan satu sisi. Ia mudah digunakan dan dilaksanakan, dan dapat mengawal risiko dengan berkesan. Tetapi terdapat juga risiko isyarat palsu dan kemasukan terbalik. Ia boleh terus ditingkatkan dengan menggabungkan penunjuk isyarat lain, mengoptimumkan parameter, menambah stop loss, untuk menjadikan strategi lebih stabil dan boleh dipercayai.
/*backtest start: 2023-11-24 00:00:00 end: 2023-12-24 00:00:00 period: 1h basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=2 strategy(title = "Noro's MAs Tests v1.1", shorttitle = "MAs tests 1.1", overlay=true, default_qty_type = strategy.percent_of_equity, default_qty_value=100.0, pyramiding=0) needlong = input(true, "long") needshort = input(true, "short") len = input(30, defval = 30, minval = 2, maxval = 1000, title = "MA length") type = input(1, defval = 1, minval = 1, maxval = 7, title = "Type") src = input(close, defval = close, title = "Source") anti = input(true, defval = true, title = "Antipila") //DEMA dema = 2 * ema(src, len) - ema(ema(close, len), len) //TEMA xPrice = close xEMA1 = ema(src, len) xEMA2 = ema(xEMA1, len) xEMA3 = ema(xEMA2, len) tema = 3 * xEMA1 - 3 * xEMA2 + xEMA3 //KAMA xvnoise = abs(src - src[1]) nfastend = 0.20 nslowend = 0.05 nsignal = abs(src - src[len]) nnoise = sum(xvnoise, len) nefratio = iff(nnoise != 0, nsignal / nnoise, 0) nsmooth = pow(nefratio * (nfastend - nslowend) + nslowend, 2) kama = nz(kama[1]) + nsmooth * (src - nz(kama[1])) //PriceChannel lasthigh = highest(src, len) lastlow = lowest(src, len) center = (lasthigh + lastlow) / 2 ma = type == 1 ? sma(src, len) : type == 2 ? ema(src, len) : type == 3 ? vwma(src, len) : type == 4 ? dema : type == 5 ? tema : type == 6 ? kama : type == 7 ? center : 0 plot(ma, color = blue, linewidth = 3, transp = 0) trend = anti == false and close > ma ? 1 : anti == false and close < ma ? -1 : low > ma ? 1 : high < ma ? -1 : trend[1] longCondition = trend == 1 and trend[1] == -1 if (longCondition) strategy.entry("Long", strategy.long, needlong == false ? 0 : na) shortCondition = trend == -1 and trend[1] == 1 if (shortCondition) strategy.entry("Short", strategy.short, needshort == false ? 0 : na)