Kami melanjutkan artikel sebelumnya:Desain sistem manajemen pesanan sinkronisasi berdasarkan kuantifikasi FMZ (1)Di sini, kami akan membahas tentang strategi yang akan digunakan untuk membuat daftar sinkronisasi.
Pertimbangkan beberapa masalah desain berikut:
Jika Anda tidak ingin melakukan sinkronisasi, apakah Anda dapat berhenti sementara. Setelah berhenti, Anda dilarang memulai dari API ekstensi dan menggunakan verifikasi kata sandi. Fitur ini memungkinkan Anda untuk menambahkan dua variabel global:
var isStopFollow = false // 用于标记当前是否跟单
var reStartPwd = null // 用于记录重启密码
Kemudian, pada halaman edit kebijakan, Anda menambahkan kontrol interaktif untuk menghentikan/memulai kembali kebijakan (tidak menghentikan cakram ini, hanya menghentikan logis, tidak mengikuti daftar, tidak melakukan apa-apa).订单同步管理系统类库(Single Server)
Disk juga tidak bisa membangunkan kebijakan Anda. Saat memulai kembali menu, masukkan kata sandi yang telah ditetapkan untuk membangunkan fungsi menu.
Kode implementasi untuk fungsi terkait:
...
// 判断交互指令
if (arr.length == 2) {
// 带控件的按钮
if (arr[0] == "stop/restart") {
// 暂停/重启跟单
if (!isStopFollow) {
isStopFollow = true
reStartPwd = arr[1]
Log("已经停止跟单,", "设置的重启密码为:", reStartPwd, "#FF0000")
} else if (isStopFollow && arr[1] == reStartPwd) {
isStopFollow = false
reStartPwd = null
Log("已经重启跟单,", "清空重启密码。", "#FF0000")
} else if (isStopFollow && arr[1] != reStartPwd) {
Log("重启密码错误!")
}
}
continue
}
2, Anda dapat menentukan jumlah yang lebih kecil dari daftar, atau Anda dapat memperbesar jumlahnya. Tambahkan parameter ke kebijakan:
specifiedAmount: menentukan jumlah daftar, dengan default -1, yaitu tidak ditentukan.
zoomAmountRatio: Mengukur jumlah yang lebih kecil dari sinyal yang dikirim, misalnya:ETH_USDT,swap,buy,1
, maka nilai dari satuan yang lebih rendah dikalikan dengan zoomAmountRatio.
var amount = specifiedAmount == -1 ? action.amount : specifiedAmount
amount = zoomAmountRatio == -1 ? amount : amount * zoomAmountRatio
Di sini, kita mengimplementasikan jumlah pesanan yang dibutuhkan dalam sinyal yang diterima.MeningkatkanAtauTentukan nilai spesifik。
3, kode yang paling sederhana, dioperasikan dengan menggunakan perpustakaan template lainnya.
Di sini, Anda dapat menemukan daftar aplikasi yang tersedia di situs ini.https://www.fmz.com/strategy/10989Di sini, Anda dapat menemukan daftar daftar yang tersedia di sini:https://www.fmz.com/strategy/203258
function trade(action) {
// 切换交易对,设置合约
exchange.SetCurrency(action.symbol)
if (action.ct != "spot") {
exchange.SetContractType(action.ct)
}
var retTrade = null
var amount = specifiedAmount == -1 ? action.amount : specifiedAmount
amount = zoomAmountRatio == -1 ? amount : amount * zoomAmountRatio
if (action.direction == "buy") {
retTrade = action.ct == "spot" ? $.Buy(amount) : $.OpenLong(exchange, action.ct, amount)
} else if (action.direction == "sell") {
retTrade = action.ct == "spot" ? $.Sell(amount) : $.OpenShort(exchange, action.ct, amount)
} else if (action.direction == "closebuy") {
retTrade = action.ct == "spot" ? $.Sell(amount) : $.CoverLong(exchange, action.ct, amount)
} else if (action.direction == "closesell") {
retTrade = action.ct == "spot" ? $.Buy(amount) : $.CoverShort(exchange, action.ct, amount)
}
return retTrade
}
Jadi, lihatlah, daftar ini hanya membutuhkan satu kalimat:$.Sell(amount)
、$.Buy(amount)
、 $.OpenLong(exchange, action.ct, amount)
... dan seterusnya.
Sebelumnya订单同步管理系统(Synchronous Server)
Kode tempurnya adalah:
Sekarang mulailah mendesain ulang.订单同步管理系统(Synchronous Server)
:
// 全局变量
var isStopFollow = false
var reStartPwd = null
function trade(action) {
// 切换交易对,设置合约
exchange.SetCurrency(action.symbol)
if (action.ct != "spot") {
exchange.SetContractType(action.ct)
}
var retTrade = null
var amount = specifiedAmount == -1 ? action.amount : specifiedAmount
amount = zoomAmountRatio == -1 ? amount : amount * zoomAmountRatio
if (action.direction == "buy") {
retTrade = action.ct == "spot" ? $.Buy(amount) : $.OpenLong(exchange, action.ct, amount)
} else if (action.direction == "sell") {
retTrade = action.ct == "spot" ? $.Sell(amount) : $.OpenShort(exchange, action.ct, amount)
} else if (action.direction == "closebuy") {
retTrade = action.ct == "spot" ? $.Sell(amount) : $.CoverLong(exchange, action.ct, amount)
} else if (action.direction == "closesell") {
retTrade = action.ct == "spot" ? $.Buy(amount) : $.CoverShort(exchange, action.ct, amount)
}
return retTrade
}
function parseCmd(cmd) {
var objAction = {}
// 解析cmd ,例如:ETH_USDT,swap,buy,1
var arr = cmd.split(",")
if (arr.length != 4) {
return null
}
objAction.symbol = arr[0]
objAction.ct = arr[1]
objAction.direction = arr[2]
objAction.amount = arr[3]
return objAction
}
function main() {
// 清除所有日志
LogReset(1)
if (isSimulateOKEX) {
exchange.IO("simulate", true)
Log("切换到OKEX模拟盘!")
}
// 设置精度
exchange.SetPrecision(pricePrecision, amountPrecision)
// 检查缩放、指定不能同时设置
if (specifiedAmount != -1 && zoomAmountRatio != -1) {
throw "不能同时指定同步量和缩放量"
}
while (true) {
var cmd = GetCommand()
if (cmd) {
Log("cmd: ", cmd)
var arr = cmd.split(":")
// 判断交互指令
if (arr.length == 2) {
// 带控件的按钮
if (arr[0] == "stop/restart") {
// 暂停/重启跟单
if (!isStopFollow) {
isStopFollow = true
reStartPwd = arr[1]
Log("已经停止跟单,", "设置的重启密码为:", reStartPwd, "#FF0000")
} else if (isStopFollow && arr[1] == reStartPwd) {
isStopFollow = false
reStartPwd = null
Log("已经重启跟单,", "清空重启密码。", "#FF0000")
} else if (isStopFollow && arr[1] != reStartPwd) {
Log("重启密码错误!")
}
}
continue
}
// 允许跟单
if (!isStopFollow) {
// 解析跟单信号交互指令
var objAction = parseCmd(cmd)
if (objAction) {
// 解析正确
var ret = trade(objAction)
} else {
Log("错误的信号指令 cmd:", cmd)
}
}
}
// 显示跟单情况
LogStatus(_D(), isStopFollow ? "停止同步" : "保持同步", "\n")
Sleep(1000)
}
}
Akun bandwidth ini menggunakan pengujian Binance, sedangkan akun bandwidth menggunakan pengujian OKEX. Bandwidth masih menggunakan fungsi pengujian yang digunakan dalam artikel sebelumnya.订单同步管理系统类库(Single Server)
Templatmain
Fungsi) ^
Hanya saja kita mengubah arah transaksi menjadi kosong, dan volume transaksi berubah menjadi 0.003 (kontrak lokal USDT dapat dipesan dalam jumlah kecil). Tetapi akun OKEX harus berjumlah bulat (kontrak di bursa OKEX harus berjumlah bulat), jadi parameter saya akan menentukan parameter strategi.specifiedAmount
Ini adalah 1 ≠ 1 ≠ 1.
订单同步管理系统类库(Single Server)
Fungsi uji coba pada hard disk memicu transaksi.
Setelah menerima sinyal, strategi real-time untuk melakukan tindakan ini:
"Kami tidak bisa menerima laporan dari pihak bank", kata dia.
Selanjutnya, uji posisi rata dengan mengubah arah baris bawah dalam fungsi main untuk meratakan posisi kosong 0.003.
Setelah itu berjalan kembali ke hard drive yang bertanggung jawab atas pita tersebut.订单同步管理系统类库(Single Server)
)。
Pada saat yang sama, Google juga meluncurkan aplikasi yang sama untuk perangkat keras:
Alamat kebijakan:Perpustakaan kelas sistem manajemen sinkronisasi pesanan (Single Server) Sistem Manajemen Pemesanan Sinkron (Synchronous Server)
Desain strategi hanya untuk pembelajaran pertukaran, produksi yang sebenarnya membutuhkan modifikasi, penyesuaian, dan optimalisasi sendiri.