Strategi Rata-rata Gerak Poligon

Penulis:ChaoZhang, Tanggal: 2023-10-31 14:53:50
Tag:

img

Gambaran umum

Strategi Rata-rata Gerak Poligon membangun poligon dengan beberapa rata-rata gerak periode yang berbeda dan menggunakan terobosan poligon sebagai sinyal perdagangan.

Logika Strategi

Strategi ini memetakan beberapa EMA, seperti EMA 3-periode, 7-periode dan 13-periode, untuk membentuk saluran poligon. Ketika harga melanggar di atas EMA, sinyal panjang dihasilkan. Ketika harga melanggar di bawah EMA, sinyal pendek dihasilkan. Ini membantu menghindari banyak pecah palsu.

Kode ini menentukan sinyal terobosan dengan membandingkan harga penutupan dengan EMA menggunakan kondisi seperti close>ema1 dan ema1>ema2 dan ema2>ema3.

Keuntungan

Keuntungan terbesar dari strategi ini adalah kemampuannya untuk secara efektif menangkap arah tren utama dengan menggunakan beberapa moving average sebagai filter untuk menghindari kebisingan.

Risiko dan Solusi

Risiko utama adalah bahwa strategi ini gagal mengidentifikasi titik pembalikan tren dan dapat menyebabkan kerugian selama pembalikan tren. pengaturan periode MA yang tidak tepat juga dapat mengakibatkan overtrading atau sinyal tertinggal. risiko dapat dikurangi dengan mengoptimalkan kombinasi MA, menambahkan indikator pembalikan, memperluas rentang stop loss, dll.

Arahan Optimasi

Strategi dapat dioptimalkan dalam aspek berikut:

  1. Optimalkan periode MA untuk menemukan kombinasi terbaik.

  2. Tambahkan indikator pembalikan seperti RSI dan MACD untuk keluar dari perdagangan tepat waktu.

  3. Optimalkan rentang stop loss dan offset untuk mengurangi stop loss prematur.

  4. Mengoptimalkan parameter untuk produk yang berbeda untuk meningkatkan kemampuan beradaptasi.

Ringkasan

Strategi Polygon Moving Average umumnya merupakan sistem trend following yang dapat diandalkan dan efektif. Kekuatannya yang terbesar adalah menangkap tren utama sambil menyaring kebisingan secara signifikan. Tetapi memiliki beberapa keterbatasan dalam mengidentifikasi pembalikan. Kita dapat memperbaikinya dengan mengoptimalkan parameter, menambahkan indikator tambahan, dll. Ini cocok untuk pasar dengan tren yang jelas dan dapat menghasilkan keuntungan yang stabil jika digunakan dengan benar.


/*backtest
start: 2023-09-30 00:00:00
end: 2023-10-30 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/
// © Crypto-Oli

//@version=4
strategy("BLANK Strategy + TSL", initial_capital=5000, default_qty_type=strategy.percent_of_equity, default_qty_value=100, commission_type=strategy.commission.percent, pyramiding=1, commission_value=0.075, overlay=true)

////////////////////////////////////////////////////////////////////////////////
// BACKTESTING RANGE
 
// From Date Inputs
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 = 2019, title = "From Year", minval = 1970)
 
// To Date Inputs
toDay = input(defval = 1, title = "To Day", minval = 1, maxval = 31)
toMonth = input(defval = 1, title = "To Month", minval = 1, maxval = 12)
toYear = input(defval = 2020, title = "To Year", minval = 1970)
 
// Calculate start/end date and time condition
startDate = timestamp(fromYear, fromMonth, fromDay, 00, 00)
finishDate = timestamp(toYear, toMonth, toDay, 00, 00)
time_cond = true
 
////////////////////////////////////////////////////////////////////////////////


/// YOUR INPUTS BELOW - DELET EXAPLES ///


ema1=ema(close,input(3))
ema2=ema(close,input(7))
ema3=ema(close,input(13))


/// PLOTS IF YOU NEED BELOW - DELET EXAPLES ///


plot(ema1, "EMA1", color.yellow)
plot(ema2, "EMA2", color.white)
plot(ema3, "EMA3", color.blue)


/// YOUR CONDITIONS BELOW - DELET EXAPLES ///


longCondition = close>ema1 and ema1>ema2 and ema2>ema3 and time_cond
shortCondition = close<ema1 and ema1<ema2 and ema2<ema3 and time_cond

/// EXECUTION ///


if (longCondition)
    strategy.entry("Long", strategy.long)
strategy.exit("Long Exit", "Long", trail_points = close * 0.05 / syminfo.mintick, trail_offset = close * 0.02 / syminfo.mintick)

if (shortCondition)
    strategy.entry("Short", strategy.short)
strategy.exit("Short Exit", "Short", trail_points = close * 0.05 / syminfo.mintick, trail_offset = close * 0.02 / syminfo.mintick)

Lebih banyak