hans123 strategi terobosan intraday

Penulis:Kebaikan, Dibuat: 2020-08-12 11:38:39, Diperbarui: 2023-10-10 21:15:02

img

Pengantar

Strategi HANS123 pertama kali diterapkan terutama pada pasar valuta asing. Metode tradingnya relatif sederhana dan termasuk dalam sistem trend breakthrough. Metode trading ini dapat memasuki pasar segera setelah tren terbentuk, sehingga disukai oleh banyak pedagang. Sejauh ini, HANS123 telah memperluas banyak versi, mari kita memahami dan menerapkan strategi HANS123 bersama-sama.

img

Prinsip Strategi

Beberapa orang percaya bahwa pembukaan pasar di pagi hari adalah saat pasar memiliki divergensi terbesar. Setelah sekitar 30 menit, pasar telah sepenuhnya mencerna semua jenis informasi semalam, dan tren harga akan cenderung rasional dan kembali normal. Dengan kata lain: tren pasar dalam 30 menit pertama atau lebih pada dasarnya merupakan pola perdagangan keseluruhan hari ini.

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

Nilai tinggi dan rendah relatif yang dihasilkan pada saat ini membentuk titik tinggi dan rendah yang efektif dalam Teori Dow , dan strategi HANS123 adalah logika perdagangan yang ditetapkan oleh ini. Di pasar berjangka domestik, pasar dibuka pada pukul 09:00 pagi, dan pada pukul 09:30 Anda dapat menilai apakah itu panjang atau pendek hari ini. Ketika harga menembus titik tinggi ke atas, harga akan dengan mudah terus naik; ketika harga menembus titik rendah ke bawah, harga akan dengan mudah terus turun.

  • Pembukaan posisi panjang: Saat ini tidak ada posisi ditahan, dan harga pecah di atas rel atas
  • Pembukaan posisi pendek: Saat ini tidak ada posisi ditahan, dan harga pecah di bawah rel bawah

Meskipun strategi terobosan dapat memasuki pasar segera setelah tren terbentuk. Tetapi keuntungan ini juga merupakan pedang bermata dua. Sebagai akibat dari masuk yang sensitif, terobosan harga gagal. Jadi perlu untuk mengatur stop loss. Pada saat yang sama, untuk mencapai logika strategi menang dan kalah, mengambil keuntungan harus ditetapkan.

  • Stop loss posisi panjang: posisi panjang saat ini telah mencapai jumlah kerugian
  • Stop loss posisi pendek: posisi pendek saat ini telah mencapai jumlah kerugian
  • Mengambil keuntungan untuk posisi panjang, memegang posisi panjang dan mencapai jumlah keuntungan
  • Mengambil keuntungan untuk posisi pendek, memegang posisi pendek dan mencapai jumlah keuntungan

Menulis strategi

Buka pada gilirannya:fmz.comwebsite> Login > Dashboard > Strategy Library > New Strategy > Klik menu drop-down di sudut kanan atas untuk memilih bahasa Python dan mulai menulis strategi. Perhatikan komentar dalam kode di bawah ini.

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, salah satunya adalahonTickfungsi, dan yang lain adalahmainfungsi, di manaonTickfungsi dijalankan dalam loop tak berujung dimain function.

Langkah 2: Mendefinisikan variabel global

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

Karena rel atas dan bawah hanya dihitung pada pukul 09:30, dan tidak ada statistik yang dilakukan di sisa waktu, kita perlu menulis dua variabel ini di luar loop.trade_countvariabel juga ditulis di luar loop. Sebelum menggunakan dua variabel global ini dalam fungsi utama darionTickstrategi, Anda perlu menggunakanglobalkata kunci untuk referensi.

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, pertama-tama gunakanSetContractTypefungsi di platform FMZ API untuk berlangganan varietas berjangka, dan kemudian menggunakanGetRecordsAnda juga dapat melewati dalam K-line array menentukanPERIOD_M11menit saat menggunakanGetRecords function.

Langkah selanjutnya adalah untuk mendapatkan harga terbaru, yang digunakan untuk menentukan hubungan posisi antara harga saat ini dan rel atas dan bawah. Pada saat yang sama, ketika menempatkan pesanan menggunakan fungsi Beli atau Jual, Anda perlu melewati harga yang ditentukan. Selain itu, jangan lupa untuk menyaring jumlah k garis bar, karena jika jumlah k garis bar terlalu sedikit, akan ada kesalahan yang tidak dapat dihitung.

Langkah 4: Fungsi waktu pemrosesan

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)

Ketika menghitung rel atas dan bawah dan menempatkan pesanan, perlu untuk menilai apakah waktu saat ini memenuhi waktu perdagangan yang ditentukan oleh kami, sehingga untuk memfasilitasi penilaian, kita perlu berurusan dengan jam dan menit tertentu dari K-line saat ini.

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 posisi

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 posisi melibatkan logika strategi. sepuluh pelajaran pertama kami selalu menggunakan posisi virtual memegang, tetapi dalam lingkungan perdagangan yang nyata, yang terbaik untuk menggunakanGetPositionfungsi untuk memperoleh informasi posisi nyata, termasuk: arah posisi, keuntungan dan kerugian posisi, jumlah posisi, 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 menghindari kesalahan logika dalam strategi, yang terbaik adalah menulis logika posisi penutupan sebelum logika posisi pembukaan. Dalam strategi ini, ketika membuka posisi, pertama-tama tentukan status posisi saat ini, apakah dalam waktu perdagangan yang ditentukan, dan kemudian tentukan hubungan antara harga saat ini dan rel atas dan bawah.

HANS123 adalah strategi perdagangan otomatis yang sangat khas dan sangat efektif. Prinsip dasarnya adalah untuk menembus harga tertinggi atau terendah dari pasar sebelumnya dalam jangka waktu tertentu. Sistem ini dapat diterapkan pada hampir semua produk valuta asing dengan profitabilitas yang stabil. Ini juga merupakan mode perdagangan awal, dengan teknologi penyaringan yang tepat, atau dapat meningkatkan peluang menang.

Strategi Lengkap

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

Akhir

Di atas adalah prinsip dan analisis kode dari strategi HANS123. sebenarnya, strategi HANS123 menyediakan waktu yang lebih baik untuk memasuki pasar. Anda juga dapat meningkatkan waktu keluar sesuai dengan pemahaman Anda tentang pasar dan pemahaman transaksi, atau sesuai dengan volatilitas dari berbagai Untuk mengoptimalkan parameter seperti mengambil keuntungan dan menghentikan kerugian untuk mencapai hasil yang lebih baik.


Berkaitan

Lebih banyak