Strategi Perintah Berjangka

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

Ringkasan

Idea utama strategi pesanan berkala adalah untuk menjalankan operasi membeli dan menjual pada titik masa yang ditakrifkan oleh pengguna. Strategi ini membolehkan pengguna menetapkan titik masa yang tepat. Pada titik masa ini, ia akan menjual kedudukan semasa terlebih dahulu, dan kemudian meletakkan pesanan beli had pada 1% di bawah harga semasa. Ini membolehkan penyimbangan semula berkala dilakukan pada masa tertentu setiap hari.

Logika Strategi

Strategi pertama menggunakan fungsi input untuk mendapatkan jam dan minit tersuai yang ditakrifkan oleh pengguna, dan kemudian menghasilkan masa pelaksanaan pesanan menggunakan fungsi cap masa.

Secara khusus, strategi pertama memeriksa sama ada masa semasa berada dalam julat tarikh permulaan dan akhir yang ditakrifkan oleh pengguna. Jika ya, apabila titik masa pelaksanaan pesanan yang ditentukan dicapai, ia akan terlebih dahulu menjual kedudukan semasa pada harga pasaran, dan kemudian meletakkan pesanan beli had pada 99% daripada harga semasa. Ini mencapai keseimbangan semula pada harga 1% lebih rendah daripada harga semasa pada titik masa tertentu.

Analisis Kelebihan

Kelebihan terbesar strategi ini adalah bahawa ia boleh secara berkala menyeimbangkan semula kedudukan pada titik masa tertentu tanpa campur tangan manual, mengurangkan kos buruh.

Kelebihan khusus termasuk:

  1. Operasi automatik sepenuhnya, mengurangkan kos manual.

  2. Membolehkan penimbangan semula kedudukan secara berkala pada titik masa tertentu.

  3. Mendapat peluang pembelian yang sangat rendah sekitar 1% di bawah harga semasa semasa setiap penyimbangan semula.

  4. Titik masa rebalancing yang boleh disesuaikan, penyesuaian fleksibel.

  5. Tarikh permulaan dan akhir yang boleh disesuaikan untuk kitaran rebalancing, mudah untuk pengoptimuman backtesting.

Analisis Risiko

Strategi ini juga mempunyai beberapa risiko untuk diperhatikan:

  1. Jika masa penyeimbangan semula berkala tidak dipilih dengan baik, ia mungkin kehilangan peluang membeli yang lebih baik atau menjual pada masa yang tidak sesuai.

  2. Harga beli hanya 1% lebih rendah daripada harga jual, mungkin tidak mendapat harga harga beli yang sangat rendah dalam setiap kitaran rebalancing.

  3. Kedua-dua jual dan beli adalah pesanan pasaran, mungkin mengalami beberapa tahap slippage.

  4. Jika strategi hanya beroperasi pada titik masa tertentu, pasaran tidak boleh diuruskan antara titik masa tersebut.

  5. Pengimbangan semula yang kerap akan menimbulkan bayaran dagangan yang agak tinggi.

Penyelesaiannya:

  1. Pilih titik masa rebalancing yang sesuai, juga digabungkan dengan penunjuk teknikal lain.

  2. Tingkatkan parameter spread harga beli yang sesuai.

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

  4. Gabungkan dengan strategi lain untuk pengurusan risiko semasa tempoh tidak menyeimbangkan semula.

  5. Mengendalikan kekerapan penyeimbangan semula dengan sewajarnya untuk mengimbangi kelebihan dan kos perdagangan.

Arahan pengoptimuman

Strategi ini boleh dioptimumkan dalam aspek berikut:

  1. Mengoptimumkan pemilihan titik masa rebalancing berdasarkan ciri kitaran intraday produk dagangan.

  2. Tambah penunjuk teknikal lain untuk mengelakkan rebalancing pada masa yang tidak baik.

  3. Mengoptimumkan parameter beli yang sangat rendah untuk mengimbangi kelebihan dan kos dagangan.

  4. Mengambil stop loss / mengambil keuntungan untuk menguruskan kedudukan antara penyimbangan semula.

  5. Gunakan algoritma pembelajaran mesin untuk melatih data sejarah dan secara automatik mengoptimumkan titik masa rebalancing.

  6. Tambah penyesuaian di sekitar pembahagian stok, dividen dan lain-lain untuk mengikuti perubahan masa.

Ringkasan

Secara amnya, strategi pesanan berkala dapat mengotomatiskan proses perdagangan dan mengurangkan kos operasi manual melalui rebalancing berkala. Terdapat ruang yang besar untuk pengoptimuman dalam bidang seperti pemilihan titik masa rebalancing, penetapan parameter beli, stop loss / mengambil keuntungan, dan penambahbaikan algoritma. Juga perlu mengambil risiko perdagangan tertentu dan mengambil langkah pengurusan risiko yang sesuai. Secara keseluruhan, strategi ini sesuai untuk peniaga kuantitatif yang mencari rebalancing automatik yang cekap.


/*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 lanjut