
Pelajari strategi perdagangan pembinaan modul visual - bab pengenalan, dan mempunyai pemahaman konseptual tentang pembinaan dan penyambungan modul visual. Kemudian mudah untuk belajar menggunakan modul lain. Beberapa fungsi yang lebih kompleks boleh digabungkan.
Dalam kajian dan ujian terdahulu, kami telah berhubung dengan beberapa modul “kategori transaksi”. Contohnya: Modul “Pertukaran Sebut Harga”. Modul “Exchange Dapatkan K-line”. …
Saya tidak akan memperincikan perkara yang telah digunakan.

Apabila menulis strategi untuk berdagang dengan robot, anda boleh menambah lebih daripada satu objek pertukaran, contohnya, strategi lindung nilai. Atau anda perlu melintasi (traversal bermaksud melawat setiap satu demi satu) objek pertukaran untuk mengakses keadaan pasaran. Pada masa ini, anda perlu menggunakan modul untuk mendapatkan bilangan pertukaran.
Mula-mula kita boleh menggunakan struktur ringkas untuk mencetak bilangan pertukaran yang dikonfigurasikan pada masa ini:

Malah, ia sama seperti memanggil kod dasar JavaScript berikut:
function main () {
Log(exchanges.length)
}
Mari lihat hasil menjalankan modul gabungan ini:

Anda boleh melihat bahawa kami telah menambah 3 objek pertukaran, mewakili tiga akaun pertukaran yang berbeza, dan hasil keluaran log paling belakang ialah 3.

Apabila menambah tiga objek pertukaran, kotak lungsur akan menunjukkan tiga pilihan.
Ketahui modul gelung terlebih dahulu, dalam jenis gelung.

Mari belajar modul penghakiman bersyarat terlebih dahulu:
Syarat penghakiman boleh ditulis sebagai:

Kami menggunakan modul gelung untuk mengulangi nama pertukaran yang ditambahkan Gunakan modul penghakiman bersyarat untuk menentukan sama ada kiraan gelung semasa sepadan dengan nama pertukaran yang akan dicetak.

Keputusan larian 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())
}
}
}

Contoh mudah mendapatkan pasangan dagangan objek pertukaran pertama yang kini ditetapkan dan menetapkannya kepada pembolehubah teks (dicipta dalam kategori pembolehubah terlebih dahulu).
Keputusan ujian belakang:

Jika anda memanggil kod dasar JavaScript:
function main () {
var text = exchange.GetCurrency()
Log(text)
}
Modul ini sangat penting dan digunakan untuk operasi pesanan Pembolehubah harga dibenamkan dalam kedudukan tenon (alur) pertama untuk menentukan harga pesanan Anda juga boleh memasukkan nilai tetap.
Kedudukan tenon (titik) kedua membenamkan pembolehubah kuantiti pesanan, yang digunakan untuk menentukan kuantiti pesanan.
Sebagai contoh, kami akan membuat contoh meletakkan pesanan beli berdasarkan harga terkini data pasaran semak semasa, dengan kegelinciran 10 yuan, menetapkan kuantiti pesanan kepada 0.1 syiling dan mencetak ID pesanan.

Keputusan larian ujian belakang:

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

Modul ini akan mengembalikan semua pesanan yang belum selesai untuk pasangan dagangan semasa Struktur yang dikembalikan ialah senarai (array), yang boleh diproses oleh modul jenis senarai (operasi traversal, dll.). Contohnya: Kami mengubah suai sedikit contoh modul pesanan [4] di atas dan menukar harga 10 yuan yang ditambahkan apabila membuat pesanan kepada tolak harga 10 yuan. Pesanan tidak akan dilaksanakan serta-merta, tetapi akan belum selesai dalam kedalaman beli dan jual (iaitu, pada tahap tertentu antara Beli 1, Beli 2 dan Beli N), supaya pesanan itu berada dalam pesanan belum selesai menunggu pelaksanaan. Kemudian kami menggunakan modul “Dapatkan pesanan amanah pasangan dagangan semasa” untuk mendapatkan senarai pesanan dalam keadaan PENDING (menunggu pelaksanaan). Untuk mengelakkan pelaksanaan pesanan dalam keadaan pasaran yang berikutnya dan menjejaskan pemerhatian akhir ujian belakang, selepas modul “Dapatkan pesanan amanah pasangan dagangan semasa” dilaksanakan dan senarai pesanan dicetak, kami segera menggunakan “Pengecualian Lempar”. “ modul untuk menghentikan program.

Pertunjukan ujian belakang:

Harga pesanan beli adalah 10 yuan lebih rendah daripada harga terkini pada masa itu, jadi transaksi tidak akan selesai serta-merta. Kemudian dapatkan pesanan yang sedang menunggu pelaksanaan dan cetaknya. Akhirnya, pengecualian dilemparkan untuk menghentikan program.
Keseluruhan modul yang dipasang adalah 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.
Terdapat banyak senario di mana ini diperlukan semasa menulis dasar:
Batalkan semua pesanan yang belum selesai.
Tidak dinafikan, ini memerlukan penggunaan “modul pembatalan pesanan”. Semasa mempelajari modul pembatalan pesanan, kita boleh menggunakan [5] untuk mendapatkan modul untuk pesanan amanah pasangan dagangan semasa dan menggabungkannya untuk mencapai fungsi ini.
Pertama, untuk menguji membatalkan semua pesanan, membuat pesanan tidak begitu jelas, kita mulakan dengan meletakkan dua pesanan dengan harga dan kuantiti yang berbeza untuk membezakan kedua-dua pesanan.

Gunakan modul “Lintas setiap elemen dalam senarai” dalam modul jenis gelung untuk melintasi pesanan dalam senarai pesanan belum selesai semasa.
Semasa traversal, setiap pesanan yang dikeluarkan diberikan kepada susunan modul pembolehubah (dicipta dalam jenis modul pembolehubah, seperti ditunjukkan di bawah :)
Gunakan modul jenis alat:
Keluarkan ID pesanan dan hantar ke kedudukan tenon (cekung) modul pesanan batal, dan modul pesanan batal melaksanakan pesanan batal.
Larian ujian belakang:

Menggunakan penerangan dasar 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 boleh mengembalikan maklumat pesanan terperinci dengan menyambungkan modul pembolehubah ID pesanan ke kedudukan tanggam dan duri.

Beri perhatian kepada pesanan yang dikembalikan selepas berjalan:

Berbanding dengan keputusan berjalan dalam contoh [5], boleh didapati bahawa pesanan bercetak adalah maklumat pesanan yang berasingan.[] Dibalut dalam kurungan segi empat sama.
Oleh kerana contoh [5] mengembalikan senarai, contoh ini mengembalikan maklumat pesanan tunggal (diperolehi berdasarkan modul pembolehubah ID pada kedudukan tenon yang diluluskan oleh modul).
Contoh di atas adalah bersamaan dengan melaksanakan dasar JavaScript:
function main () {
var id = exchange.Buy(_C(exchange.GetTicker).Last - 10, 0.1)
Log(exchange.GetOrder(id))
}
Kami akan mengkaji modul di atas satu demi satu, dan menetapkan pertukaran ujian kepada niaga hadapan komoditi.
Tetapan ujian belakang:
Contoh berikut menguji semula persediaan ini.

Niaga hadapan komoditi mempunyai masa buka dan tutup Apabila pasaran ditutup, anda tidak boleh menyambung.

Apabila objek pertukaran dikonfigurasikan sebagai bursa niaga hadapan, jika anda tidak menetapkan kontrak dan terus mendapatkan maklumat pasaran, ralat akan dilaporkan:

Kami menetapkan kontrak kepada MA909, yang merupakan kontrak utama semasa untuk metanol.
Dengan cara ini, nilai harga terkini dalam pasaran semak semasa kontrak MA909 diperolehi.
Dalam modul perintah pelaksanaan

Arah pesanan perlu dinyatakan kerana niaga hadapan mempunyai:
beli : buka kedudukan panjang
menjual : membuka kedudukan jual
closebuy : tutup kedudukan panjang
closesell : tutup kedudukan jual
Empat arah (niaga hadapan komoditi mempunyai dua lagi arah: closebuy_today menutup kedudukan beli hari ini, closesell_today menutup kedudukan jual hari ini).
Sebagai contoh, jika modul pesanan ditetapkan untuk membeli, maka terdapat dua makna: buka kedudukan panjang dan tutup kedudukan pendek, yang mewujudkan kesamaran. Oleh itu, modul “Tetapkan Arah Pesanan Dagangan Hadapan” diperlukan untuk menetapkan arah pesanan yang jelas.

Pertunjukan 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("未连接商品期货前置机")
}
Sleep(1000)
}
}
Penggunaan niaga hadapan mata wang digital pada asasnya adalah sama dengan penggunaan niaga hadapan komoditi dalam [8] di atas.
Mengambil OKEX sebagai contoh, kod kontrak boleh:
BitMEX :
Menetapkan Modul Leverage

Digunakan untuk menetapkan leverage untuk niaga hadapan mata wang digital.
# 注意 : 回测不支持。
Seperti dalam strategi JavaScript:
function main () {
exchange.SetMarginLevel(10)
}
Strategi Contoh Visualisasi:
Lebih banyak strategi boleh didapati di: https://www.fmz.com/square
Artikel lain dalam siri ini