Sumber daya yang dimuat... Pemuatan...

Modul Visualisasi untuk Membangun Strategi Perdagangan - Pengertian Lanjutan

Penulis:FMZ~Lydia, Dibuat: 2022-12-13 14:11:36, Diperbarui: 2023-09-20 09:53:59

img

Modul Visualisasi untuk Membangun Strategi Perdagangan - Pengertian Lanjutan

Kami telah belajar Modul Visualisasi untuk Membangun Strategi Perdagangan - Pertemuan Pertama, dan kami memiliki pemahaman konseptual tentang bangunan modul visual dan splicing, Selanjutnya, mudah untuk belajar menggunakan modul lain. Ada kemungkinan untuk menggabungkan beberapa fungsi yang lebih kompleks.

Modul kategori perdagangan

Dalam pembelajaran dan pengujian sebelumnya, kami telah terkena beberapa modul kategori perdagangan. Misalnya: Exchange Get Ticker modul Exchange Get OHLC modul Aku tidak tahu.

Ini telah digunakan tidak akan diulang di sini.

1. Dapatkan jumlah pertukaran

img

Saat menulis strategi untuk menggunakan robot trading, Anda dapat menambahkan lebih dari satu objek pertukaran, seperti strategi lindung nilai. Atau Anda perlu melintasi (melintasi berarti mengunjungi objek pertukaran satu per satu) objek pertukaran untuk mengakses pasar. Di sinilah modul untuk mendapatkan jumlah pertukaran masuk ke dalam permainan.

Kita bisa mencetak jumlah pertukaran yang saat ini dikonfigurasi dalam struktur sederhana:

img

Bahkan, itu seperti memanggil kode strategi JavaScript seperti:

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

Mari kita lihat hasil dari modul gabungan ini:

img img img

Kita dapat melihat bahwa kita telah menambahkan tiga objek pertukaran, mewakili tiga akun pertukaran yang berbeda, dan hasil output dari backtest log adalah 3.

2. Dapatkan nama pertukaran

img

Saat menambahkan tiga objek pertukaran, kotak drop-down akan menampilkan tiga opsi. Pelajari modul loop di tipe loop sebelumnya.

img

Pelajari modul penilaian kondisi sebelumnya:

img

Kondisi penilaian dapat ditulis sebagai berikut:

img

Kami menggunakan modul loop untuk melintasi nama pertukaran yang ditambahkan. Kami menggunakan modul penilaian kondisi untuk menilai apakah jumlah loop saat ini sesuai dengan nama pertukaran yang akan dicetak.

img

Hasil operasi backtest:

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 adalah mendapatkan pasangan perdagangan dari objek pertukaran pertama yang saat ini ditetapkan dan menugaskannya ke variabel teks (dibuat di kategori variabel sebelumnya).

img

Hasil tes balik:

img img img

Jika Anda memanggil kode strategi JavaScript:

function main () {
    var text = exchange.GetCurrency()
    Log(text)
}

4. modul pesanan

img

Modul ini sangat penting untuk operasi order. Posisi tenon pertama (konkaf) tertanam dengan variabel harga, yang digunakan untuk menentukan harga order. Anda juga dapat memasukkan nilai tetap secara langsung. Posisi tenon kedua (konkaf) tertanam dengan variabel kuantitas pesanan, yang digunakan untuk menentukan kuantitas pesanan.

Sebagai contoh, kita menyambung contoh menempatkan pesanan beli dengan menambahkan harga geser 10 yuan berdasarkan harga terbaru dari data pasar tik saat ini, dengan jumlah pesanan ditetapkan menjadi 0,1 koin, dan mencetak ID pesanan.

img

Hasil operasi backtest:

img

Seperti kode strategi JavaScript berikut:

function main () {
    var id = exchange.Buy(_C(exchange.GetTicker).Last + 10, 0.1)
    Log(id)
}

5. Dapatkan pesanan tertunda dari modul pasangan perdagangan saat ini

img

Modul ini akan mengembalikan semua pesanan yang menunggu dalam status yang belum selesai dari pasangan perdagangan saat ini. Sebagai contoh, kami memodifikasi modul order contoh di atas[4] sedikit, dan mengubah harga 10 yuan yang ditambahkan saat menempatkan order menjadi minus 10 yuan. order tidak akan ditutup segera, tetapi akan ditempatkan di kedalaman transaksi (yaitu, beli satu, beli dua, beli tingkat tertentu di N), dengan cara ini, order akan berada dalam keadaan pending order menunggu untuk diisi. Kemudian kita menggunakan modul Get pending orders of the current trading pair untuk mendapatkan daftar order dalam status PENDING (menunggu untuk diisi). Untuk menghindari dampak pada pengamatan akhir dari backtest karena pesanan yang diisi di pasar berikutnya, setelah modul Get pending orders of the current trading pair executes, kita mencetak daftar order, dan menggunakan modul Throw exception segera untuk menghentikan program.

img

Tes balik menunjukkan bahwa:

img

Harga pesanan beli adalah 10 yuan lebih rendah dari harga terbaru pada saat itu, jadi tidak akan segera diisi. Kemudian dapatkan pesanan dalam status transaksi yang sedang menunggu, dan cetak. Akhirnya, pengecualian dilemparkan untuk menghentikan program.

Seluruh modul yang dirakit seperti panggilan ke 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.

Ada banyak skenario yang membutuhkan operasi tersebut saat menulis strategi:

Batalkan semua pesanan saat ini.

Tidak ada keraguan bahwa Cancel order module harus digunakan. Saat mempelajari modul order cancel, kita dapat menggunakan [5] untuk mendapatkan pesanan yang menunggu dari modul pasangan perdagangan saat ini, dan menggabungkan untuk mencapai fungsi ini.

Pertama-tama, untuk menguji pembatalan semua pesanan, tidak jelas untuk menempatkan pesanan. kita mulai menempatkan 2 pesanan, harga dan jumlah mereka berbeda untuk membedakan dua pesanan.

img

Gunakan Melalui setiap elemen dalam modul daftar dalam modul Loop untuk melintasi pesanan dalam daftar pesanan saat ini.

img

Selama traversal, setiap urutan yang diambil diberikan nilai untuk variabel modul urutan (dibuat dalam tipe modul variabel, seperti yang ditunjukkan di bawah ini:)

img

Gunakan modul Util:

img

Keluarkan ID pesanan, lalu serahkan ke posisi tenon (kerongkong) dari modul Cancel order, dan modul Cancel order mengeksekusi pembatalan pesanan.

Operasi backtest:

img

Gunakan deskripsi strategi 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 rincian pesanan berdasarkan ID pesanan

img

Posisi tenon (kerongkong) dari modul terhubung dengan modul variabel order ID, dan rincian order dapat dikembalikan.

img

Perhatikan urutan yang dikembalikan setelah berjalan:

img

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

Contoh di atas mirip dengan menjalankan strategi 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 kita mengatur bursa uji sebagai komoditas berjangka.

Pengaturan backtesting:

img

Contoh berikut melakukan backtest berdasarkan pengaturan.

  • Menghakimi modul status koneksi antara CTP komoditas berjangka dan berjangka perusahaan server

img

Komoditas berjangka memiliki waktu buka dan waktu tutup.

  • Modul kontrak tetap

img

Bila objek pertukaran dikonfigurasi sebagai bursa berjangka, jika bursa tidak membuat kontrak dan memperoleh informasi pasar secara langsung, akan dilaporkan kesalahan.

Kami menetapkan kontrak sebagai MA909, kontrak utama metanol saat ini.

Dengan cara ini, nilai harga terbaru dalam pasar tik saat ini dari kontrak MA909 diperoleh.

  • Atur modul arah pesanan untuk perdagangan berjangka

Dalam modul perintah eksekusi

img

Arah pesanan harus ditentukan, karena berjangka memiliki: membeli: posisi panjang terbuka menjual: posisi pendek terbuka closebuy: menutup posisi panjang close-sell: menutup posisi pendek Empat arah (ada dua arah lagi untuk komoditas berjangka: closebuy_today untuk menutup posisi panjang hari ini dan closesell_today untuk menutup posisi pendek hari ini).

Sebagai contoh, jika modul order ditetapkan sebagai buy, ada dua arti dari membuka posisi panjang dan menutup posisi pendek, yang ambigu. Oleh karena itu, Set the order direction module for futures trading diperlukan untuk menetapkan arah order yang jelas.

img

Tampilan backtesting:

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("The commodity futures front-end processor is not connected")
        }
        Sleep(1000)
    }
}

9. Modul perdagangan berjangka mata uang digital

Penggunaan berjangka mata uang digital pada dasarnya sama dengan berjangka komoditas di [8] di atas

  • Mengambil OKEX sebagai contoh, kode kontrak dapat:
    • this_week: minggu ini
    • next_week: minggu depan
    • Triwulan: triwulan
    • swap: abadi
  • BitMEX:
    • XBTUSD
    • ETHUSD
  • Set leverage module

img

Ini digunakan untuk mengatur leverage futures mata uang digital.

#Note: Backtesting is not supported.

Seperti strategi JavaScript:

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

Contoh strategi visualisasi:

https://www.fmz.com/strategy/121404 https://www.fmz.com/strategy/129895 https://www.fmz.com/strategy/123904 https://www.fmz.com/strategy/122318Untuk lebih banyak strategi, silakan lihat:https://www.fmz.com/square

Artikel lain dalam seri ini


Berkaitan

Lebih banyak