Banyak rakan yang berdagang secara manual memerlukan robot, tetapi memerlukan masa yang lebih lama untuk memulakan reka bentuk berprogram apabila mereka mengalami kesukaran dasar. Kami menggunakan keperluan ini untuk membuat robot mudah untuk membantu rakan yang belajar dasar dasar perdagangan berprogram.
Pertama, kita akan menganalisis keperluan, robot ini berfungsi untuk melaksanakan operasi pembelian dan penjualan apabila satu akaun berlaku, dan akaun lain mengikuti. Oleh itu, kita mulakan dengan menentukan dua subjek:
Jika kita sudah jelaskan keperluan ini, kita perlu terus berfikir tentang langkah seterusnya. Bagaimana kita mengenal pasti langkah-langkah akaun rujukan?
Pemantauan akaun rujukan, yang sangat mudah untuk akaun tunai, hanya dapat dilakukan dengan membandingkan jumlah mata wang dalam data maklumat akaun terkini dengan jumlah mata wang dalam data maklumat akaun terkini yang diperoleh pada masa ini. Jika jumlah duit syiling dalam data maklumat akaun terkini yang diperoleh lebih banyak daripada yang direkodkan sebelum ini, menunjukkan bahawa akaun rujukan melakukan satu operasi pembelian dan pembelian berjaya. Sebaliknya, jika jumlah duit syiling kurang, maka operasi jual dilakukan untuk akaun rujukan. Setelah kami menemui tindakan ini, kami boleh meminta akaun pertukaran lain untuk melakukan operasi yang sama.
Apabila akaun rujukan ditemui telah menjalankan satu transaksi, pastikan untuk mengemas kini rekod data akaun terakhir untuk digunakan untuk membandingkan dengan maklumat akaun yang diperoleh seterusnya untuk menentukan sama ada terdapat tindakan perdagangan baru.
Di atas, logiknya diterangkan dalam kod strategi:
// 检测跟单
var amount = (nowAcc.Stocks + nowAcc.FrozenStocks) - (initAcc.Stocks + initAcc.FrozenStocks) // 检测币数发生的变化
var func = null
if (amount > 0) { // 币变多了
func = $.Buy // 买入
} else if (amount < 0) { // 币变少了
func = $.Sell // 卖出
} else {
continue
}
// 执行跟单
Log("跟单!数量:", Math.abs(amount), "#FF0000")
for (var i = 1 ; i < exchanges.length ; i++) { // i 等于 0 时,是参考交易所,不处理,处理其它的跟单交易所
func(exchanges[i], Math.abs(amount)) // 执行具体的交易函数,可能是$.Buy 或者是 $.Sell ,具体看amount 是大于0,还是小于0
}
// 执行跟单之后更新参考交易所账户信息记录
initAcc = nowAcc // 更新参考交易所最近一次的账户信息,用于下次对比
Logik pengesanan utama strategi adalah kod di atas. Untuk reka bentuk yang mudah, strategi menggunakan templat perpustakaan perdagangan mata wang digital rasmi FMZ.$.Buy
, $.Sell
Semua adalah fungsi untuk templat ini, yang berfungsi untuk melaksanakan operasi berikut.
Seterusnya, anda boleh menambah beberapa tetingkap status untuk memantau data akaun anda.
function test() {
// 测试函数
var ts = new Date().getTime()
if (ts % (1000 * 60 * 60 * 6) > 1000 * 60 * 60 * 5.5) {
Sleep(1000 * 60 * 10)
var x = Math.random()
if (x > 0.5) {
$.Buy(exchange, x / 10)
} else {
$.Sell(exchange, x / 10)
}
}
}
function main() {
LogReset(1)
if (exchanges.length < 2) {
throw "没有跟单的交易所"
}
var exName = exchange.GetName()
// 检测参考交易所
if (exName.includes("Futures_")) {
throw "仅支持现货跟单"
}
Log("开始监控", exName, "交易所", "#FF0000")
// 检测跟单交易所
for (var i = 1 ; i < exchanges.length ; i++) {
if (exchanges[i].GetName().includes("Futures_")) {
throw "不支持期货交易所跟单"
}
}
var initAcc = _C(exchange.GetAccount)
while(1) {
if(IsVirtual()) {
// 测试函数
test()
}
Sleep(5000)
// 更新参考账户当前的账户信息
var nowAcc = _C(exchange.GetAccount)
// 参考交易所账户信息
var refTbl = {
type : "table",
title : "参考交易所",
cols : ["名称", "币", "冻结币", "钱", "冻结钱"],
rows : []
}
refTbl.rows.push([exName, nowAcc.Stocks, nowAcc.FrozenStocks, nowAcc.Balance, nowAcc.FrozenBalance])
// 跟单交易所账户信息
var followTbl = {
type : "table",
title : "跟单交易所",
cols : ["名称", "币", "冻结币", "钱", "冻结钱"],
rows : []
}
for (var i = 1 ; i < exchanges.length ; i++) {
var acc = _C(exchanges[i].GetAccount)
var name = exchanges[i].GetName()
followTbl.rows.push([name, acc.Stocks, acc.FrozenStocks, acc.Balance, acc.FrozenBalance])
}
// 状态栏显示
LogStatus(_D(), "\n`" + JSON.stringify(refTbl) + "`", "\n`" + JSON.stringify(followTbl) + "`")
// 检测跟单
var amount = (nowAcc.Stocks + nowAcc.FrozenStocks) - (initAcc.Stocks + initAcc.FrozenStocks)
var func = null
if (amount > 0) {
func = $.Buy
} else if (amount < 0) {
func = $.Sell
} else {
continue
}
// 执行跟单
Log("跟单!数量:", Math.abs(amount), "#FF0000")
for (var i = 1 ; i < exchanges.length ; i++) {
func(exchanges[i], Math.abs(amount))
}
// 执行跟单之后更新参考交易所账户信息记录
initAcc = nowAcc
}
}
Mari kita uji secara langsung, menggunakan FMZ untuk menguji pertukaran simulasi wexApp. Di sini saya telah menambah tiga akaun wexApp, yang masing-masing adalah akaun yang berasingan.
Kemudian kami menggunakan terminal dagangan FMZ untuk membuat pesanan seterusnya secara manual dan melihat sama ada robot akan membuat pesanan secara automatik.
Di sini, anda boleh melihat robot yang mengesan transaksi dan menjalankan operasi berikut.
Rancangan lengkap:https://www.fmz.com/strategy/255182
Strategi ini hanya untuk pembelajaran sahaja, terima kasih untuk komen jika ada soalan.
Orang SyiahHi, boleh bantu saya dengan penerbitan, bayar untuk bantuan. Terima kasih.
Orang SyiahHi, boleh bantu saya dengan penerbitan, bayar untuk bantuan. Terima kasih.
Anak yang gemuk.Adakah anda boleh mengesan liontin?
13169222039Halo, saya ingin bertanya kepada anda, apakah anda boleh mendapatkan kod orang di atas koin ini?
Pencipta Kuantiti - Impian KecilStrategi ini adalah kod sumber terbuka, dan ia boleh dilihat di Lapangan Strategi. Tutorial yang disediakan oleh komuniti FMZ boleh dilihat. Tutorial rendah digunakan untuk pengajaran, dan penggunaan asas boleh digunakan.
rootmeJika anda mempunyai harga yang lebih rendah, anda mungkin mempunyai harga yang jauh berbeza daripada mereka.