Strategi perdagangan keseimbangan rotasi panjang dan pendek siklus waktu cerdas

ATR SMA RSI BB MA
Tanggal Pembuatan: 2024-11-12 16:33:43 Akhirnya memodifikasi: 2024-11-12 16:33:43
menyalin: 1 Jumlah klik: 506
1
fokus pada
1617
Pengikut

Strategi perdagangan keseimbangan rotasi panjang dan pendek siklus waktu cerdas

Ringkasan

Ini adalah strategi rotasi cerdas berbasis siklus waktu, yang memperoleh keuntungan dengan melakukan perdagangan rotasi multi-posisi dalam periode waktu yang ditentukan. Strategi ini menggunakan mekanisme manajemen posisi yang fleksibel, yang dapat secara otomatis menyesuaikan arah perdagangan sesuai dengan lingkungan pasar, sambil memiliki fungsi kontrol risiko. Strategi ini mendukung perdagangan dua arah multi-posisi, dan dapat secara opsional memulai mode perdagangan berayun, dengan kemampuan beradaptasi yang kuat.

Prinsip Strategi

Strategi ini mengontrol perdagangan melalui siklus waktu dan status posisi. Pertama, dengan fungsi inActivePeriod () untuk menentukan apakah dalam kisaran perdagangan yang valid dari 500 garis K yang paling dekat. Dalam kisaran yang valid, strategi memutuskan tindakan perdagangan berdasarkan variabel seperti posisi memegang (positionHeld), waktu memegang (barsHeld), dan waktu berhenti (barsPaused). Ketika mode perdagangan berayun diaktifkan, strategi akan berputar dengan cepat di berbagai arah.

Keunggulan Strategis

  1. Fleksibel: Mendukung multi-head, blank-head, atau multi-blank mode perdagangan dua arah
  2. Mengontrol risiko: Menghindari risiko jangka panjang dengan membatasi jangka waktu
  3. Adaptif: dapat secara otomatis menyesuaikan arah perdagangan sesuai dengan kondisi pasar
  4. Operasi sederhana: Logika transaksi jelas, mudah dipahami dan dilakukan
  5. Efisiensi dana: meningkatkan efisiensi penggunaan dana melalui rotasi yang sering
  6. Parameter dapat disesuaikan: parameter kunci dapat disesuaikan secara fleksibel sesuai dengan kebutuhan aktual

Risiko Strategis

  1. Transaksi yang sering dapat menyebabkan pengeluaran biaya yang lebih tinggi
  2. Dalam situasi pasar yang bergejolak, sinyal palsu dapat sering muncul.
  3. Siklus pegangan tetap dapat melewatkan peluang pasar yang penting
  4. Tidak mempertimbangkan tren pasar, mungkin bertentangan dengan tren utama
  5. Kurangnya mekanisme penghentian kerugian yang dapat menyebabkan kerugian yang lebih besar dalam situasi yang ekstrem

Arah optimasi strategi

  1. Memperkenalkan indikator volatilitas (seperti ATR) untuk secara dinamis menyesuaikan waktu memegang posisi
  2. Meningkatkan indikator penilaian tren, meningkatkan keakuratan arah perdagangan
  3. Menambahkan mekanisme stop loss dan meningkatkan kemampuan pengendalian risiko
  4. Optimalkan waktu masuk, hindari perdagangan pada waktu yang tidak menguntungkan
  5. Sistem Manajemen Uang dan Optimalisasi Posisi
  6. Menambahkan indikator sentimen pasar untuk meningkatkan akurasi transaksi

Meringkaskan

Strategi ini mengambil keuntungan dari pasar melalui kontrol siklus waktu dan rotasi multi-udara, memiliki fleksibilitas dan kemampuan beradaptasi yang kuat. Meskipun ada beberapa risiko, stabilitas dan profitabilitas strategi dapat ditingkatkan secara signifikan melalui pengoptimalan dan pengendalian risiko yang masuk akal.

Kode 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)