Strategi perdagangan BIAS kadar penyimpangan

Penulis:Kebaikan, Dicipta: 2020-06-30 09:58:26, Dikemas kini: 2023-10-28 15:29:08

[TOC]

img

Ringkasan

Seperti kata pepatah, dunia ini akan berpisah selepas lama bersatu. juga akan melakukan sebaliknya selepas lama berpecah. Dan fenomena ini juga wujud di pasaran niaga hadapan. Tidak ada pelbagai yang hanya naik tetapi tidak jatuh. Tetapi bila naik dan bila jatuh, ia bergantung kepada kadar penyimpangan. Dalam artikel ini, kita akan menggunakan kadar penyimpangan untuk membina strategi perdagangan yang mudah.

Pengenalan ringkas

img

Kadar penyimpangan BIAS adalah penunjuk teknikal yang berasal dari purata bergerak. Ia terutamanya dalam bentuk peratusan untuk mengukur tahap penyimpangan harga dari purata bergerak dalam turun naik. Jika purata bergerak adalah kos purata peniaga, kadar penyimpangan adalah kadar pulangan purata peniaga.

Prinsip kadar penyimpangan

Asas teori kadar penyimpangan adalah analisis hati peniaga. Apabila harga lebih besar daripada kos purata pasaran, ini bermakna bahawa peniaga kedudukan panjang akan mempunyai idea untuk menyalurkan keuntungan, yang akan menyebabkan harga jatuh. Apabila harga kurang daripada kos purata pasaran, ini bermakna bahawa penjual pendek menguntungkan, dan idea untuk menyalurkan keuntungan akan menyebabkan harga meningkat.

  • Apabila harga menyimpang ke atas dari purata bergerak, kadar penyimpangan terlalu besar, dan terdapat kemungkinan tinggi bahawa harga akan jatuh pada masa akan datang.

  • Apabila harga menyimpang dari purata bergerak ke bawah, kadar penyimpangan terlalu kecil, dan terdapat kemungkinan tinggi bahawa harga akan meningkat pada masa akan datang.

Walaupun purata bergerak dikira dari harga, dari segi bentuk luaran, harga pasti akan bergerak lebih dekat dengan purata bergerak, atau harga akan sentiasa turun naik di sekitar purata bergerak.

Rumus untuk mengira kadar penyimpangan

Kadar penyimpangan = [ ((harga penutupan hari - harga purata hari N) / harga purata hari N] * 100%

Antara mereka, N adalah parameter purata bergerak, kerana tempoh N adalah berbeza, hasil pengiraan kadar penyimpangan juga berbeza. Secara umum, nilai N adalah: 6, 12, 24, 36, dan lain-lain. Dalam penggunaan sebenar, ia juga boleh diselaraskan secara dinamik mengikut pelbagai jenis. Walau bagaimanapun, pemilihan parameter sangat penting. Jika parameter terlalu kecil, kadar penyimpangan akan terlalu sensitif, jika parameter terlalu besar, kadar penyimpangan akan terlalu perlahan. Hasil pengiraan kadar penyimpangan adalah positif dan negatif. Semakin besar kadar penyimpangan positif, semakin besar keuntungan lembu dan semakin besar kebarangkalian pembetulan harga. Semakin besar kadar penyimpangan, semakin besar keuntungan pendek dan semakin besar kebarangkalian harga bangkit.

Logik strategi

Oleh kerana kadar penyimpangan adalah satu lagi bentuk purata bergerak, maka kita juga boleh menyesuaikan strategi kadar penyimpangan berganda berdasarkan strategi purata bergerak berganda. Menghakimi dari hubungan kedudukan antara kadar penyimpangan jangka pendek dan kadar penyimpangan jangka panjang, keadaan pasaran semasa dinilai. Jika kadar penyimpangan jangka panjang lebih besar daripada kadar penyimpangan jangka pendek, ia sebenarnya mewakili purata bergerak jangka pendek ke atas melintasi purata bergerak jangka panjang, dan sebaliknya.

  • Pembukaan kedudukan panjang: jika tidak ada kedudukan memegang semasa dan kadar penyimpangan jangka panjang lebih besar daripada kadar penyimpangan jangka pendek
  • Pembukaan kedudukan pendek: jika tidak ada kedudukan memegang semasa dan kadar penyimpangan jangka panjang adalah kurang daripada kadar penyimpangan jangka pendek
  • Penutupan kedudukan panjang: jika terdapat kedudukan panjang yang dipegang, dan kadar penyimpangan jangka panjang adalah kurang daripada kadar penyimpangan jangka pendek
  • Penutupan kedudukan pendek: jika terdapat kedudukan pendek, dan kadar penyimpangan jangka panjang lebih besar daripada kadar 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 menggunakan mod latihan putaran.mainfungsi danonTickfungsi perlu ditakrifkan. fungsi utama adalah fungsi kemasukan strategi, dan program akan melaksanakan baris kod baris bermula dari fungsi utama. dalam fungsi utama, menuliswhilegelung dan berulang kali menjalankanonTickSemua kod teras strategi ditulis dalamonTick function.

Langkah 2: Tentukan kedudukan maya

mp = 0

Kelebihan kedudukan maya adalah bahawa ia mudah untuk menulis, dan operasi berulang adalah cepat. Ia biasanya digunakan dalam persekitaran backtest. Ia dianggap bahawa setiap pesanan dipenuhi sepenuhnya, tetapi kedudukan sebenar biasanya digunakan dalam perdagangan sebenar. Oleh kerana kedudukan maya adalah untuk merekodkan keadaan selepas pembukaan dan penutupan, ia perlu ditakrifkan sebagai pembolehubah 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 boleh melanggan kontrak indeks rebar dengan lulus dalam rb000, tetapi dalam backtest dan situasi pasaran sebenar, indeks rebar digunakan sebagai data, dan kontrak utama tertentu digunakan untuk meletakkan pesanan.GetRecordsfungsi untuk mendapatkan data K-garis indeks rebar. kerana ia mengambil tempoh tertentu untuk mengira kadar penyimpangan, untuk mengelakkan kesilapan program, jika tidak ada cukup K garis, menggunakanifkata-kata untuk penapis.

Langkah 4: Hitung kadar 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 formula untuk mengira kadar penyimpangan, kita mula-mula mendapatkan harga penutupan. Dalam strategi ini, kita menggunakan harga penutupan K-line sebelumnya, yang bermaksud bahawa isyarat K-line semasa ditubuhkan dan K-line seterusnya adalah untuk meletakkan pesanan. Kemudian gunakan FMZ terbina dalamtalibperpustakaan untuk mengira purata bergerak.TA.MA. Fungsi ini menerima 2 parameter, iaitu: Array garis K dan tempoh purata bergerak.

Langkah 5: Menempatkan 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 diterbitkan di laman web FMZ:https://www.fmz.com/strategy/215129

Ujian belakang strategi

Konfigurasi Backtest

img

Laporan prestasi

img img

Kurva dana

img

Ringkasan

Kadar penyimpangan adalah alat perdagangan yang mudah dan berkesan yang boleh memberikan rujukan yang berkesan untuk peniaga. Dalam penggunaan sebenar, ia boleh digunakan dengan fleksibel dengan penunjuk band MACD dan Bollinger untuk benar-benar mencerminkan nilainya.


Berkaitan

Lebih lanjut