
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.
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.

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:

Sebenarnya, ini seperti memanggil kode kebijakan JavaScript berikut:
function main () {
Log(exchanges.length)
}
Mari kita lihat hasil menjalankan modul gabungan ini:

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.

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

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

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.

Hasil uji coba kembali:

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 mendapatkan pasangan perdagangan dari objek pertukaran pertama yang saat ini ditetapkan dan menetapkannya ke variabel teks (dibuat dalam kategori variabel sebelumnya).
Hasil pengujian ulang:

Jika Anda memanggil kode kebijakan JavaScript:
function main () {
var text = exchange.GetCurrency()
Log(text)
}
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.

Hasil uji coba kembali:

Seperti kode kebijakan JavaScript berikut:
function main () {
var id = exchange.Buy(_C(exchange.GetTicker).Last + 10, 0.1)
Log(id)
}

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.

Pengujian ulang menunjukkan:

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"
}

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.

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

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))
}
}

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

Perhatikan perintah yang dikembalikan setelah dijalankan:

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))
}
Kita akan mempelajari modul di atas satu per satu, dan menetapkan bursa pengujian ke komoditi berjangka.
Pengaturan pengujian ulang:
Contoh berikut menguji ulang pengaturan ini.

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

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

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

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.

Pengujian ulang menunjukkan:

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)
}
}
Penggunaan futures mata uang digital pada dasarnya sama dengan penggunaan futures komoditas pada [8] di atas.
Mengambil OKEX sebagai contoh, kode kontraknya adalah:
BitMEX :
Mengatur Modul Leverage

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