Strategi perdagangan BIAS tingkat penyimpangan

Penulis:Kebaikan, Dibuat: 2020-06-30 09:58:26, Diperbarui: 2023-10-28 15:29:08

[TOC]

img

Ringkasan

Seperti kata pepatah, dunia ini akan terpisah setelah lama bersatu. juga akan melakukan sebaliknya setelah lama pliting. Dan fenomena ini juga ada di pasar berjangka. Tidak ada variasi yang hanya naik tetapi tidak jatuh. Tapi kapan naik dan kapan jatuh, itu tergantung pada tingkat penyimpangan. Dalam artikel ini, kita akan menggunakan tingkat penyimpangan untuk membangun strategi perdagangan yang sederhana.

Pengantar singkat

img

Bias adalah indikator teknis yang berasal dari rata-rata bergerak. Hal ini terutama dalam bentuk persentase untuk mengukur tingkat penyimpangan harga dari rata-rata bergerak dalam fluktuasi. Jika rata-rata bergerak adalah biaya rata-rata trader, tingkat penyimpangan adalah rata-rata tingkat pengembalian trader.

Prinsip tingkat penyimpangan

Dasar teoritis dari tingkat deviasi adalah analisis hati trader. Ketika harga lebih besar dari biaya rata-rata pasar, itu berarti bahwa pedagang posisi panjang akan memiliki gagasan untuk menguangkan keuntungan, yang akan menyebabkan harga turun. Ketika harga lebih rendah dari biaya rata-rata pasar, itu berarti bahwa penjual pendek menguntungkan, dan gagasan untuk menguangkan keuntungan akan menyebabkan harga naik.

  • Ketika harga menyimpang ke atas dari rata-rata bergerak, tingkat penyimpangan terlalu besar, dan ada kemungkinan tinggi bahwa harga akan turun di masa depan.

  • Ketika harga menyimpang dari rata-rata bergerak ke bawah, tingkat penyimpangan terlalu kecil, dan ada kemungkinan tinggi bahwa harga akan naik di masa depan.

Meskipun rata-rata bergerak dihitung dari harga, dalam hal bentuk eksternal, harga pasti akan bergerak lebih dekat ke rata-rata bergerak, atau harga akan selalu berfluktuasi di sekitar rata-rata bergerak.

Rumus untuk menghitung tingkat penyimpangan

Tingkat penyimpangan = [ ((harga penutupan hari - harga rata-rata hari N) / harga rata-rata hari N] * 100%

Di antara mereka, N adalah parameter rata-rata bergerak, karena periode N berbeda, hasil perhitungan tingkat penyimpangan juga berbeda. Secara umum, nilai N adalah: 6, 12, 24, 36, dll. Dalam penggunaan yang sebenarnya, juga dapat disesuaikan secara dinamis sesuai dengan berbagai varietas. Namun, pemilihan parameter sangat penting. Jika parameter terlalu kecil, tingkat penyimpangan akan terlalu sensitif, jika parameter terlalu besar, tingkat penyimpangan akan terlalu lambat. Hasil perhitungan tingkat penyimpangan positif dan negatif. Semakin besar tingkat penyimpangan positif, semakin besar keuntungan bulls dan semakin besar kemungkinan koreksi harga. Semakin besar tingkat penyimpangan, semakin besar keuntungan pendek dan semakin besar kemungkinan harga rebound.

Logika strategi

Karena tingkat penyimpangan adalah bentuk lain dari rata-rata bergerak, maka kita juga dapat menyesuaikan strategi tingkat penyimpangan ganda berdasarkan strategi rata-rata bergerak ganda. Berdasarkan hubungan posisi antara tingkat penyimpangan jangka pendek dan tingkat penyimpangan jangka panjang, keadaan pasar saat ini dinilai. Jika tingkat penyimpangan jangka panjang lebih besar dari tingkat penyimpangan jangka pendek, itu sebenarnya mewakili rata-rata bergerak jangka pendek ke atas melintasi rata-rata bergerak jangka panjang, dan sebaliknya.

  • Pembukaan posisi panjang: jika tidak ada posisi kepemilikan saat ini dan tingkat deviasi jangka panjang lebih besar dari tingkat deviasi jangka pendek
  • Pembukaan posisi pendek: jika tidak ada posisi kepemilikan saat ini dan tingkat penyimpangan jangka panjang lebih rendah dari tingkat penyimpangan jangka pendek
  • Penutupan posisi panjang: jika ada posisi panjang yang dipegang, dan tingkat penyimpangan jangka panjang kurang dari tingkat penyimpangan jangka pendek
  • Penutupan posisi pendek: jika ada posisi pendek yang ditahan, dan tingkat penyimpangan jangka panjang lebih besar dari tingkat penyimpangan jangka pendek

Menulis strategi

Langkah 1: Menulis kerangka strategi

# Strategy main function
def onTick():
     pass


# Program entry
def main():
     while True: # Enter infinite loop mode
         onTick() # execution strategy main function
         Sleep(1000) # sleep for 1 second

Platform FMZ mengadopsi mode pelatihan rotasi.mainFungsi danonTickfungsi harus didefinisikan. Fungsi utama adalah fungsi entri dari strategi, dan program akan mengeksekusi baris kode baris dimulai dari fungsi utama.whileloop dan berulang kali menjalankanonTickSemua kode inti dari strategi ditulis dalamonTick function.

Langkah 2: Mendefinisikan posisi virtual

mp = 0

Keuntungan dari posisi virtual adalah bahwa itu mudah untuk menulis, dan operasi iteratif cepat. Hal ini umumnya digunakan dalam lingkungan backtest. Diasumsikan bahwa setiap pesanan sepenuhnya diisi, tetapi posisi sebenarnya biasanya digunakan dalam perdagangan yang sebenarnya. Karena posisi virtual adalah untuk merekam keadaan setelah pembukaan dan penutupan, itu perlu didefinisikan sebagai variabel global.

Langkah 3: Dapatkan garis K

exchange.SetContractType('rb000') # Subscribe to futures varieties
bars_arr = exchange.GetRecords() # Get K-line array
if len(bars_arr) <long + 1: # If the number of K lines is too small
     return

Menggunakan fungsi FMZSetContractType, Anda dapat berlangganan kontrak indeks rebar dengan melewati rb000, tetapi dalam backtest dan situasi pasar nyata, indeks rebar digunakan sebagai data, dan kontrak utama tertentu digunakan untuk menempatkan pesanan.GetRecordsfungsi untuk mendapatkan data K-line dari indeks rebar. Karena dibutuhkan periode tertentu untuk menghitung tingkat penyimpangan, untuk menghindari kesalahan program, jika tidak ada cukup K garis, menggunakanifpernyataan untuk menyaring.

Langkah 4: Menghitung tingkat penyimpangan

close = bars_arr[-2]['Close'] # Get the closing price of the previous K line
ma1 = TA.MA(bars_arr, short)[-2] # Calculate the short-term moving average value of the previous K line
bias1 = (close-ma1) / ma1 * 100 # Calculate the short-term deviation rate value
ma2 = TA.MA(bars_arr, long)[-2] # Calculate the long-term average of the previous K line
bias2 = (close-ma2) / ma2 * 100 # Calculate the long-term deviation rate value

Menurut rumus untuk menghitung tingkat deviasi, kita pertama mendapatkan harga penutupan. dalam strategi ini, kita menggunakan harga penutupan K-line sebelumnya, yang berarti bahwa sinyal K-line saat ini ditetapkan dan K-line berikutnya adalah untuk menempatkan pesanan. kemudian gunakan FMZ built-intalibperpustakaan untuk menghitung rata-rata bergerak. misalnya rata-rata bergerak adalah:TA.MAFungsi ini menerima 2 parameter, yaitu: K array garis dan periode rata-rata bergerak.

Tahap 5: Membuat pesanan

global mp # global variables
current_price = bars_arr[-1]['Close'] # latest price
if mp> 0: # If you are holding long positions
    if bias2 <= bias1: # If the long-term deviation rate is less than or equal to the short-term deviation rate
        exchange.SetDirection("closebuy") # Set the trading direction and type
        exchange.Sell(current_price-1, 1) # Closing long positions
        mp = 0 # reset virtual holding positions
if mp <0: # If you are holding short positions
    if bias2 >= bias1: # If the long-term deviation rate is greater than or equal to the short-term deviation rate
        exchange.SetDirection("closesell") # Set the trading direction and type
        exchange.Buy(current_price + 1, 1) # closing short positions
        mp = 0 # reset virtual holding positions
if mp == 0: # If there is no holding position
    if bias2> bias1: # Long-term deviation rate is greater than short-term deviation rate
        exchange.SetDirection("buy") # Set the trading direction and type
        exchange.Buy(current_price + 1, 1) # open long positions
        mp = 1 # reset virtual holding position
    if bias2 <bias1: # The long-term deviation rate is less than the short-term deviation rate
        exchange.SetDirection("sell") # Set the trading direction and type
        exchange.Sell(current_price-1, 1) # open short positions
        mp = -1 # reset virtual holding position

Strategi Lengkap

# Backtest configuration
'''backtest
start: 2018-01-01 00:00:00
end: 2020-01-01 00:00:00
period: 1h
basePeriod: 1h
exchanges: [{"eid":"Futures_CTP","currency":"FUTURES"}]
'''

# External parameters
short = 10
long = 50


# Global variables
mp = 0


# Strategy main function
def onTick():
    # retrieve data
    exchange.SetContractType('rb000') # Subscribe to futures varieties
    bars_arr = exchange.GetRecords() # Get K-line array
    if len(bars_arr) <long + 1: # If the number of K lines is too small
        return

    # Calculate BIAS
    close = bars_arr[-2]['Close'] # Get the closing price of the previous K line
    ma1 = TA.MA(bars_arr, short)[-2] # Calculate the short-term moving average of the previous K line
    bias1 = (close-ma1) / ma1 * 100 # Calculate the short-term deviation rate value
    ma2 = TA.MA(bars_arr, long)[-2] # Calculate the long-term average of the previous K line
    bias2 = (close-ma2) / ma2 * 100 # Calculate the long-term deviation rate value

    # Placing Orders
    global mp # global variables
    current_price = bars_arr[-1]['Close'] # latest price
    if mp> 0: # If you are holding long positions
        if bias2 <= bias1: # If the long-term deviation rate is less than or equal to the short-term deviation rate
            exchange.SetDirection("closebuy") # Set the trading direction and type
            exchange.Sell(current_price-1, 1) # closing long positions
            mp = 0 # reset virtual holding position
    if mp <0: # If you are holding short positions
        if bias2 >= bias1: # If the long-term deviation rate is greater than or equal to the short-term deviation rate
            exchange.SetDirection("closesell") # Set the trading direction and type
            exchange.Buy(current_price + 1, 1) # closing short positions
            mp = 0 # reset virtual holding position
    if mp == 0: # If there is no holding position
        if bias2> bias1: # Long-term deviation rate is greater than short-term deviation rate
            exchange.SetDirection("buy") # Set the trading direction and type
            exchange.Buy(current_price + 1, 1) # opening long positions
            mp = 1 # reset virtual holding position
        if bias2 <bias1: # The long-term deviation rate is less than the short-term deviation rate
            exchange.SetDirection("sell") # Set the trading direction and type
            exchange.Sell(current_price-1, 1) # open short positions
            mp = -1 # reset virtual holding position
        

# Program entry function
def main():
    while True: # loop
        onTick() # execution strategy main function
        Sleep(1000) # sleep for 1 second

Strategi lengkap telah dipublikasikan di situs web FMZ:https://www.fmz.com/strategy/215129

Strategi backtest

Konfigurasi Backtest

img

Laporan kinerja

img img

Kurva dana

img

Singkatnya

Tingkat deviasi adalah alat perdagangan yang sederhana dan efektif yang dapat memberikan referensi yang efektif bagi pedagang. Dalam penggunaan yang sebenarnya, dapat diterapkan secara fleksibel dengan indikator MACD dan Bollinger Band untuk benar-benar mencerminkan nilainya.


Berkaitan

Lebih banyak