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

img

Modul visualisasi untuk membangun strategi perdagangan - Lanjutan

Pelajari strategi perdagangan konstruksi modul visual - bab pendahuluan, dan miliki pemahaman konseptual tentang konstruksi dan penyambungan modul visual.
Kemudian mudah untuk belajar menggunakan modul lainnya.
Beberapa fungsi yang lebih kompleks dapat digabungkan.

  • Modul Kategori Transaksi

    Dalam penelitian dan pengujian sebelumnya, kami telah bersentuhan dengan beberapa modul "kategori transaksi".
    Misalnya:
    Modul "Kutipan Pertukaran"
    Modul "Pertukaran Memperoleh K-line"
    ...

    Saya tidak akan membahas secara rinci tentang yang sudah digunakan.

    • 1. Dapatkan jumlah pertukaran

      img

      Saat menulis strategi untuk berdagang dengan robot, Anda dapat menambahkan lebih dari satu objek pertukaran, misalnya, strategi lindung nilai.
      Atau Anda perlu melintasi (traversal berarti mengunjungi satu per satu) objek bursa untuk mengakses kondisi pasar.
      Saat ini, Anda perlu menggunakan modul untuk mendapatkan jumlah pertukaran.

      Pertama-tama kita dapat menggunakan struktur sederhana untuk mencetak jumlah pertukaran yang saat ini dikonfigurasi:
      img

      Sebenarnya, ini seperti memanggil kode kebijakan JavaScript berikut:

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

      Mari kita lihat hasil menjalankan modul gabungan ini:
      img

      Anda dapat melihat bahwa kami telah menambahkan 3 objek pertukaran, yang mewakili tiga akun pertukaran yang berbeda, dan hasil keluaran log uji ulang adalah 3.

    • 2. Dapatkan nama pertukaran

      img

      Saat menambahkan tiga objek pertukaran, kotak drop-down akan menampilkan tiga opsi.
      Pelajari modul loop terlebih dahulu, dalam tipe loop.
      img

      Mari kita pelajari modul penilaian bersyarat terlebih dahulu:
      img
      Kondisi penghakiman dapat dituliskan sebagai:
      img

      Kami menggunakan modul loop untuk mengulangi nama pertukaran yang ditambahkan
      Gunakan modul penilaian bersyarat untuk menentukan apakah jumlah loop saat ini sesuai dengan nama pertukaran yang akan dicetak.

      img

      Hasil uji coba kembali:
      img

      Seperti kode 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 perdagangan saat ini dari bursa

      img

      Contoh sederhana mendapatkan pasangan perdagangan dari objek pertukaran pertama yang saat ini ditetapkan dan menetapkannya ke variabel teks (dibuat dalam kategori variabel sebelumnya).

      img
      Hasil pengujian ulang:
      img

      Jika Anda memanggil kode kebijakan JavaScript:

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

      img
      Modul ini sangat penting dan digunakan untuk operasi pemesanan. Variabel harga disematkan pada posisi tenon (alur) pertama untuk menentukan harga pesanan. Anda juga dapat langsung memasukkan nilai tetap.
      Posisi tenon (titik) kedua menanamkan variabel kuantitas pesanan, yang digunakan untuk menentukan kuantitas pesanan.

      Misalnya, kita akan membuat contoh penempatan pesanan beli berdasarkan harga terkini data pasar tick, dengan selisih 10 yuan, menetapkan jumlah pesanan menjadi 0,1 koin, dan mencetak ID pesanan.
      img

      Hasil uji coba kembali:
      img

      Seperti kode kebijakan JavaScript berikut:

      function main () { var id = exchange.Buy(_C(exchange.GetTicker).Last + 10, 0.1) Log(id) }
    • 5. Modul untuk mendapatkan perintah kepercayaan pasangan perdagangan saat ini

      img

      Modul ini akan mengembalikan semua order yang belum selesai dari pasangan perdagangan saat ini. Struktur yang dikembalikan adalah daftar (array), yang dapat diproses oleh modul tipe daftar (operasi traversal, dll.).
      Misalnya: Kami sedikit memodifikasi contoh modul pesanan [4] di atas dan mengubah harga 10 yuan yang ditambahkan saat melakukan pemesanan menjadi pengurangan harga 10 yuan. Perintah tersebut tidak akan langsung dieksekusi, tetapi akan tertunda pada kedalaman beli dan jual (yaitu pada level tertentu antara Beli 1, Beli 2, dan Beli N), sehingga perintah tersebut berada pada perintah tertunda yang menunggu eksekusi.
      Kemudian kami menggunakan modul "Dapatkan perintah kepercayaan pasangan perdagangan saat ini" untuk mendapatkan daftar perintah dalam status PENDING (menunggu eksekusi).
      Untuk menghindari eksekusi order pada kondisi pasar selanjutnya dan mempengaruhi pengamatan akhir backtest, setelah modul "Dapatkan order kepercayaan pasangan perdagangan saat ini" dieksekusi dan daftar order dicetak, kami segera menggunakan "Lempar pengecualian" "modul untuk menghentikan program.

      img

      Pengujian ulang menunjukkan:
      img

      Harga pesanan beli 10 yuan lebih rendah dari harga terbaru saat itu, jadi transaksi tidak akan segera selesai.
      Lalu dapatkan perintah yang menunggu untuk dieksekusi dan cetaklah.
      Terakhir, pengecualian dilemparkan untuk menghentikan program.

      Seluruh modul yang dirakit 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. Modul pembatalan pesanan

      img

      Modul ini digunakan untuk membatalkan pesanan.

      Ada banyak skenario di mana hal ini diperlukan saat menulis kebijakan:

      Batalkan semua pesanan yang tertunda saat ini.

      Tidak diragukan lagi, ini akan memerlukan penggunaan "modul pembatalan pesanan". Saat mempelajari modul pembatalan pesanan, kita dapat menggunakan [5] untuk mendapatkan modul untuk pesanan kepercayaan pasangan perdagangan saat ini dan menggabungkannya untuk mencapai fungsi ini.

      Pertama, untuk menguji pembatalan semua pesanan, penempatan pesanan tidak terlalu jelas, kita mulai dengan menempatkan dua pesanan dengan harga dan jumlah yang berbeda untuk membedakan kedua pesanan.

      img

      Gunakan modul "Lintasi setiap elemen dalam daftar" dalam modul jenis loop untuk melintasi order dalam daftar order tertunda saat ini.
      img
      Selama penelusuran, setiap pesanan yang diambil ditetapkan ke pesanan modul variabel (dibuat dalam tipe modul variabel, seperti ditunjukkan di bawah ini:)
      img
      Gunakan modul jenis alat:
      img
      Keluarkan ID pesanan dan berikan ke posisi tenon (cekung) dari modul pembatalan pesanan, dan modul pembatalan pesanan akan mengeksekusi pembatalan pesanan.

      Uji coba kembali:
      img

      Menggunakan deskripsi kebijakan 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 informasi detail pesanan berdasarkan ID pesanan

      img

      Modul ini dapat mengembalikan informasi pesanan terperinci dengan menghubungkan modul variabel ID pesanan ke posisi mortise dan tenon.

      img

      Perhatikan perintah yang dikembalikan setelah dijalankan:
      img

      Dibandingkan dengan hasil yang berjalan pada contoh [5], dapat ditemukan bahwa pesanan yang dicetak adalah informasi pesanan yang terpisah.[] Dibungkus dalam tanda kurung siku.
      Karena contoh [5] mengembalikan daftar, contoh ini mengembalikan informasi pesanan tunggal (diperoleh berdasarkan variabel ID modul pada posisi tenon yang diteruskan oleh modul).

      Contoh di atas setara dengan menjalankan kebijakan JavaScript:

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

      Kita akan mempelajari modul di atas satu per satu, dan menetapkan bursa pengujian ke komoditi berjangka.

      Pengaturan pengujian ulang:
      img
      Contoh berikut menguji ulang pengaturan ini.

      • Modul untuk menilai status koneksi antara server komoditas berjangka CTP dan server perusahaan berjangka

        img

        Kontrak berjangka komoditas memiliki waktu buka dan tutup. Saat pasar tutup, Anda tidak dapat terhubung.

      • Siapkan modul kontrak

        img

        Saat objek pertukaran dikonfigurasikan sebagai bursa berjangka, jika Anda tidak menetapkan kontrak dan langsung memperoleh informasi pasar, kesalahan akan dilaporkan:
        img

        Kami menetapkan kontrak ke MA909, yang merupakan kontrak utama saat ini untuk metanol.
        img
        Dengan cara ini, nilai harga terkini di pasar tick kontrak MA909 diperoleh.

      • Siapkan modul arah perintah perdagangan berjangka

        Dalam modul perintah eksekusi
        img
        Arah pesanan perlu ditentukan karena kontrak berjangka memiliki:
        beli : membuka posisi panjang
        jual : membuka posisi short
        closebuy : menutup posisi panjang
        closesell : menutup posisi short
        Empat arah (komoditas berjangka memiliki dua arah lagi: closebuy_today menutup posisi panjang hari ini, closesell_today menutup posisi pendek hari ini).

        Misalnya, jika modul pesanan diatur ke beli, maka ada dua makna: membuka posisi panjang dan menutup posisi pendek, yang menciptakan ambiguitas.
        Oleh karena itu, modul "Set Futures Trading Order Direction" diperlukan untuk menetapkan arah order yang jelas.

        img

        Pengujian ulang menunjukkan:
        img

        Seperti kode 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 perdagangan berjangka mata uang kripto

      Penggunaan futures mata uang digital pada dasarnya sama dengan penggunaan futures komoditas pada [8] di atas.

      • Mengambil OKEX sebagai contoh, kode kontraknya adalah:

        • this_week : minggu ini
        • next_week : minggu depan
        • kuartal : kuartal
        • tukar : terus menerus
      • BitMEX :

        • XBTUSD
        • ETHUSD
      • Mengatur Modul Leverage

        img

        Digunakan untuk mengatur leverage untuk kontrak berjangka mata uang digital.

        # 注意 : 回测不支持。

        Seperti dalam strategi JavaScript:

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

Contoh Strategi Visualisasi:

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

Artikel lain dalam seri ini

Pemrograman yang membosankan dapat diselesaikan dengan mudah menggunakan blok penyusun. Cobalah, ini 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)