Bagaimana cara memperluas perpustakaan kelas kustom yang Anda butuhkan untuk strategi visualisasi Anda? Misalnya, saya ingin menghitung indikator MA, tetapi sistem hanya membawa:Bagaimana Anda bisa menambahkan beberapa kode khusus untuk indikator ini? Kami menjelaskan bagaimana memperluas modul visualisasi dengan menambahkan modul perhitungan indikator MA khusus.
Pertama, mari kita bahas tentang template Cryptocurrency Cash Library, yang alamatnya adalah:https://www.fmz.com/strategy/10989Meskipun template ini adalah template bahasa JavaScript untuk platform FMZ, siswa yang tidak memahami konsep template dapat mencari dokumen FMZ API:https://www.fmz.com/api#模板类库Tidak ada. Namun, di bagian awal template ada catatan yang mendefinisikan kode untuk memvisualisasikan modul, dan kode yang didefinisikan dapat mengutip kode dari template JavaScript ini.
Perpustakaan transaksi langsung mata uang digital, definisi visual pada bagian awal:
/*blockly
{
"type": "ext_Trade",
"message0": "%1 币数 %2|%1 Coins %2",
"args0": [{
"type": "field_dropdown",
"options": [
["买入|Buy", "Buy"],
["卖出|Sell", "Sell"]
]
}, {
"type": "input_value",
"check": "Number"
}],
"template": "(function(){var r = $.%1(%2); return r ? r.amount : 0; })()",
"order": "ORDER_ATOMIC",
"output": "Number",
"colour": 85
}, {
"type": "ext_CancelPendingOrders",
"message0": "取消 %1 订单|Cancel %1 Orders",
"args0": [{
"type": "field_dropdown",
"name": "TYPE",
"options": [
["所有|All", " "],
["买单|Buy", "ORDER_TYPE_BUY"],
["卖单|Sell", "ORDER_TYPE_SELL"]
]
}],
"previousStatement": null,
"nextStatement": null,
"template": "$.CancelPendingOrders(%1);",
"colour": 85
}, {
"type": "ext_Cross",
"message0": "计算交叉 周期 %1 与 %2|Cross Period %1 and %2",
"inputsInline": true,
"args0": [{
"type": "input_value"
}, {
"type": "input_value"
}],
"template": "$.Cross(%1,%2)",
"order": "ORDER_ATOMIC",
"output": "Number"
}, {
"type": "ext_GetAccount",
"message0": "获取资产信息|GetAccount",
"template": "$.GetAccount()",
"order": "ORDER_ATOMIC",
"output": null
}
*/
Modul-modul di halaman pengeditan yang dapat dilihat:
Dengan contoh yang sudah ada, Anda dapat membuatnya sendiri dengan mudah, bahkan lebih mudah daripada membuat lukisan sendiri.
Pertama, membuat template baru untuk bahasa JavaScript.
Mengedit kode template.
/*blockly
{
"type": "ext_testA",
"message0": "testA|testA",
"template": "function(){return 99;}()",
"order": "ORDER_ATOMIC",
"output": "Number"
},{
"type": "ext_MA",
"message0": "MA 周期 %1| MA Period %1",
"args0": [{
"type": "input_value",
"check": "Number"
}],
"template": "(function(){var r = exchange.GetRecords(); return (!r || r.length < %1) ? false : TA.MA(r, %1); })()",
"order": "ORDER_ATOMIC",
"output": null,
"colour": 85
}
*/
Setelah template yang baru dibuat diedit, simpan. Jika Anda ingin menggunakan template ini, pilih template ini.
Anda dapat melihat dua modul tambahan:
Di sini kita akan melihat modul yang disebut: testA, dan kita akan melihat kode pelaksanaannya:
function(){return 99;}()
Ini adalah fungsi JavaScript yang sangat sederhana yang dijalankan untuk mengembalikan nilai 99.
Di bawah ini adalah kode pelaksanaannya:
(function(){var r = exchange.GetRecords(); return (!r || r.length < %1) ? false : TA.MA(r, %1); })()
Kode adalah panggilan fungsi anonim yang pertama kali dilakukan dalam fungsi anonim untuk mendapatkan data baris K, data baris K.r
│ Kemudian berdasarkan apakah r yang diperoleh adalah untuknull
Ataur
Apakah panjangnya lebih kecil dari parameter input dari modul%1
Untuk memutuskan kembalifalse
atau kembaliTA.MA(r, %1)
Hasil dari perhitungan indikator.
Anda bisa menggunakannya di kemudian hari.
Di sini, Anda dapat melihat beberapa gambar yang menarik.
Berjalan:
Seperti yang dapat dilihat di atas, data yang diperoleh untuk menghitung indikator MA dibayar jika Anda mau.
Di atas hanya mengutip kerucut, untuk desain modul visualisasi dapat menggunakan fungsi template untuk memperluas sendiri.