Sebagai strategi pengajaran, yang terbaik adalah mempertimbangkan praktik.
Binance Futures Bot
dYdX Bot
Saya selalu menjamin bahwa ada benar-benar tidak ada pengisian ulang untuk
Hanya saja desain strategi versi pertama relatif sederhana dan kasar. Hanya ada satu posisi dan ekspor data ekuitas total pada antarmuka. kurva keuntungan hanya mencetak keuntungan dan kerugian yang direalisasikan, dan tidak menghitung kerugian mengambang. Banyak siswa baru mengeluh dan meminta untuk mengoptimalkan tampilan.
Dalam artikel ini, saya akan bekerja dengan Anda untuk meningkatkan strategi, yang telah stabil dan praktis selama setengah tahun.
Versi strategi sebelum upgrade tercatat di halaman
Ini juga kebiasaan pengembangan pribadi saya. sangat nyaman untuk merekam setiap bit pengembangan strategi dan iterasi padaFMZ.COM.
Mulai upgrade!
Pertama-tama, mari LogStatus
fungsi digunakan untuk menampilkan data bar status pada FMZ. kemudian, kita menemukan titik masuk ini dan mulai merancang kode.
Selanjutnya, tambahkan potongan besar kode di sini:
var tblPos = {
"type" : "table",
"title" : "position",
"cols" : ["position amount", "position direction", "position average price", "position profit and loss", "contract code", "custom feild / " + SpecifyPosField],
"rows" : []
}
var descType = ["long position", "short position"]
for (var posIndex = 0 ; posIndex < pos.length ; posIndex++) {
tblPos.rows.push([pos[posIndex].Amount, descType[pos[posIndex].Type], pos[posIndex].Price, pos[posIndex].Profit, pos[posIndex].ContractType, SpecifyPosField == "" ? "--" : pos[posIndex].Info[SpecifyPosField]])
}
var tbl = {
"type" : "table",
"title" : "data",
"cols" : ["current total equity", "actual profit and loss", "current price", "buy order price/amount", "sell order price/amount"],
"rows" : []
}
var buyOrder = null
var sellOrder = null
for (var orderIndex = 0 ; orderIndex < orders.length ; orderIndex++) {
if (orders[orderIndex].Type == ORDER_TYPE_BUY) {
buyOrder = orders[orderIndex]
} else {
sellOrder = orders[orderIndex]
}
}
var realProfit = currTotalEq - totalEq
if (exchange.GetName() == "Futures_Binance") {
_.each(pos, function(p) {
realProfit += parseFloat(p.Info.unRealizedProfit)
})
}
var t = exchange.GetTicker()
tbl.rows.push([currTotalEq, realProfit, t ? t.Last : "--", (buyOrder.Price + "/" + buyOrder.Amount), (sellOrder.Price + "/" + sellOrder.Amount)])
// Update the chart data
if (t && showLine) {
_.each(pos, function(p) {
$.PlotLine(descType[p.Type] + "position price", p.Price)
})
$.PlotLine("buy order price", buyOrder.Price)
$.PlotLine("sell order price", sellOrder.Price)
$.PlotLine("current price", t.Last)
}
// Update the status bar data
LogStatus("time:" + _D() + "\n" + "`" + JSON.stringify(tblPos) + "`" + "\n" + "`" + JSON.stringify(tbl) + "`")
Mengganti kasar sebelumnyaLogStatus
export.
LogStatus(_D(), "Current total equity:", currTotalEq, "position:", pos)
Strategi ini telah menambahkan 2 parameter:
showLine Periksa, dan Anda dapat menggunakan perpustakaan gambar garis untuk menggambar pada halaman bot, dan menggambar harga posisi, harga pesanan yang menunggu dan kurva harga saat ini.
Tentukan PosField Hal ini digunakan untuk mengatur bidang mentah informasi posisi yang perlu ditampilkan, karena nama lapangan data posisi mentah dari setiap platform berbeda. Seperti, bot Binance saya:
Aku ingin menampilkanunRealizedProfit
Anda dapat mengatur parameter SpecifyPosField ke unRealizedProfit, dan menampilkannya di bilah status.
Desain serupa memungkinkan strategi untuk mengekspor data yang tidak seragam secara adaptif, memberikan pengguna pilihan untuk menyesuaikan konten ekspor.
Anda dapat melihat data yang perlu ditampilkan sekilas. jauh lebih nyaman untuk mengamati kemajuan perdagangan strategi, harga posisi saat ini, keuntungan dan kerugian, dan harga pesanan. Strategi ini memiliki risiko tertentu, dan bot akan menetapkan parameter tertentu sesuai dengan kontrol risikonya sendiri, dan bertanggung jawab atas keuntungan dan kerugian sendiri.