Up versus Down Close Candles Strategy dengan filter EMA dan Session Timeframes

Penulis:ChaoZhang, Tanggal: 2023-12-27 14:38:28
Tag:

img

1. Ringkasan Strategi

Strategi ini disebut Up versus Down Close Candles Strategy with EMA filter and Session Timeframes. Ini menghitung jumlah up close dan down close candles dalam periode lookback tertentu untuk menentukan sentimen pasar, dikombinasikan dengan filter EMA dan perdagangan dalam sesi tertentu, untuk mengidentifikasi sinyal panjang dan pendek.

2. Logika Strategi

Indikator EMA digunakan sebagai filter, hanya mempertimbangkan panjang ketika harga > EMA, dan pendek ketika harga < EMA. Ini juga menetapkan sesi1 dan sesi2 sebagai sesi perdagangan.

Logika rinci:

Sinyal panjang diaktifkan ketika: inSession true (dalam sesi perdagangan) dan upCloseCount > downCloseCount (lebih dekat lilin) dan close > ema (harga penutupan lebih tinggi dari EMA) dan currentSignal tidak long (tidak ada posisi yang ada).

Sinyal pendek diaktifkan ketika: inSession true dan downCloseCount > upCloseCount (lebih ke bawah tutup lilin) dan close < ema (harga penutupan lebih rendah dari EMA) dan currentSignal tidak short (tidak ada posisi yang ada).

3. Analisis Keuntungan

  1. Menangkap sentimen pasar dan tren dengan membandingkan sejarah penutupan/penutupan lilin
  2. Menggunakan filter EMA untuk menghindari perdagangan di pasar yang bervariasi
  3. Hindari kebisingan pada jam perdagangan non-utama dengan mengatur sesi
  4. Keseimbangan antara trend mengikuti dan frekuensi perdagangan

4. Analisis Risiko

  1. Dapat disesatkan di pasar sampingan
  2. Parameter EMA yang tidak tepat dapat menyebabkan filter yang tidak efektif
  3. Kesempatan yang hilang jika sesi diatur tidak tepat
  4. Tidak dapat menangkap celah yang disebabkan oleh peristiwa

Solusi:

  1. Mengoptimalkan parameter EMA
  2. Mengoptimalkan sesi perdagangan
  3. Tambahkan stop loss berdasarkan ATR
  4. Mengidentifikasi peristiwa, menghindari kesenjangan

5. Arahan Optimalisasi

  1. Mengoptimalkan sesi perdagangan
  2. Mengoptimalkan parameter EMA
  3. Tambahkan stop loss berdasarkan ATR
  4. Mengidentifikasi peristiwa, menghindari kesenjangan
  5. Menggabungkan dengan indikator lain untuk filter yang lebih baik
  6. Uji dan sesuaikan produk

6. Ringkasan

Strategi ini mengidentifikasi sinyal tren dengan membandingkan lilin dekat dan bawah dekat dan menggunakan filter EMA, dalam sesi perdagangan yang telah ditetapkan sebelumnya. Ini memiliki beberapa efek mengikuti tren tetapi juga risiko sinyal palsu.


/*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")


Lebih banyak