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.
Dalam pembelajaran dan pengujian sebelumnya, kami telah terkena beberapa modul
Ini telah digunakan tidak akan diulang di sini.
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:
Bahkan, itu seperti memanggil kode strategi JavaScript seperti:
function main () {
Log(exchanges.length)
}
Mari kita lihat hasil dari modul gabungan ini:
Kita dapat melihat bahwa kita telah menambahkan tiga objek pertukaran, mewakili tiga akun pertukaran yang berbeda, dan hasil output dari backtest log adalah 3.
Saat menambahkan tiga objek pertukaran, kotak drop-down akan menampilkan tiga opsi. Pelajari modul loop di tipe loop sebelumnya.
Pelajari modul penilaian kondisi sebelumnya:
Kondisi penilaian dapat ditulis sebagai berikut:
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.
Hasil operasi backtest:
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())
}
}
}
Contoh sederhana adalah mendapatkan pasangan perdagangan dari objek pertukaran pertama yang saat ini ditetapkan dan menugaskannya ke variabel teks (dibuat di kategori variabel sebelumnya).
Hasil tes balik:
Jika Anda memanggil kode strategi JavaScript:
function main () {
var text = exchange.GetCurrency()
Log(text)
}
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.
Hasil operasi backtest:
Seperti kode 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 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
Tes balik menunjukkan bahwa:
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"
}
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
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.
Gunakan
Selama traversal, setiap urutan yang diambil diberikan nilai untuk variabel modul urutan (dibuat dalam tipe modul variabel, seperti yang ditunjukkan di bawah ini:)
Gunakan modul
Keluarkan ID pesanan, lalu serahkan ke posisi tenon (kerongkong) dari modul
Operasi backtest:
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))
}
}
Posisi tenon (kerongkong) dari modul terhubung dengan modul variabel order ID, dan rincian order dapat dikembalikan.
Perhatikan urutan yang dikembalikan setelah berjalan:
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))
}
Kita akan mempelajari modul di atas satu per satu dan kita mengatur bursa uji sebagai komoditas berjangka.
Pengaturan backtesting:
Contoh berikut melakukan backtest berdasarkan pengaturan.
Komoditas berjangka memiliki waktu buka dan waktu tutup.
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.
Dalam modul perintah eksekusi
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
Tampilan backtesting:
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)
}
}
Penggunaan berjangka mata uang digital pada dasarnya sama dengan berjangka komoditas di [8] di atas
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