hans123 strategi terobosan intraday

Penulis:Kebaikan, Dicipta: 2020-08-12 11:38:39, Dikemas kini: 2023-10-10 21:15:02

img

Pengantar

Strategi HANS123 mula-mula digunakan terutamanya untuk pasaran pertukaran asing. Kaedah dagangnya agak mudah dan tergolong dalam sistem terobosan trend. Kaedah dagangan ini boleh memasuki pasaran sebaik sahaja trend terbentuk, jadi disukai oleh banyak peniaga. Setakat ini, HANS123 telah mengembangkan banyak versi, mari kita memahami dan menggunakan strategi HANS123 bersama-sama.

img

Prinsip Strategi

Beberapa orang percaya bahawa pembukaan pasaran pada waktu pagi adalah masa di mana pasaran mempunyai perbezaan terbesar. Selepas kira-kira 30 minit, pasaran telah sepenuhnya mencerna semua jenis maklumat semalaman, dan trend harga akan cenderung rasional dan kembali normal. Dengan kata lain: trend pasaran dalam 30 minit pertama atau lebih pada dasarnya membentuk corak perdagangan keseluruhan hari ini.

  • Rel atas: harga tertinggi dalam 30 minit pembukaan
  • Rel bawah: harga terendah dalam 30 minit pembukaan

Titik tinggi dan rendah relatif yang dihasilkan pada masa ini membentuk titik tinggi dan rendah yang berkesan dalam Teori Dow , dan strategi HANS123 adalah logika perdagangan yang ditetapkan oleh ini. Di pasaran niaga hadapan domestik, pasaran dibuka pada pukul 09:00 pagi, dan pada pukul 09:30 anda boleh menilai sama ada ia panjang atau pendek hari ini. Apabila harga memecahkan titik tinggi ke atas, harga dengan mudah akan terus meningkat; apabila harga memecahkan titik rendah ke bawah, harga dengan mudah akan terus jatuh.

  • Pembukaan kedudukan panjang: Pada masa ini tidak ada kedudukan pegangan, dan harga pecah di atas rel atas
  • Pembukaan kedudukan pendek: Pada masa ini tidak ada kedudukan pegangan, dan harga pecah di bawah rel bawah

Walaupun strategi terobosan boleh memasuki pasaran sebaik sahaja trend terbentuk. Tetapi kelebihan ini juga merupakan pedang bermata dua. Akibat daripada kemasukan sensitif, terobosan harga gagal. Oleh itu, perlu menetapkan stop loss. Pada masa yang sama, untuk mencapai logik strategi menang dan kalah, mengambil keuntungan mesti ditetapkan.

  • Stop loss kedudukan panjang: kedudukan panjang semasa telah mencapai jumlah kerugian
  • Stop loss kedudukan pendek: kedudukan pendek semasa telah mencapai jumlah kerugian
  • Mengambil keuntungan untuk kedudukan panjang, memegang kedudukan panjang dan mencapai jumlah keuntungan
  • Mengambil keuntungan untuk kedudukan pendek, memegang kedudukan pendek dan mencapai jumlah keuntungan

Menulis strategi

Buka pada gilirannya:fmz.comlaman web> Login > Dashboard > Strategy Library > New Strategy > Klik menu drop-down di sudut kanan atas untuk memilih bahasa Python dan mula menulis strategi. Perhatikan komen dalam kod di bawah.

Langkah 1: Menulis kerangka strategi

# Strategy main function
def onTick():
    pass


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

Menulis kerangka strategi, ini telah dipelajari dalam bab sebelumnya, satu adalahonTickfungsi, dan yang lain adalahmainfungsi, di manaonTickfungsi dijalankan dalam gelung tanpa akhir dalammain function.

Langkah 2: Tentukan pembolehubah global

up_line = 0 # upper rail
down_line = 0 # lower rail
trade_count = 0 # Number of transactions on the day

Oleh kerana rel atas dan bawah hanya dikira pada waktu 09:30, dan tidak ada statistik yang dilakukan pada masa yang lain, kita perlu menulis kedua-dua pembolehubah di luar gelung.trade_countsebelum menggunakan kedua-dua pembolehubah global dalam fungsi utamaonTickstrategi, anda perlu menggunakanglobalkata kunci untuk rujukan.

Langkah 3: Dapatkan data

exchange.SetContractType("rb888") # Subscribe to futures varieties
bar_arr = _C(exchange.GetRecords, PERIOD_M1) # Get 1-minute K line array
current_close = bar_arr[-1]['Close'] # Get the latest price
if len(bar_arr) <50: # If less than 50 k line bars
    return # Return to continue waiting for data

Untuk mendapatkan data, mula-mula gunakanSetContractTypefungsi dalam platform FMZ API untuk melanggan pelbagai niaga hadapan, dan kemudian menggunakanGetRecordsAnda juga boleh lulus dalam susunan K-garis yang menentukanPERIOD_M11minit apabila menggunakanGetRecords function.

Langkah seterusnya adalah untuk mendapatkan harga terkini, yang digunakan untuk menentukan hubungan kedudukan antara harga semasa dan rel atas dan bawah. Pada masa yang sama, apabila meletakkan pesanan menggunakan fungsi Beli atau Jual, anda perlu lulus dalam harga yang ditentukan. Di samping itu, jangan lupa untuk menapis bilangan bar garisan k, kerana jika bilangan bar garisan k terlalu sedikit, akan ada kesilapan yang tidak dapat dikira.

Langkah 4: Fungsi masa pemprosesan

def current_time():
    current_time = bar_arr[-1]['Time'] # Get current K-line timestamp
    time_local = time.localtime(current_time / 1000) # Processing timestamp
    hour = time.strftime("%H", time_local) # Format the timestamp and get the hour
    minute = time.strftime("%M", time_local) # Format the timestamp and get the minute
    if len(minute) == 1:
        minute = "0" + minute
    return int(hour + minute)

Apabila mengira rel atas dan bawah dan meletakkan pesanan, adalah perlu untuk menilai sama ada masa semasa memenuhi masa dagangan yang ditentukan oleh kami, jadi untuk memudahkan penghakiman, kita perlu menangani jam dan minit khusus K-line semasa.

Langkah 5: Hitung rel atas dan bawah

global up_line, down_line, trade_count # Introduce global variables
current_time = current_time() # processing time
if current_time == 930: # If the latest K-line time is 09:30
    up_line = TA.Highest(bar_arr, 30,'High') + count # The highest price of the first 30 k line bars
    down_line = TA.Lowest(bar_arr, 30,'Low')-count # The lowest price of the first 30 ke line bars
    trade_count = 0 # Reset the number of transactions to 0

Langkah 6: Dapatkan kedudukan

position_arr = _C(exchange.GetPosition) # Get position array
if len(position_arr) > 0: # If the position array length is greater than 0
    position_arr = position_arr[0] # Get position dictionary data
    if position_arr['ContractType'] =='rb888': # If the position symbol is equal to the subscription symbol
        if position_arr['Type']% 2 == 0: # If it is a long position
            position = position_arr['Amount'] # The number of assigned positions is a positive number
        else:
            position = -position_arr['Amount'] # Assign a negative number of positions
        profit = position_arr['Profit'] # Get position profit and loss
else:
    position = 0 # The number of assigned positions is 0
    profit = 0 # Assign position profit and loss to 0

Status kedudukan melibatkan logik strategi. sepuluh pelajaran pertama kami sentiasa menggunakan kedudukan memegang maya, tetapi dalam persekitaran perdagangan sebenar, ia adalah yang terbaik untuk menggunakanGetPositionfungsi untuk mendapatkan maklumat kedudukan sebenar, termasuk: arah kedudukan, keuntungan dan kerugian kedudukan, bilangan kedudukan, dll.

Langkah 7: Buat pesanan

# If it is close to market closing or reach taking profit and stopping loss
if current_time > 1450 or profit > stop * 3 or profit < -stop:
    if position > 0: # If holding a long position
        exchange.SetDirection("closebuy") # Set transaction direction and type
        exchange.Sell(current_close-1, 1) # Close long order
    elif position <0: # If holding an empty order
        exchange.SetDirection("closesell") # Set transaction direction and type
        exchange.Buy(current_close + 1, 1) # Close short order
# If there is no current position, and it is less than the specified number of transactions, and within the specified trading time
if position == 0 and trade_count < 2 and 930 < current_time < 1450:
    if current_close > up_line: # If the price is greater than the upper line
        exchange.SetDirection("buy") # Set transaction direction and type
        exchange.Buy(current_close + 1, 1) # Open long order
        trade_count = trade_count + 1 # Increase the number of transactions
    elif current_close < down_line: # If the price is less than the lower line
        exchange.SetDirection("sell") # Set transaction direction and type
        exchange.Sell(current_close-1, 1) # Open a short order
        trade_count = trade_count + 1 # Increase the number of transactions

Untuk mengelakkan kesilapan logik dalam strategi, adalah lebih baik untuk menulis logik kedudukan penutupan sebelum logik kedudukan pembukaan. Dalam strategi ini, apabila membuka kedudukan, terlebih dahulu tentukan status kedudukan semasa, sama ada ia berada dalam masa dagangan yang ditentukan, dan kemudian tentukan hubungan antara harga semasa dan rel atas dan bawah. Untuk menutup kedudukan adalah untuk menentukan terlebih dahulu sama ada ia dekat dengan penutupan pasaran, atau sama ada ia telah mencapai keadaan mengambil keuntungan dan menghentikan kerugian.

HANS123 adalah strategi perdagangan automatik yang sangat tipikal dan sangat berkesan. Prinsip asasnya adalah untuk menembusi harga tertinggi atau terendah pasaran sebelumnya dalam jangka masa tertentu. Sistem ini boleh digunakan untuk hampir semua produk pertukaran asing dengan keuntungan yang stabil. Ini juga mod perdagangan awal, dengan teknologi penapisan yang sesuai, atau dapat meningkatkan peluang menang.

Strategi Lengkap

Klik untuk menyalin kod sumber strategi lengkaphttps://www.fmz.com/strategy/179805backtest tanpa konfigurasi

Akhir

Ini adalah prinsip dan analisis kod strategi HANS123. Sebenarnya, strategi HANS123 menyediakan masa yang lebih baik untuk memasuki pasaran. Anda juga boleh meningkatkan masa keluar mengikut pemahaman anda tentang pasaran dan pemahaman mengenai urus niaga, atau mengikut turun naik pelbagai Untuk mengoptimumkan parameter seperti mengambil keuntungan dan menghentikan kerugian untuk mencapai hasil yang lebih baik.


Berkaitan

Lebih lanjut