Modul Visualisasi untuk Membina Strategi Dagangan - Pemahaman Lanjutan

Penulis:Lydia, Dicipta: 2022-12-13 14:11:36, Dikemas kini: 2023-09-20 09:53:59

img

Modul Visualisasi untuk Membina Strategi Dagangan - Pemahaman Lanjutan

Kami telah belajar Modul Visualisasi untuk Membina Strategi Dagangan - Perkenalan Pertama, dan kami mempunyai pemahaman konseptual pembinaan modul visual dan splicing, Seterusnya, mudah untuk belajar menggunakan modul lain. Ia adalah mungkin untuk menggabungkan beberapa fungsi yang lebih kompleks.

Modul kategori dagangan

Dalam pembelajaran dan ujian sebelumnya, kami telah terdedah kepada beberapa modul kategori perdagangan. Contohnya: Exchange Get Ticker modul Exchange Get OHLC modul ... yang penting.

Mereka telah digunakan tidak akan diulangi di sini.

1. Dapatkan bilangan pertukaran

img

Apabila menulis strategi untuk menggunakan perdagangan robot, anda boleh menambah lebih daripada satu objek pertukaran, seperti strategi lindung nilai. Atau anda perlu melintasi (melintasi bermaksud melawat objek pertukaran satu demi satu) objek pertukaran untuk mengakses pasaran. Ini adalah di mana modul untuk mendapatkan bilangan pertukaran masuk ke dalam permainan.

Kita boleh cetak bilangan pertukaran yang dikonfigurasi pada masa ini dalam struktur yang mudah:

img

Malah, ia seperti memanggil kod strategi JavaScript seperti:

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

Mari kita lihat hasil berjalan modul gabungan ini:

img img img

Kita boleh lihat bahawa kita telah menambah tiga objek pertukaran, mewakili tiga akaun pertukaran yang berbeza, dan hasil output log backtest adalah 3.

2. Dapatkan nama pertukaran

img

Apabila menambah tiga objek pertukaran, kotak drop-down akan memaparkan tiga pilihan. Belajar modul gelung dalam jenis gelung terlebih dahulu.

img

Belajar modul penilaian keadaan terlebih dahulu:

img

Syarat penghakiman boleh ditulis seperti berikut:

img

Kami menggunakan modul gelung untuk melintasi nama pertukaran yang ditambah. Kami menggunakan modul penilaian keadaan untuk menilai sama ada kiraan gelung semasa sepadan dengan nama pertukaran yang akan dicetak.

img

Hasil operasi 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 bursa

img

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

img

Hasil ujian belakang:

img img img

Jika anda memanggil kod strategi JavaScript:

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

4. Modul Perintah

img

Modul ini sangat penting untuk operasi pesanan. kedudukan tenon pertama (konkaf) tertanam dengan pembolehubah harga, yang digunakan untuk menentukan harga pesanan. anda juga boleh memasukkan nilai tetap secara langsung. Kedudukan tenon kedua (kerongkong) tertanam dengan pembolehubah kuantiti pesanan, yang digunakan untuk menentukan kuantiti pesanan.

Sebagai contoh, kita menyambungkan contoh meletakkan pesanan beli pada menambah harga bergerak 10 yuan berdasarkan harga terkini data pasaran tik semasa, dengan kuantiti pesanan ditetapkan kepada 0.1 syiling, dan cetak ID pesanan.

img

Hasil operasi ujian belakang:

img

Seperti kod strategi JavaScript berikut:

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

5. Dapatkan pesanan menunggu modul pasangan dagangan semasa

img

Modul ini akan mengembalikan semua pesanan yang menunggu dalam status tidak selesai pasangan dagangan semasa. Ia mengembalikan struktur senarai (array), yang boleh diproses oleh modul jenis senarai (operasi melintasi, dan lain-lain). Sebagai contoh, kami mengubahsuai modul pesanan contoh di atas [4] sedikit, dan mengubah harga 10 yuan yang ditambah ketika meletakkan pesanan menjadi tolak 10 yuan. Perintah tidak akan ditutup dengan segera, tetapi akan diletakkan di kedalaman transaksi (iaitu, beli satu, beli dua, beli tahap tertentu di N), dengan cara ini, pesanan akan berada dalam keadaan pesanan menunggu menunggu untuk diisi. Kemudian kita menggunakan modul Get pending orders of the current trading pair untuk mendapatkan senarai pesanan dalam status PENDING (menunggu untuk diisi). Untuk mengelakkan kesan pada pemerhatian akhir backtest kerana pesanan yang dipenuhi di pasaran berikutnya, selepas modul Mendapatkan pesanan menunggu pasangan dagangan semasa dilaksanakan, kita mencetak senarai pesanan, dan menggunakan modul Lempar pengecualian segera untuk menghentikan program.

img

Ujian belakang menunjukkan bahawa:

img

Harga pesanan beli adalah 10 yuan lebih rendah daripada harga terkini pada masa itu, jadi ia tidak akan diisi dengan segera. Kemudian dapatkan pesanan dalam status urus niaga yang belum selesai, dan cetak. Akhirnya, pengecualian dilemparkan untuk menghentikan program.

Seluruh modul yang dipasang adalah seperti panggilan kepada 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 yang memerlukan operasi sedemikian apabila menulis strategi:

Batalkan semua pesanan yang sedang menunggu.

Tidak ada keraguan bahawa Cancel order module mesti digunakan. Semasa mempelajari modul pesanan membatalkan, kita boleh menggunakan [5] untuk mendapatkan pesanan menunggu modul pasangan dagangan semasa, dan menggabungkan untuk mencapai fungsi ini.

Pertama sekali, untuk menguji pembatalan semua pesanan, ia tidak jelas untuk meletakkan pesanan. kita mula meletakkan 2 pesanan, harga dan kuantiti mereka berbeza untuk membezakan kedua-dua pesanan.

img

Gunakan Lalu lintas setiap elemen dalam modul senarai dalam modul Loop untuk melintasi pesanan dalam senarai pesanan yang sedang menunggu.

img

Semasa pelaksanaan, setiap pesanan yang diambil diberikan nilai kepada pesanan modul pembolehubah (dicipta dalam jenis modul pembolehubah, seperti yang ditunjukkan di bawah:)

img

Gunakan modul Util:

img

Keluarkan ID pesanan, pasangkan ke kedudukan tenon (kuncup) modul Batal pesanan, dan modul Batal pesanan melaksanakan pembatalan pesanan.

Operasi ujian belakang:

img

Gunakan penerangan 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 butiran pesanan berdasarkan ID pesanan

img

Kedudukan tenon (konkaf) modul disambungkan dengan modul pemboleh ubah ID pesanan, dan butiran pesanan boleh dikembalikan.

img

Perhatikan perintah yang dikembalikan selepas berjalan:

img

Dibandingkan dengan hasil berjalan dalam contoh [5], dapat didapati bahawa pesanan yang dicetak adalah maklumat pesanan yang berasingan tanpa kurung []. Kerana contoh [5] mengembalikan senarai, tetapi contoh ini mengembalikan maklumat pesanan yang berasingan (didapatkan berdasarkan modul pembolehubah ID pada kedudukan tenon yang diteruskan oleh modul).

Contoh di atas adalah sama dengan melaksanakan strategi JavaScript:

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

8. Modul perdagangan niaga hadapan

Kita akan belajar modul di atas satu demi satu dan kita menetapkan pertukaran ujian sebagai niaga hadapan komoditi.

Tetapan Ujian Balik:

img

Contoh berikut melakukan backtest berdasarkan tetapan.

  • Menghakimi modul status sambungan antara niaga hadapan komoditi CTP dan pelayan syarikat niaga hadapan

img

Masa hadapan komoditi mempunyai waktu buka dan waktu tutup. Apabila pasaran ditutup, ia tidak boleh disambungkan.

  • Modul kontrak set

img

Apabila objek bursa dikonfigurasi sebagai bursa niaga hadapan, jika bursa tidak menubuhkan kontrak dan mendapatkan maklumat pasaran secara langsung, satu ralat akan dilaporkan.

Kami menetapkan kontrak sebagai MA909, kontrak utama methanol pada masa ini.

Dengan cara ini, nilai harga terkini dalam pasaran tik semasa kontrak MA909 diperoleh.

  • Tetapkan modul arahan pesanan untuk perdagangan niaga hadapan

Dalam modul perintah pelaksanaan

img

Arah pesanan perlu ditentukan, kerana niaga hadapan mempunyai: beli: buka kedudukan panjang jual: posisi pendek terbuka closebuy: menutup kedudukan panjang close-sell: menutup kedudukan pendek Empat arah (ada dua arah lagi untuk niaga hadapan komoditi: closebuy_today untuk menutup kedudukan panjang hari ini dan closesell_today untuk menutup kedudukan pendek hari ini).

Sebagai contoh, jika modul pesanan ditetapkan sebagai beli, terdapat dua makna membuka kedudukan panjang dan menutup kedudukan pendek, yang tidak jelas. Oleh itu, modul Set the order direction for futures trading diperlukan untuk menetapkan arah pesanan yang jelas.

img

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

9. Modul perdagangan niaga hadapan mata wang digital

Penggunaan niaga hadapan mata wang digital pada dasarnya sama dengan niaga hadapan komoditi di [8] di atas

  • Mengambil OKEX sebagai contoh, kod kontrak boleh menjadi:
    • this_week: minggu ini
    • next_week: minggu depan
    • suku: suku
    • Pertukaran: kekal
  • BitMEX:
    • XBTUSD
    • ETHUSD
  • Modul leverage set

img

Ia digunakan untuk menetapkan leverage niaga hadapan mata wang 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, sila rujuk:https://www.fmz.com/square

Artikel lain dalam siri ini


Berkaitan

Lebih lanjut