Sumber dimuat naik... memuat...

Strategi Dagangan Berimbang Berasaskan Masa Berputar Pendek dan Lama

Penulis:ChaoZhang, Tarikh: 2024-11-12 16:33:43
Tag:ATRSMARSIBBMA

img

Ringkasan

Ini adalah strategi putaran pintar berdasarkan tempoh masa yang bertujuan untuk menjana pulangan melalui perdagangan putaran panjang-pendek dalam tempoh masa yang ditentukan. Strategi ini menggunakan mekanisme pengurusan kedudukan yang fleksibel yang dapat menyesuaikan arah perdagangan secara automatik mengikut keadaan pasaran sambil menggabungkan fungsi kawalan risiko. Ia menyokong perdagangan dua arah dan mod perdagangan ayunan pilihan, menunjukkan kesesuaian yang kuat.

Prinsip Strategi

Strategi ini terutamanya mengawal perdagangan melalui tempoh masa dan status kedudukan. Pertama, fungsi inActivePeriod (()) menentukan sama ada perdagangan berada dalam selang perdagangan efektif 500 bar terakhir. Dalam selang yang berkesan, strategi memutuskan tindakan perdagangan berdasarkan pembolehubah seperti status kedudukan (positionHeld), masa memegang (barsHeld), dan masa rehat (barsPaused). Apabila mod perdagangan ayunan diaktifkan, strategi berputar dengan cepat antara arah panjang dan pendek; apabila dilumpuhkan, kedudukan ditutup selepas 3 tempoh dan menunggu peluang perdagangan baru.

Kelebihan Strategi

  1. Fleksibiliti yang tinggi: Menyokong mod perdagangan panjang, pendek, atau dua arah
  2. Risiko Terkawal: Batasan masa memegang kedudukan melalui tempoh masa untuk mengelakkan risiko kedudukan jangka panjang
  3. Kebolehsesuaian yang baik: Sesuaikan arah perdagangan secara automatik berdasarkan keadaan pasaran
  4. Operasi mudah: Logik perdagangan yang jelas, mudah difahami dan dilaksanakan
  5. Kecekapan Modal Tinggi: Meningkatkan penggunaan modal melalui putaran yang kerap
  6. Parameter yang boleh disesuaikan: Parameter utama boleh disesuaikan dengan fleksibel mengikut keperluan sebenar

Risiko Strategi

  1. Perdagangan yang kerap boleh membawa kepada kos komisen yang tinggi
  2. Boleh menghasilkan isyarat palsu yang kerap di pasaran berayun
  3. Tempoh pegangan tetap mungkin kehilangan peluang pasaran penting
  4. Tren pasaran tidak dipertimbangkan, boleh didagangkan terhadap trend utama
  5. Kekurangan mekanisme stop-loss boleh menyebabkan kerugian yang ketara dalam keadaan pasaran yang melampau

Arahan Pengoptimuman Strategi

  1. Memperkenalkan penunjuk turun naik (seperti ATR) untuk menyesuaikan tempoh penahan secara dinamik
  2. Tambah penunjuk penilaian trend untuk meningkatkan ketepatan arah perdagangan
  3. Merangkumi mekanisme stop-loss dan mengambil keuntungan untuk meningkatkan kawalan risiko
  4. Mengoptimumkan masa kemasukan untuk mengelakkan tempoh dagangan yang tidak baik
  5. Memperkenalkan sistem pengurusan wang untuk mengoptimumkan saiz kedudukan
  6. Tambah penunjuk sentimen pasaran untuk meningkatkan ketepatan perdagangan

Ringkasan

Strategi ini mencapai pulangan pasaran melalui kawalan tempoh masa dan putaran pendek yang panjang, menunjukkan fleksibiliti dan kesesuaian yang kuat. Walaupun terdapat risiko tertentu, kestabilan dan keuntungan strategi dapat ditingkatkan dengan ketara melalui pengoptimuman dan langkah kawalan risiko yang munasabah. Kelebihan utamanya terletak pada logik perdagangan yang mudah namun berkesan, menjadikannya sesuai sebagai strategi asas untuk pengoptimuman dan pengembangan lanjut.


/*backtest
start: 2024-10-12 00:00:00
end: 2024-11-11 00:00:00
period: 4h
basePeriod: 4h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy("Tickerly Test Strategy", overlay=true)

// Inputs
longEnabled = input.bool(true, "Enable Long Trades")
shortEnabled = input.bool(true, "Enable Short Trades")
swingEnabled = input.bool(false, "Enable Swing Trading")

// Variables
var positionHeld = 0
var barsHeld = 0
var barsPaused = 0
var lastAction = "none"

// Function to determine if we're in the last 500 bars
inActivePeriod() => 
    barIndex = bar_index
    lastBarIndex = last_bar_index
    barIndex >= (lastBarIndex - 499)

// Main strategy logic
if inActivePeriod()
    if swingEnabled
        if positionHeld == 0 and barstate.isconfirmed
            if lastAction != "long"
                strategy.entry("Long", strategy.long)
                positionHeld := 1
                barsHeld := 0
                lastAction := "long"
            else
                strategy.entry("Short", strategy.short)
                positionHeld := -1
                barsHeld := 0
                lastAction := "short"
        
        if positionHeld != 0
            barsHeld += 1
            if barsHeld >= 2
                if positionHeld == 1
                    strategy.entry("Short", strategy.short)
                    positionHeld := -1
                    barsHeld := 0
                    lastAction := "short"
                else
                    strategy.entry("Long", strategy.long)
                    positionHeld := 1
                    barsHeld := 0
                    lastAction := "long"
    else
        if positionHeld == 0 and barsPaused >= 1 and barstate.isconfirmed
            if longEnabled and shortEnabled
                if lastAction != "long"
                    strategy.entry("Long", strategy.long)
                    positionHeld := 1
                    barsHeld := 0
                    barsPaused := 0
                    lastAction := "long"
                else
                    strategy.entry("Short", strategy.short)
                    positionHeld := -1
                    barsHeld := 0
                    barsPaused := 0
                    lastAction := "short"
            else if longEnabled
                strategy.entry("Long", strategy.long)
                positionHeld := 1
                barsHeld := 0
                barsPaused := 0
                lastAction := "long"
            else if shortEnabled
                strategy.entry("Short", strategy.short)
                positionHeld := -1
                barsHeld := 0
                barsPaused := 0
                lastAction := "short"
        
        if positionHeld != 0
            barsHeld += 1
            if barsHeld >= 3
                strategy.close_all()
                positionHeld := 0
                barsHeld := 0
                barsPaused := 0  // Reset pause counter when exiting a position
        else
            barsPaused += 1

// Plotting active period for visual confirmation
plot(inActivePeriod() ? 1 : 0, "Active Period", color=color.new(color.blue, 80), style=plot.style_areabr)

Berkaitan

Lebih lanjut