Type/to search
8
Follow
1364
Followers
Modul visualisasi untuk membina strategi dagangan - lanjutan
Original
Created 2019-07-17 10:22:20  Updated 2023-10-24 21:40:50
 3
 4790

img

Modul visualisasi untuk membina strategi dagangan - lanjutan

Pelajari strategi perdagangan pembinaan modul visual - bab pengenalan, dan mempunyai pemahaman konseptual tentang pembinaan dan penyambungan modul visual.
Kemudian mudah untuk belajar menggunakan modul lain.
Beberapa fungsi yang lebih kompleks boleh digabungkan.

  • Modul Kategori Transaksi

    Dalam kajian dan ujian terdahulu, kami telah berhubung dengan beberapa modul "kategori transaksi".
    Contohnya:
    Modul "Pertukaran Sebut Harga".
    Modul "Exchange Dapatkan K-line".
    ...

    Saya tidak akan memperincikan perkara yang telah digunakan.

    • 1. Dapatkan bilangan pertukaran

      img

      Apabila menulis strategi untuk berdagang dengan robot, anda boleh menambah lebih daripada satu objek pertukaran, contohnya, strategi lindung nilai.
      Atau anda perlu melintasi (traversal bermaksud melawat setiap satu demi satu) objek pertukaran untuk mengakses keadaan pasaran.
      Pada masa ini, anda perlu menggunakan modul untuk mendapatkan bilangan pertukaran.

      Mula-mula kita boleh menggunakan struktur ringkas untuk mencetak bilangan pertukaran yang dikonfigurasikan pada masa ini:
      img

      Malah, ia sama seperti memanggil kod dasar JavaScript berikut:

      function main () { Log(exchanges.length) }

      Mari lihat hasil menjalankan modul gabungan ini:
      img

      Anda boleh melihat bahawa kami telah menambah 3 objek pertukaran, mewakili tiga akaun pertukaran yang berbeza, dan hasil keluaran log paling belakang ialah 3.

    • 2. Dapatkan nama pertukaran

      img

      Apabila menambah tiga objek pertukaran, kotak lungsur akan menunjukkan tiga pilihan.
      Ketahui modul gelung terlebih dahulu, dalam jenis gelung.
      img

      Mari belajar modul penghakiman bersyarat terlebih dahulu:
      img
      Syarat penghakiman boleh ditulis sebagai:
      img

      Kami menggunakan modul gelung untuk mengulangi nama pertukaran yang ditambahkan
      Gunakan modul penghakiman bersyarat untuk menentukan sama ada kiraan gelung semasa sepadan dengan nama pertukaran yang akan dicetak.

      img

      Keputusan larian ujian belakang:
      img

      Seperti kod strategi JavaScript:

      function main () { for (var i = 1 ; i <= exchanges.length ; i++) { if (i == 1) { Log(exchanges[0].GetName()) } else if (i == 2) { Log(exchanges[1].GetName()) } else { Log(exchanges[2].GetName()) } } }
    • 3. Dapatkan pasangan dagangan semasa pertukaran

      img

      Contoh mudah mendapatkan pasangan dagangan objek pertukaran pertama yang kini ditetapkan dan menetapkannya kepada pembolehubah teks (dicipta dalam kategori pembolehubah terlebih dahulu).

      img
      Keputusan ujian belakang:
      img

      Jika anda memanggil kod dasar JavaScript:

      function main () { var text = exchange.GetCurrency() Log(text) }
    • 4. Modul pesanan

      img
      Modul ini sangat penting dan digunakan untuk operasi pesanan Pembolehubah harga dibenamkan dalam kedudukan tenon (alur) pertama untuk menentukan harga pesanan Anda juga boleh memasukkan nilai tetap.
      Kedudukan tenon (titik) kedua membenamkan pembolehubah kuantiti pesanan, yang digunakan untuk menentukan kuantiti pesanan.

      Sebagai contoh, kami akan membuat contoh meletakkan pesanan beli berdasarkan harga terkini data pasaran semak semasa, dengan kegelinciran 10 yuan, menetapkan kuantiti pesanan kepada 0.1 syiling dan mencetak ID pesanan.
      img

      Keputusan larian ujian belakang:
      img

      Seperti kod dasar JavaScript berikut:

      function main () { var id = exchange.Buy(_C(exchange.GetTicker).Last + 10, 0.1) Log(id) }
    • 5. Modul untuk mendapatkan pesanan amanah pasangan dagangan semasa

      img

      Modul ini akan mengembalikan semua pesanan yang belum selesai untuk pasangan dagangan semasa Struktur yang dikembalikan ialah senarai (array), yang boleh diproses oleh modul jenis senarai (operasi traversal, dll.).
      Contohnya: Kami mengubah suai sedikit contoh modul pesanan [4] di atas dan menukar harga 10 yuan yang ditambahkan apabila membuat pesanan kepada tolak harga 10 yuan. Pesanan tidak akan dilaksanakan serta-merta, tetapi akan belum selesai dalam kedalaman beli dan jual (iaitu, pada tahap tertentu antara Beli 1, Beli 2 dan Beli N), supaya pesanan itu berada dalam pesanan belum selesai menunggu pelaksanaan.
      Kemudian kami menggunakan modul "Dapatkan pesanan amanah pasangan dagangan semasa" untuk mendapatkan senarai pesanan dalam keadaan PENDING (menunggu pelaksanaan).
      Untuk mengelakkan pelaksanaan pesanan dalam keadaan pasaran yang berikutnya dan menjejaskan pemerhatian akhir ujian belakang, selepas modul "Dapatkan pesanan amanah pasangan dagangan semasa" dilaksanakan dan senarai pesanan dicetak, kami segera menggunakan "Pengecualian Lempar". " modul untuk menghentikan program.

      img

      Pertunjukan ujian belakang:
      img

      Harga pesanan beli adalah 10 yuan lebih rendah daripada harga terkini pada masa itu, jadi transaksi tidak akan selesai serta-merta.
      Kemudian dapatkan pesanan yang sedang menunggu pelaksanaan dan cetaknya.
      Akhirnya, pengecualian dilemparkan untuk menghentikan program.

      Keseluruhan modul yang dipasang adalah seperti memanggil strategi JavaScript:

      function main () { var id = exchange.Buy(_C(exchange.GetTicker).Last - 10, 0.1) Log(id) Log(exchange.GetOrders()) throw "stop" }
    • 6. Batalkan modul pesanan

      img

      Modul ini digunakan untuk membatalkan pesanan.

      Terdapat banyak senario di mana ini diperlukan semasa menulis dasar:

      Batalkan semua pesanan yang belum selesai.

      Tidak dinafikan, ini memerlukan penggunaan "modul pembatalan pesanan". Semasa mempelajari modul pembatalan pesanan, kita boleh menggunakan [5] untuk mendapatkan modul untuk pesanan amanah pasangan dagangan semasa dan menggabungkannya untuk mencapai fungsi ini.

      Pertama, untuk menguji membatalkan semua pesanan, membuat pesanan tidak begitu jelas, kita mulakan dengan meletakkan dua pesanan dengan harga dan kuantiti yang berbeza untuk membezakan kedua-dua pesanan.

      img

      Gunakan modul "Lintas setiap elemen dalam senarai" dalam modul jenis gelung untuk melintasi pesanan dalam senarai pesanan belum selesai semasa.
      img
      Semasa traversal, setiap pesanan yang dikeluarkan diberikan kepada susunan modul pembolehubah (dicipta dalam jenis modul pembolehubah, seperti ditunjukkan di bawah :)
      img
      Gunakan modul jenis alat:
      img
      Keluarkan ID pesanan dan hantar ke kedudukan tenon (cekung) modul pesanan batal, dan modul pesanan batal melaksanakan pesanan batal.

      Larian ujian belakang:
      img

      Menggunakan penerangan dasar JavaScript:

      function main () { var id = exchange.Buy(_C(exchange.GetTicker).Last - 10, 0.1) Log(id) var id2 = exchange.Buy(_C(exchange.GetTicker).Last - 12, 0.2) Log(id2) var orders = exchange.GetOrders() Log(orders) for (var i in orders) { var order = orders[i] Log(exchange.CancelOrder(order.Id)) } }
    • 7. Modul untuk mendapatkan maklumat terperinci pesanan berdasarkan ID pesanan

      img

      Modul ini boleh mengembalikan maklumat pesanan terperinci dengan menyambungkan modul pembolehubah ID pesanan ke kedudukan tanggam dan duri.

      img

      Beri perhatian kepada pesanan yang dikembalikan selepas berjalan:
      img

      Berbanding dengan keputusan berjalan dalam contoh [5], boleh didapati bahawa pesanan bercetak adalah maklumat pesanan yang berasingan.[] Dibalut dalam kurungan segi empat sama.
      Oleh kerana contoh [5] mengembalikan senarai, contoh ini mengembalikan maklumat pesanan tunggal (diperolehi berdasarkan modul pembolehubah ID pada kedudukan tenon yang diluluskan oleh modul).

      Contoh di atas adalah bersamaan dengan melaksanakan dasar JavaScript:

      function main () { var id = exchange.Buy(_C(exchange.GetTicker).Last - 10, 0.1) Log(exchange.GetOrder(id)) }
    • 8. Modul dagangan hadapan

      Kami akan mengkaji modul di atas satu demi satu, dan menetapkan pertukaran ujian kepada niaga hadapan komoditi.

      Tetapan ujian belakang:
      img
      Contoh berikut menguji semula persediaan ini.

      • Modul untuk menilai status sambungan antara niaga hadapan komoditi CTP dan pelayan syarikat niaga hadapan

        img

        Niaga hadapan komoditi mempunyai masa buka dan tutup Apabila pasaran ditutup, anda tidak boleh menyambung.

      • Sediakan modul kontrak

        img

        Apabila objek pertukaran dikonfigurasikan sebagai bursa niaga hadapan, jika anda tidak menetapkan kontrak dan terus mendapatkan maklumat pasaran, ralat akan dilaporkan:
        img

        Kami menetapkan kontrak kepada MA909, yang merupakan kontrak utama semasa untuk metanol.
        img
        Dengan cara ini, nilai harga terkini dalam pasaran semak semasa kontrak MA909 diperolehi.

      • Sediakan modul arah pesanan dagangan hadapan

        Dalam modul perintah pelaksanaan
        img
        Arah pesanan perlu dinyatakan kerana niaga hadapan mempunyai:
        beli : buka kedudukan panjang
        menjual : membuka kedudukan jual
        closebuy : tutup kedudukan panjang
        closesell : tutup kedudukan jual
        Empat arah (niaga hadapan komoditi mempunyai dua lagi arah: closebuy_today menutup kedudukan beli hari ini, closesell_today menutup kedudukan jual hari ini).

        Sebagai contoh, jika modul pesanan ditetapkan untuk membeli, maka terdapat dua makna: buka kedudukan panjang dan tutup kedudukan pendek, yang mewujudkan kesamaran.
        Oleh itu, modul "Tetapkan Arah Pesanan Dagangan Hadapan" diperlukan untuk menetapkan arah pesanan yang jelas.

        img

        Pertunjukan ujian belakang:
        img

        Seperti kod strategi JavaScript:

        function main () { while (true) { if (exchange.IO("status")) { exchange.SetContractType("MA909") Log(exchange.GetTicker().Last) exchange.SetDirection("buy") Log(exchange.Buy(1000, 1)) throw "stop" } else { Log("未连接商品期货前置机") } Sleep(1000) } }
    • 9. Modul dagangan hadapan mata wang kripto

      Penggunaan niaga hadapan mata wang digital pada asasnya adalah sama dengan penggunaan niaga hadapan komoditi dalam [8] di atas.

      • Mengambil OKEX sebagai contoh, kod kontrak boleh:

        • minggu_ini : minggu ini
        • next_week : minggu depan
        • suku : suku
        • swap : kekal
      • BitMEX :

        • XBTUSD
        • ETHUSD
      • Menetapkan Modul Leverage

        img

        Digunakan untuk menetapkan leverage untuk niaga hadapan mata wang digital.

        # 注意 : 回测不支持。

        Seperti dalam strategi JavaScript:

        function main () { exchange.SetMarginLevel(10) }

Strategi Contoh Visualisasi:

Lebih banyak strategi boleh didapati di: https://www.fmz.com/square

Artikel lain dalam siri ini

Pengaturcaraan yang membosankan boleh diselesaikan dengan mudah dengan menggunakan blok bangunan Cubalah, ia sangat menarik!

Related Recommendations
Comment
All comments (2)

    学了一个多月编程还是写不了策略,,现在全靠积木了!

    7 years ago

    感谢支持,这个系列文章会继续做的。
    其实根据每个范例后面对应的JavaScript策略代码,很容易就能掌握用JS 写策略的。

    7 years ago
  • 1
iPhone Download
Forums
PINE Language
© 2015 - ∞ INVENTOR PTE LTD (SG)