Up versus Down Close Candle Strategy dengan penapis EMA dan Tempoh Sesi

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

img

1. Ringkasan Strategi

Strategi ini dinamakan Up versus Down Close Candles Strategy dengan penapis EMA dan Session Timeframes. Ia mengira jumlah lilin yang dekat dan dekat dalam tempoh yang tertentu untuk menentukan sentimen pasaran, digabungkan dengan penapis EMA dan perdagangan dalam sesi tertentu, untuk mengenal pasti isyarat panjang dan pendek.

2. Logik Strategi

Logik terasnya adalah untuk mengira bilangan lilin dekat (upCloseCount) dan lilin dekat (downCloseCount) dalam tempoh kemunculan baru-baru ini. Jika upCloseCount lebih besar, ia menunjukkan pasaran bullish. Jika downCloseCount lebih besar, ia menunjukkan pasaran bearish. Indikator EMA digunakan sebagai penapis, hanya mempertimbangkan lama apabila harga > EMA, dan pendek apabila harga < EMA. Ia juga menetapkan sesi1 dan sesi2 sebagai sesi dagangan.

Logika terperinci:

Isyarat panjang diaktifkan apabila: inSession adalah benar (dalam sesi dagangan) dan upCloseCount > downCloseCount (lebih dekat dengan lilin) dan close > ema (harga penutupan lebih tinggi daripada EMA) dan currentSignal bukan long (tidak ada kedudukan yang sedia ada).

Isyarat pendek diaktifkan apabila: inSession adalah benar dan ke bawahCloseCount > ke atasCloseCount (lebih ke bawah tutup lilin) dan menutup < ema (harga penutupan lebih rendah daripada EMA) dan semasaSinyal bukan pendek (tidak ada kedudukan yang sedia ada).

3. Analisis Kelebihan

  1. Mencatatkan sentimen pasaran dan trend dengan membandingkan sejarah lilin penutupan / bawah
  2. Gunakan penapis EMA untuk mengelakkan perdagangan di pasaran pelbagai
  3. Elakkan bunyi bising pada waktu perdagangan bukan utama dengan menetapkan sesi
  4. Keseimbangan antara trend berikut dan kekerapan dagangan

4. Analisis Risiko

  1. Boleh disesatkan di pasaran sampingan
  2. Parameter EMA yang tidak betul boleh menyebabkan penapis yang tidak berkesan
  3. Peluang yang hilang jika sesi ditetapkan dengan tidak betul
  4. Tidak dapat menangkap jurang yang disebabkan oleh peristiwa

Penyelesaian:

  1. Mengoptimumkan parameter EMA
  2. Mengoptimumkan sesi dagangan
  3. Tambah stop loss berdasarkan ATR
  4. Mengenali peristiwa, mengelakkan jurang

5. Arahan pengoptimuman

  1. Mengoptimumkan sesi dagangan
  2. Mengoptimumkan parameter EMA
  3. Tambah stop loss berasaskan ATR
  4. Mengenali peristiwa, mengelakkan jurang
  5. Menggabungkan dengan penunjuk lain untuk penapis yang lebih baik
  6. Uji dan sesuaikan di seluruh produk

6. Ringkasan

Strategi ini mengenal pasti isyarat trend dengan membandingkan lilin dekat dan bawah dekat dan menggunakan penapis EMA, dalam sesi dagangan yang telah ditetapkan. Ia mempunyai beberapa kesan trend tetapi juga risiko isyarat 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 lanjut