Sumber daya yang dimuat... Pemuatan...

Strategi perdagangan yang seimbang berbasis waktu dengan rotasi jangka panjang dan jangka pendek

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

img

Gambaran umum

Ini adalah strategi rotasi cerdas berdasarkan periode waktu yang bertujuan untuk menghasilkan laba melalui perdagangan rotasi panjang-pendek dalam periode waktu yang ditentukan. Strategi ini menggunakan mekanisme manajemen posisi yang fleksibel yang dapat secara otomatis menyesuaikan arah perdagangan sesuai dengan kondisi pasar sambil menggabungkan fungsi pengendalian risiko.

Prinsip Strategi

Strategi ini terutama mengontrol perdagangan melalui periode waktu dan status posisi. Pertama, fungsi inActivePeriod (()) menentukan apakah perdagangan berada dalam interval perdagangan efektif dari 500 bar terakhir. Dalam interval efektif, strategi memutuskan tindakan perdagangan berdasarkan variabel seperti status posisi (positionHeld), waktu menahan (barsHeld), dan waktu jeda (barsPaused). Ketika mode perdagangan ayunan diaktifkan, strategi berputar dengan cepat antara arah panjang dan pendek; ketika dinonaktifkan, posisi ditutup setelah 3 periode dan menunggu peluang perdagangan baru.

Keuntungan Strategi

  1. Fleksibilitas tinggi: Mendukung mode perdagangan panjang murni, pendek murni, atau dua arah
  2. Risiko Terkontrol: Batas waktu kepemilikan posisi melalui periode waktu untuk menghindari risiko posisi jangka panjang
  3. Adaptabilitas yang baik: Mengatur arah perdagangan secara otomatis berdasarkan kondisi pasar
  4. Operasi sederhana: Logika perdagangan yang jelas, mudah dimengerti dan dilaksanakan
  5. Efisiensi Modal Tinggi: Meningkatkan pemanfaatan modal melalui rotasi yang sering
  6. Parameter yang dapat disesuaikan: Parameter utama dapat disesuaikan secara fleksibel sesuai dengan kebutuhan aktual

Risiko Strategi

  1. Perdagangan yang sering dapat menyebabkan biaya komisi yang tinggi
  2. Dapat menghasilkan sinyal palsu yang sering di pasar osilasi
  3. Periode penyimpanan tetap mungkin kehilangan peluang pasar penting
  4. Tren pasar tidak dipertimbangkan, dapat diperdagangkan terhadap tren utama
  5. Kurangnya mekanisme stop loss dapat menyebabkan kerugian yang signifikan dalam kondisi pasar yang ekstrem

Arah Optimasi Strategi

  1. Memperkenalkan indikator volatilitas (seperti ATR) untuk menyesuaikan periode penahanan secara dinamis
  2. Menambahkan indikator penilaian tren untuk meningkatkan akurasi arah perdagangan
  3. Termasuk mekanisme stop loss dan take profit untuk meningkatkan kontrol risiko
  4. Mengoptimalkan waktu masuk untuk menghindari periode perdagangan yang tidak menguntungkan
  5. Memperkenalkan sistem manajemen uang untuk mengoptimalkan ukuran posisi
  6. Menambahkan indikator sentimen pasar untuk meningkatkan akurasi perdagangan

Ringkasan

Strategi ini mencapai pengembalian pasar melalui pengendalian periode waktu dan rotasi jangka pendek, menunjukkan fleksibilitas dan kemampuan beradaptasi yang kuat. Meskipun ada risiko tertentu, stabilitas dan profitabilitas strategi dapat ditingkatkan secara signifikan melalui pengoptimalan dan langkah-langkah pengendalian risiko yang wajar. Keuntungan utamanya terletak pada logika perdagangan yang sederhana namun efektif, menjadikannya cocok sebagai strategi dasar untuk optimasi dan ekspansi lebih 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 banyak