Strategi Perintah Berwaktu

Penulis:ChaoZhang, Tanggal: 2023-09-28 15:26:20
Tag:

Gambaran umum

Ide utama dari strategi order berjam-jam adalah untuk melakukan operasi pembelian dan penjualan pada titik waktu yang ditentukan pengguna. Strategi ini memungkinkan pengguna untuk menetapkan titik waktu yang tepat. Pada titik waktu ini, pertama-tama akan menjual posisi saat ini, dan kemudian menempatkan pesanan beli batas pada 1% di bawah harga saat ini. Hal ini memungkinkan rebalancing berkala untuk dilakukan pada waktu tertentu setiap hari.

Logika Strategi

Strategi pertama menggunakan fungsi input untuk mendapatkan jam dan menit kustom yang didefinisikan oleh pengguna, dan kemudian menghasilkan waktu eksekusi order menggunakan fungsi timestamp.

Secara khusus, strategi pertama-tama memeriksa apakah waktu saat ini berada dalam kisaran tanggal awal dan akhir yang ditentukan pengguna. Jika ya, ketika titik waktu eksekusi order yang ditentukan tercapai, itu pertama-tama akan menjual posisi saat ini dengan harga pasar, dan kemudian menempatkan pesanan beli batas pada 99% dari harga saat ini. Ini mencapai rebalancing dengan harga 1% lebih rendah dari harga saat ini pada titik waktu tertentu.

Analisis Keuntungan

Keuntungan terbesar dari strategi ini adalah bahwa ia dapat secara berkala menyeimbangkan kembali posisi pada titik waktu tertentu tanpa intervensi manual, mengurangi biaya tenaga kerja.

Keuntungan spesifiknya meliputi:

  1. Operasi sepenuhnya otomatis, mengurangi biaya manual.

  2. Memungkinkan rebalancing posisi secara berkala pada titik waktu tertentu.

  3. Mendapatkan kesempatan pembelian yang sangat rendah sekitar 1% di bawah harga saat ini selama setiap rebalancing.

  4. Titik waktu rebalancing yang dapat disesuaikan, penyesuaian yang fleksibel.

  5. Tanggal awal dan akhir yang dapat disesuaikan untuk siklus rebalancing, nyaman untuk optimasi backtesting.

Analisis Risiko

Strategi ini juga memiliki beberapa risiko yang perlu dicatat:

  1. Jika titik waktu rebalancing periodik tidak dipilih dengan baik, ia mungkin kehilangan peluang pembelian yang lebih baik atau menjual pada waktu yang tidak tepat.

  2. Harga beli hanya 1% lebih rendah dari harga jual, mungkin tidak mendapatkan harga jual yang cukup rendah dalam setiap siklus rebalancing.

  3. Baik jual dan beli adalah pesanan pasar, mungkin menderita beberapa tingkat slippage.

  4. Jika strategi hanya beroperasi pada titik waktu tertentu, pasar tidak dapat dikelola antara titik waktu tersebut.

  5. Re-balancing yang sering akan menimbulkan biaya perdagangan yang relatif lebih tinggi.

Solusi yang sesuai:

  1. Memilih titik waktu rebalancing yang tepat, juga menggabungkan dengan indikator teknis lainnya.

  2. Tingkatkan parameter spread harga beli sesuai kebutuhan.

  3. Pilih produk dengan kedalaman yang baik dan volatilitas rendah.

  4. Menggabungkan dengan strategi lain untuk manajemen risiko selama periode non-re-imbalancing.

  5. Mengontrol frekuensi rebalancing dengan tepat untuk menyeimbangkan keuntungan dan biaya perdagangan.

Arahan Optimasi

Strategi dapat dioptimalkan dalam aspek berikut:

  1. Mengoptimalkan pemilihan titik waktu rebalancing berdasarkan karakteristik siklus intraday produk perdagangan.

  2. Tambahkan indikator teknis lainnya untuk menghindari rebalancing pada waktu yang tidak menguntungkan.

  3. Mengoptimalkan parameter pembelian yang sangat rendah untuk menyeimbangkan keuntungan dan biaya perdagangan.

  4. Mengadopsi trailing stop loss/take profit untuk mengelola posisi antara rebalancing.

  5. Gunakan algoritma pembelajaran mesin untuk melatih data historis dan secara otomatis mengoptimalkan titik waktu rebalancing.

  6. Tambahkan penyesuaian di sekitar pembagian saham, dividen dll untuk mengikuti perubahan waktu.

Ringkasan

Secara umum, strategi order berkala dapat mengotomatisasi proses perdagangan dan mengurangi biaya operasi manual melalui rebalancing berkala. Ada ruang besar untuk optimasi di bidang seperti pemilihan titik waktu rebalancing, pengaturan parameter beli, stop loss / take profit, dan peningkatan algoritma. Juga perlu memperhatikan risiko perdagangan tertentu dan mengambil langkah-langkah manajemen risiko yang sesuai. Secara keseluruhan, strategi ini cocok untuk pedagang kuantitatif yang mencari rebalancing otomatis yang efisien.


/*backtest
start: 2023-08-28 00:00:00
end: 2023-09-27 00:00:00
period: 1h
basePeriod: 15m
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/
// © ytrevor

//@version=4
strategy("Order At Specified Time", overlay=true)


// -- These inputs are for customizing the times of your desired orders -- //
customHour = input(title="Hour for Order Execution", type=input.integer, defval=01, minval=00, maxval=24) //
customMinute = input(title="Minute for Order Execution", type=input.integer, defval=00, minval=00, maxval=59)
targetTime = timestamp("UTC", year, month, dayofmonth, customHour, customMinute, 00) //Order executes at this time

inDateRange = (time >= targetTime) and (time <= targetTime) //Orders are placed everyday at 01:00 UTC, or any other time specified via input


// -- These inputs are for back testing. Feel free to change the start and end dates via input -- // 
startDay = input(title="Start Day", type=input.integer, defval=10, minval=1, maxval=31) 
startMonth = input(title="Start Month", type=input.integer, defval=2, minval=1, maxval=12)
startYear = input(title="Start Year", type=input.integer, defval=2021)
endDay = input(title="End Day", type=input.integer, defval=22, minval=1, maxval=31)
endMonth = input(title="End Month", type=input.integer, defval=3, minval=1, maxval=12)
endYear = input(title="End Year", type=input.integer, defval=2021)

betweenDates = true


// -- Order execution --  //
if betweenDates
    buyPrice = close*0.99 //Buy at 1% lower than selling price
    strategy.entry("Sell", strategy.short, when=inDateRange) //Sell at 01:00 UTC, or at any other time specified via input
    strategy.entry("Buy", strategy.long, limit=buyPrice, when=inDateRange) //Buy limit order placed at the same time, 1% lower than selling price




Lebih banyak