Strategi perdagangan keseimbangan putaran panjang dan pendek kitaran masa pintar

ATR SMA RSI BB MA
Tarikh penciptaan: 2024-11-12 16:33:43 Akhirnya diubah suai: 2024-11-12 16:33:43
Salin: 1 Bilangan klik: 506
1
fokus pada
1617
Pengikut

Strategi perdagangan keseimbangan putaran panjang dan pendek kitaran masa pintar

Gambaran keseluruhan

Ini adalah strategi bergilir pintar berdasarkan kitaran masa, untuk mendapatkan keuntungan dengan melakukan perdagangan bergilir-gilir dalam tempoh masa yang ditetapkan. Strategi ini menggunakan mekanisme pengurusan kedudukan yang fleksibel, yang dapat menyesuaikan arah perdagangan secara automatik mengikut keadaan pasaran, sambil mempunyai fungsi kawalan risiko.

Prinsip Strategi

Strategi ini mengawal perdagangan melalui kitaran masa dan keadaan memegang kedudukan. Pertama, dengan fungsi inActivePeriod () untuk menentukan sama ada dalam jarak perdagangan yang sah dari 500 baris K yang paling dekat. Dalam jarak yang sah, strategi memutuskan tindakan perdagangan berdasarkan pembolehubah seperti keadaan memegang kedudukan (positionHeld), masa memegang kedudukan (barsHeld) dan masa berhenti (barsPaused). Apabila mod perdagangan berayun diaktifkan, strategi akan bergerak cepat dalam arah multirumah; apabila mod perdagangan berayun dinonaktifkan, strategi akan meratakan kedudukan selepas 3 kitaran memegang kedudukan dan menunggu peluang perdagangan baru.

Kelebihan Strategik

  1. Fleksibiliti: menyokong mod perdagangan dua hala, multicore, multicore, atau multicore
  2. Risiko terkawal: Mengelakkan risiko jangka panjang dengan membatasi tempoh mingguan
  3. Keupayaan beradaptasi: dapat menyesuaikan arah perdagangan secara automatik mengikut keadaan pasaran
  4. Operasi mudah: Logik perdagangan jelas, mudah difahami dan dilaksanakan
  5. Kecekapan kewangan: meningkatkan kecekapan penggunaan kewangan melalui perpindahan yang kerap
  6. Parameter boleh disesuaikan: parameter utama boleh disesuaikan dengan keperluan sebenar

Risiko Strategik

  1. Perdagangan yang kerap mungkin membawa kepada perbelanjaan bayaran yang lebih tinggi
  2. Isyarat palsu yang sering berlaku dalam pasaran yang bergolak
  3. Siklus pegangan tetap boleh kehilangan peluang pasaran yang penting
  4. Tidak mengambil kira trend pasaran, mungkin bertentangan dengan trend utama
  5. Kekurangan mekanisme penangguhan kerugian yang boleh menyebabkan kerugian yang lebih besar dalam keadaan yang melampau

Arah pengoptimuman strategi

  1. Memperkenalkan penunjuk kadar turun naik (seperti ATR) untuk secara dinamik menyesuaikan masa pegangan
  2. Meningkatkan petunjuk trend dan meningkatkan ketepatan arah perdagangan
  3. Menambah mekanisme penangguhan kerugian dan meningkatkan keupayaan kawalan risiko
  4. Optimumkan masa kemasukan, mengelakkan dagangan pada masa yang tidak menguntungkan
  5. Memperkenalkan sistem pengurusan wang untuk mengoptimumkan saiz pegangan
  6. Menambah ketepatan perdagangan dengan penambahan indikator sentimen pasaran

ringkaskan

Strategi ini memperoleh keuntungan pasaran dengan cara mengawal kitaran masa dan pergerakan multirole, mempunyai fleksibiliti dan kebolehsuaian yang kuat. Walaupun terdapat beberapa risiko, tetapi dengan langkah-langkah pengoptimuman dan kawalan risiko yang munasabah, kestabilan dan keuntungan strategi dapat ditingkatkan dengan ketara.

Kod sumber strategi
/*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)