Strategi perdagangan kuantitatif berdasarkan perbandingan harga penutupan garis K dan penyaringan EMA


Tanggal Pembuatan: 2023-12-27 14:38:28 Akhirnya memodifikasi: 2023-12-27 14:38:28
menyalin: 1 Jumlah klik: 755
1
fokus pada
1623
Pengikut

Strategi perdagangan kuantitatif berdasarkan perbandingan harga penutupan garis K dan penyaringan EMA

1. Gambaran Umum Strategi

Strategi ini disebut strategi perdagangan kuantitatif yang didasarkan pada perbandingan harga penutupan K-line dengan filter EMA. Strategi ini didasarkan pada perbandingan harga penutupan K-line dengan filter EMA dengan jumlah K-line multihead dan K-line kosong yang terbentuk dalam harga penutupan K-line dalam periode tertentu.

2. Prinsip Strategi

Logika inti dari strategi ini adalah untuk menghitung jumlah K-line upCloseCount dan jumlah K-line downCloseCount yang muncul dalam periode lookback terakhir. Jika jumlah upCloseCount lebih banyak, maka itu dianggap sebagai pasar overhead, dan jika jumlah downCloseCount lebih banyak, maka itu dianggap sebagai pasar kosong.

Logika yang digunakan untuk menilai adalah:

Kondisi pemicu sinyal multihead: inSession adalah “true” (dalam jangka waktu perdagangan) dan upCloseCount > downCloseCount (lebih banyak garis K yang ditutup) dan close > ema (harga yang ditutup lebih tinggi dari EMA) dan currentSignal tidak “long” (tidak ada posisi saat ini)

Kondisi pemicu sinyal kosong: inSession adalah true dan downCloseCount > upCloseCount (< ema) dan currentSignal tidak “short” (< tidak ada posisi saat ini)

Ketiga, analisis kekuatan strategi.

  1. Berdasarkan perbandingan antara harga K-Line pada periode tertentu untuk menilai tren harga dan psikologis pasar, dengan efek mengikuti tren tertentu.
  2. Menyaring tren harga dengan indikator EMA untuk menghindari kesalahan perdagangan dalam situasi yang bergejolak
  3. Menetapkan periode perdagangan tertentu untuk menghindari perdagangan dalam kebisingan di luar periode perdagangan utama
  4. Keseimbangan antara tren dan frekuensi transaksi

Keempat, analisis risiko strategis

  1. Dalam situasi yang disortir secara horizontal, harga close out lebih mudah untuk disalahartikan dan menyebabkan kerugian yang tidak perlu
  2. Penetapan parameter EMA yang salah juga dapat menyebabkan efek filter yang buruk
  3. Tidak mengatur waktu trading dengan benar dapat menyebabkan kehilangan peluang trading atau kesalahan trading.
  4. Gap tidak dapat dilacak secara efektif.

Tanggapan:

  1. Optimalkan parameter EMA untuk mencari keseimbangan optimal
  2. Optimalkan periode transaksi
  3. Mengontrol kerugian tunggal dengan strategi stop loss

Kelima, optimalisasi strategi

  1. Optimalkan periode perdagangan untuk menemukan periode perdagangan terbaik
  2. Optimasi parameter untuk siklus EMA dan kelancaran
  3. Menambahkan mekanisme stop loss berbasis ATR
  4. Menambahkan modul untuk mengidentifikasi insiden, menghindari risiko Gap
  5. Pertimbangkan kombinasi dengan indikator lain untuk mencari penyaringan yang lebih baik
  6. Uji perbedaan performa dari berbagai varietas, menyesuaikan parameter sesuai dengan perbedaan

VI. Kesimpulan

Strategi ini mengidentifikasi sinyal tren dalam jangka waktu perdagangan tertentu dengan menghitung jumlah garis K yang terbentuk dalam periode sejarah tertentu. Strategi ini memiliki efek pelacakan tren tertentu. Namun, ada risiko perdagangan yang salah.

Kode Sumber Strategi
/*backtest
start: 2023-11-26 00:00:00
end: 2023-12-26 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy("Up vs Down Close Candles Strategy with EMA and Session Time Frames", shorttitle="UvD Strat EMA Session", overlay=true)

// User input to define the lookback period, EMA period, and session strings for time frames
int lookback = input(20, title="Lookback Period")
int emaPeriod = input(50, title="EMA Period")
string session1 = input("0900-1200", title="Time Frame 1 Session")
string session2 = input("1300-1600", title="Time Frame 2 Session")

// Calculate the EMA
float ema = ta.ema(close, emaPeriod)

// State variable to track the current signal
var string currentSignal = na

// Counting up-close and down-close candles within the lookback period
int upCloseCount = 0
int downCloseCount = 0

if barstate.isnew
    upCloseCount := 0
    downCloseCount := 0
    for i = 0 to lookback - 1
        if close[i] > close[i + 1]
            upCloseCount += 1
        else if close[i] < close[i + 1]
            downCloseCount += 1

// Define the long (buy) and short (sell) conditions with EMA filter and session time frame
bool inSession = time(timeframe.period, session1) or time(timeframe.period, session2)
bool longCondition = inSession and upCloseCount > downCloseCount and close > ema and currentSignal != "long"
bool shortCondition = inSession and downCloseCount > upCloseCount and close < ema and currentSignal != "short"

// Enter or exit the market based on conditions
if longCondition
    currentSignal := "long"
    strategy.entry("Buy", strategy.long)

if shortCondition
    currentSignal := "short"
    strategy.entry("Sell", strategy.short)

// Exit logic for long and short positions
if currentSignal == "long" and strategy.position_size <= 0
    strategy.close("Sell")

if currentSignal == "short" and strategy.position_size >= 0
    strategy.close("Buy")

plot(ema, color=color.blue, title="EMA")