Strategi perdagangan intertemporal pembalikan musiman

Penulis:ChaoZhang, Tanggal: 2024-01-25 14:07:35
Tag:

img

Gambaran umum

Prinsip Strategi

Perlu dicatat bahwa strategi default untuk mempertaruhkan 25% dari akun pada setiap perdagangan dan mengenakan komisi 0,5% per perdagangan.

Analisis Keuntungan

Keuntungan terbesar dari strategi ini adalah untuk mendapatkan keuntungan dari pembalikan pasar yang disebabkan oleh efek musiman. Banyak komoditas dan pasar keuangan memiliki fluktuasi harga musiman yang signifikan. Jika waktu masuk dan keluar yang tepat dipilih, peluang pembalikan yang disebabkan oleh efek musiman tersebut dapat ditangkap secara efektif.

Analisis Risiko

Untuk mengurangi risiko, pertimbangan dapat diberikan untuk mengoptimalkan pemilihan waktu masuk dan keluar, menggabungkan lebih banyak analisis untuk menilai kondisi pasar, dan menetapkan stop untuk mengendalikan risiko.

Arahan Optimasi

Ada banyak ruang untuk mengoptimalkan strategi ini. Pertama, logika stop loss dapat diperkenalkan untuk menetapkan rentang stop loss yang wajar. Kedua, lebih banyak kombinasi entri dan keluar yang berbeda dapat diuji untuk menemukan parameter optimal. Juga, lebih banyak faktor dapat dipertimbangkan untuk menilai kondisi pasar dan menghindari perdagangan di lingkungan yang tidak menguntungkan. Akhirnya, memperkenalkan algoritma bertimbang eksponensial untuk menyesuaikan ukuran posisi, meningkatkan ukuran posisi saat menghasilkan keuntungan, dan mengurangi ukuran posisi saat kehilangan.

Ringkasan


/*backtest
start: 2023-01-24 00:00:00
end: 2024-01-24 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © EmpiricalFX

//@version=4
strategy("Seasonality Benchmark ","Season",overlay=false,default_qty_type=strategy.percent_of_equity,
     default_qty_value=25,initial_capital=100000,currency="USD",
     commission_type=strategy.commission.percent,commission_value=0.5)
input_entry_direction = input("Long","Position Type",options=["Long","Short"])
input_entry_month = input("Oct","Entry Month",options=["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"])
input_exit_month = input("Jan","Entry Month",options=["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"])

//Convert three character month string to integer
month_str_to_int(m)=>
    ret = m == "Jan" ? 1 :
          m == "Feb" ? 2 :
          m == "Mar" ? 3 :
          m == "Apr" ? 4 :
          m == "May" ? 5 :
          m == "Jun" ? 6 :
          m == "Jul" ? 7 :
          m == "Aug" ? 8 :
          m == "Sep" ? 9 :
          m == "Oct" ? 10 :
          m == "Nov" ? 11 :
          m == "Dec" ? 12 : -1
          
is_long = input_entry_direction == "Long" ? true : false
entry = month_str_to_int(input_entry_month)
exit = month_str_to_int(input_exit_month)
var balance = strategy.equity

//Entering a position is conditional on:
    //1. No currently active trades
    //2. Input entry month matches current month
if(strategy.opentrades == 0 and entry == month)
    strategy.entry("Swing",is_long)

//Exiting a position is conditional on:
    //1. Must have open trade
    //2. Input exit month matches current month
if(strategy.opentrades > 0 and exit == month)
    strategy.close("Swing")
    
//Update the balance every time a trade is exited
if(change(strategy.closedtrades)>0)
    balance := strategy.equity
    
plot(strategy.equity,"Equity",color.orange)
plot(balance,"Balance",color.red)

    

Lebih banyak