Perlu dicatat bahwa strategi default untuk mempertaruhkan 25% dari akun pada setiap perdagangan dan mengenakan komisi 0,5% per perdagangan.
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.
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.
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.
/*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)