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.
Dalam pembelajaran dan ujian sebelumnya, kami telah terdedah kepada beberapa modul
Mereka telah digunakan tidak akan diulangi di sini.
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:
Malah, ia seperti memanggil kod strategi JavaScript seperti:
function main () {
Log(exchanges.length)
}
Mari kita lihat hasil berjalan modul gabungan ini:
Kita boleh lihat bahawa kita telah menambah tiga objek pertukaran, mewakili tiga akaun pertukaran yang berbeza, dan hasil output log backtest adalah 3.
Apabila menambah tiga objek pertukaran, kotak drop-down akan memaparkan tiga pilihan. Belajar modul gelung dalam jenis gelung terlebih dahulu.
Belajar modul penilaian keadaan terlebih dahulu:
Syarat penghakiman boleh ditulis seperti berikut:
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.
Hasil operasi ujian belakang:
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())
}
}
}
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).
Hasil ujian belakang:
Jika anda memanggil kod strategi JavaScript:
function main () {
var text = exchange.GetCurrency()
Log(text)
}
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.
Hasil operasi ujian belakang:
Seperti kod strategi JavaScript berikut:
function main () {
var id = exchange.Buy(_C(exchange.GetTicker).Last + 10, 0.1)
Log(id)
}
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
Ujian belakang menunjukkan bahawa:
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"
}
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
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.
Gunakan
Semasa pelaksanaan, setiap pesanan yang diambil diberikan nilai kepada pesanan modul pembolehubah (dicipta dalam jenis modul pembolehubah, seperti yang ditunjukkan di bawah:)
Gunakan modul
Keluarkan ID pesanan, pasangkan ke kedudukan tenon (kuncup) modul
Operasi ujian belakang:
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))
}
}
Kedudukan tenon (konkaf) modul disambungkan dengan modul pemboleh ubah ID pesanan, dan butiran pesanan boleh dikembalikan.
Perhatikan perintah yang dikembalikan selepas berjalan:
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))
}
Kita akan belajar modul di atas satu demi satu dan kita menetapkan pertukaran ujian sebagai niaga hadapan komoditi.
Tetapan Ujian Balik:
Contoh berikut melakukan backtest berdasarkan tetapan.
Masa hadapan komoditi mempunyai waktu buka dan waktu tutup. Apabila pasaran ditutup, ia tidak boleh disambungkan.
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.
Dalam modul perintah pelaksanaan
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
Paparan ujian belakang:
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)
}
}
Penggunaan niaga hadapan mata wang digital pada dasarnya sama dengan niaga hadapan komoditi di [8] di atas
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