Strategi Perdagangan Volatilitas Akhir Pekan

Penulis:ChaoZhang, Tanggal: 2023-11-16 10:53:01
Tag:

img

Gambaran umum

Strategi ini menetapkan kondisi masuk panjang dan pendek berdasarkan harga penutupan hari Jumat, dan pergi panjang atau pendek setelah pembukaan hari Sabtu dan Minggu, keluar dari semua posisi sebelum pembukaan hari Senin.

Prinsip-prinsip

  1. Catat harga penutupan hari Jumat sebagai harga referensi
  2. Pada hari Sabtu dan Minggu buka:
    • Jika harga di atas 105% dari hari Jumat tutup, pergi pendek
    • Jika harga di bawah 95% dari hari Jumat tutup, pergi panjang
  3. Mengambil keuntungan ditetapkan pada 3% dari modal awal
  4. Tutup semua posisi sebelum buka Senin

Analisis Keuntungan

  1. Perdagangan pada akhir pekan volume dan volatilitas rendah untuk mengurangi risiko pasar
  2. Aturan masuk dan keluar yang jelas menyederhanakan pelaksanaan strategi
  3. Mengupayakan keuntungan kecil yang stabil dengan perdagangan jangka pendek
  4. Perputaran modal yang tinggi dengan siklus pendek

Analisis Risiko

  1. Fluktuasi harga akhir pekan mungkin lebih kecil dari yang diharapkan, tidak dapat membuka posisi
  2. Volatilitas yang berlebihan dapat menyebabkan stop loss
  3. Peristiwa penting pada hari Senin dapat menyebabkan kesenjangan harga, tidak dapat menghentikan kerugian tepat waktu

Solusi Risiko:

  1. Sesuaikan rentang fluktuasi untuk entri
  2. Tentukan titik stop loss yang tepat
  3. Tutup posisi lebih awal, hindari menahan selama akhir pekan

Pedoman Optimasi

  1. Sesuaikan ambang masuk berdasarkan karakteristik produk yang berbeda
  2. Mengoptimalkan aturan mengambil keuntungan berdasarkan hasil backtest
  3. Pilih leverage berdasarkan ukuran modal
  4. Tambahkan filter indikator seperti moving average ke entri waktu

Ringkasan

Strategi trading jangka pendek ini memiliki logika yang sangat jelas dan langkah-langkah pengendalian risiko. Dengan penyesuaian parameter yang tepat dan pengujian dan optimasi berkelanjutan, dapat menghasilkan pengembalian investasi yang stabil. Pada saat yang sama, risiko kerugian akhir pekan yang besar karena volatilitas yang berlebihan perlu dikelola melalui pengendalian risiko yang tepat.


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

//@version=3
//Copyright Boris Kozak 
strategy("XBT Weekend Trade Strategy", overlay=true, default_qty_type=strategy.percent_of_equity,initial_capital=20000)
leverage = input(1,"Leverage")
profitTakingPercentThreshold = input(0.03,"Profit Taking Percent Threshold")

//****Code used for setting up backtesting.****///
testStartYear = input(2017, "Backtest Start Year")
testStartMonth = input(12, "Backtest Start Month")
testStartDay = input(10, "Backtest Start Day")
testPeriodStart = timestamp(testStartYear,testStartMonth,testStartDay,0,0)

testStopYear = input(2025, "Backtest Stop Year")
testStopMonth = input(12, "Backtest Stop Month")
testStopDay = input(30, "Backtest Stop Day")
testPeriodStop = timestamp(testStopYear,testStopMonth,testStopDay,0,0)

// A switch to control background coloring of the test period
testPeriodBackground = input(title="Color Background?", type=bool, defval=true)
testPeriodBackgroundColor = testPeriodBackground and (time >= testPeriodStart) and (time <= testPeriodStop) ? #00FFFF : na
bgcolor(testPeriodBackgroundColor, transp=50)

testPeriod() => true
    
//****END Code used for setting up backtesting.****///


//*** Main entry point is here***//
// Figure out how many days since the Friday close 
days_since_friday = if dayofweek == 6
    0
else 
    if dayofweek == 7
        1
    else
        if dayofweek == 1
            2
        else
            if dayofweek == 2
                3
            else
                if dayofweek == 3
                    4
                else
                    if dayofweek == 4
                        5
                    else
                        6
    
// Grab the Friday close price
fridaycloseprice = request.security(syminfo.tickerid,'D',close[days_since_friday])
plot(fridaycloseprice)
strategy.initial_capital = 50000
// Only perform backtesting during the window specified 
if testPeriod()
    // If we've reached out profit threshold, exit all positions 
    if ((strategy.openprofit/strategy.initial_capital) > profitTakingPercentThreshold)
        strategy.close_all()
    // Only execute this trade on saturday and sunday (UTC)
    if (dayofweek == 7.0 or dayofweek == 1.0)
        // Begin - Empty position (no active trades)
        if (strategy.position_size == 0)
            // If current close price > threshold, go short 
            if ((close>fridaycloseprice*1.045))
                strategy.entry("Short Entry", strategy.short, leverage)
            else
                // If current close price < threshold, go long
                if (close<(fridaycloseprice*0.955))
                    strategy.entry("Long Entry",strategy.long, leverage)
        // Begin - we already have a position
        if (abs(strategy.position_size) > 0)
            // We are short 
            if (strategy.position_size < 0)
                if ((close>strategy.position_avg_price*1.045))
                    // Add to the position
                    strategy.entry("Adding to Short Entry", strategy.short, leverage)
            else
                strategy.entry("Long Entry",strategy.long,leverage)
    // On Monday, if we have any open positions, close them 
    if (dayofweek==2.0)
        strategy.close_all()
 






Lebih banyak