Sumber daya yang dimuat... Pemuatan...

K Lilin Berturut-turut Bull Bear Strategi

Penulis:ChaoZhang, Tanggal: 2024-05-17 13:54:06
Tag:EMAATR

img

Gambaran umum

Strategi ini menentukan pasar bull atau bear berdasarkan jumlah lilin naik atau turun berturut-turut dan membuat perdagangan sesuai dengan itu. Ketika harga penutupan berturut-turut lebih tinggi dari lilin sebelumnya ditutup untuk jumlah waktu yang ditentukan, ia memasuki posisi panjang; ketika harga penutupan berturut-turut lebih rendah dari lilin sebelumnya ditutup untuk jumlah waktu yang ditentukan, ia memasuki posisi pendek. Stop loss dan take profit ditetapkan, dan mekanisme trailing stop diperkenalkan untuk melindungi keuntungan.

Prinsip Strategi

  1. Catat jumlah kali kondisi bullish dan bearish berturut-turut terpenuhi. Jika penutupan lebih tinggi dari lilin sebelumnya, jumlah bullish meningkat sebesar 1 dan jumlah bearish diatur kembali menjadi 0; jika penutupan lebih rendah, jumlah bearish meningkat sebesar 1 dan jumlah bullish diatur kembali menjadi 0; jika tidak, kedua hitungan diatur kembali menjadi 0.
  2. Ketika jumlah bullish mencapai angka k yang ditentukan, masukkan posisi panjang dengan stop loss dan ambil keuntungan.
  3. Untuk posisi panjang, catat harga tertinggi setelah masuk. Ketika harga tertinggi melebihi harga masuk dengan unit variasi harga minimum iTGT dan penutupan menarik kembali di bawah harga tertinggi dengan iPcnt%, tutup posisi.
  4. Ketika angka penurunan mencapai angka k2 yang ditentukan, masukkan posisi pendek dengan stop loss dan ambil keuntungan.
  5. Untuk posisi pendek, catat harga terendah setelah masuk. Ketika harga terendah lebih rendah dari harga masuk dengan unit variasi harga minimum iTGT dan rebound dekat di atas harga terendah dengan iPcnt%, tutup posisi.

Keuntungan Strategi

  1. Sederhana dan mudah dipahami, membuat keputusan perdagangan berdasarkan kontinuitas lilin dengan logika yang jelas.
  2. Memperkenalkan mekanisme trailing stop untuk secara aktif melindungi keuntungan setelah harga bergerak jarak tertentu ke arah yang menguntungkan.
  3. Menetapkan stop loss dan mengambil keuntungan dapat secara efektif mengendalikan risiko dan mengunci keuntungan.
  4. Parameter yang dapat disesuaikan sesuai dengan pasar dan gaya perdagangan yang berbeda.

Risiko Strategi

  1. Di pasar yang berbelit-belit, sering membuka dan menutup posisi dapat menyebabkan biaya slippage yang besar.
  2. Penghakiman nomor lilin berturut-turut dipengaruhi oleh kebisingan pasar, yang dapat mengakibatkan sinyal yang sering.
  3. Tingkat stop loss dan take profit tetap mungkin tidak dapat beradaptasi dengan perubahan volatilitas pasar.

Arah Optimasi Strategi

  1. Memperkenalkan lebih banyak indikator teknis, seperti rata-rata bergerak dan volatilitas, untuk membantu menilai kekuatan dan arah tren.
  2. Mengoptimalkan kondisi pemicu untuk berhenti, seperti menyesuaikan persentase pullback berdasarkan ATR.
  3. Mengadopsi metode stop loss dan take profit yang lebih dinamis, seperti trailing stop dan steped take profit.
  4. Mengoptimalkan parameter untuk menemukan kombinasi optimal untuk pasar dan instrumen yang berbeda.

Ringkasan

Strategi ini menangkap tren bull dan bear melalui kontinuitas lilin sambil mengatur stop loss dan take profit untuk mengontrol risiko. Pengenalan trailing stop dapat lebih melindungi keuntungan. Namun, hal ini dapat menghasilkan sinyal yang sering di pasar yang bergolak, yang membutuhkan optimasi lebih lanjut terhadap keandalan sinyal. Selain itu, pengaturan stop loss dan take profit dapat lebih fleksibel untuk beradaptasi dengan perubahan pasar yang dinamis. Secara keseluruhan, strategi ini memiliki ide yang sederhana dan jelas, cocok untuk pasar tren, tetapi masih ada ruang untuk optimasi.


/*backtest
start: 2024-04-16 00:00:00
end: 2024-05-16 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy("K Consecutive Candles 數來寶V2", max_bars_back=300, overlay=true)

// 定義用戶輸入
k = input.int(3, title="Number of Consecutive Candles for Long", minval=1)
k2 = input.int(3, title="Number of Consecutive Candles for Short", minval=1)
stopLossTicks = input.int(500, title="Stop Loss (Ticks)")
takeProfitTicks = input.int(500, title="Take Profit (Ticks)")
iTGT = input.int(200,"iTGT")  // 移動停利點
iPcnt = input.int(50,"iPcnt")  // 移動停利%

var float TrailValue = 0
var float TrailExit = 0
var float  vMP = 0

BarsSinceEntry = ta.barssince(strategy.position_size == 0)

vMP := strategy.position_size

// 创建一个包含键值对的字典
addArrayData(type, value) =>
    alert_array = array.new_string()
    array.push(alert_array, '"timenow": ' + str.tostring(timenow))
    array.push(alert_array, '"seqNum": ' + str.tostring(value))
    array.push(alert_array, '"type": "' + type + '"')
    alertstring = '{' + array.join(alert_array,', ') + '}'


// 定義條件變量
var int countLong = 0  // 記錄連續多頭條件成立的次數
var int countShort = 0 // 記錄連續空頭條件成立的次數

// 計算連續大於或小於前一根的收盤價格的次數
if close > close[1]
    countLong += 1
    countShort := 0 // 重置空頭計數
else if close < close[1]
    countShort += 1
    countLong := 0 // 重置多頭計數
else
    countLong := 0
    countShort := 0

// 開設多頭倉位條件
if countLong >= k
    strategy.entry("Long Entry", strategy.long)
    strategy.exit("Exit Long", "Long Entry", loss=stopLossTicks, profit=takeProfitTicks)
    

if vMP>0
    TrailValue := ta.highest(high,BarsSinceEntry)
    TrailExit := TrailValue - iPcnt*0.01*(TrailValue - strategy.position_avg_price)
    if TrailValue > strategy.position_avg_price + iTGT * syminfo.minmove/syminfo.pricescale and close < TrailExit
        
        strategy.close("Long Entry", comment = "Trl_LX"+ str.tostring(close[0]))
// 開設空頭倉位條件
if countShort >= k2
    strategy.entry("Short Entry", strategy.short)
    strategy.exit("Exit Short", "Short Entry", loss=stopLossTicks, profit=takeProfitTicks)

if vMP<0    
    TrailValue := ta.lowest(low,BarsSinceEntry)
    TrailExit := TrailValue - iPcnt*0.01*(TrailValue - strategy.position_avg_price)
    if TrailValue < strategy.position_avg_price - iTGT * syminfo.minmove/syminfo.pricescale and close > TrailExit
        
        strategy.close("short60", comment = "Trl_SX"+ str.tostring(close[0]))






Berkaitan

Lebih banyak