Bagaimana untuk memperluaskan perpustakaan kelas tersuai yang anda perlukan untuk strategi visualisasi? Sebagai contoh, saya ingin mengira penunjuk MA, tetapi sistem hanya membawa:Bagaimana anda boleh menambah kod yang disesuaikan? Sebagai contoh, kami akan menerangkan bagaimana untuk mengembangkan modul visualisasi dengan menambah modul pengiraan penunjuk MA tersuai.
Pertama sekali, mari kita bincangkan templat ini, yang dikenali sebagai Cryptocurrency Cash Library, yang diletakkan di:https://www.fmz.com/strategy/10989Walaupun templat ini adalah templat bahasa JavaScript untuk platform FMZ, pelajar yang tidak memahami konsep templat boleh melihat dokumen API FMZ:https://www.fmz.com/api#模板类库(Sunting) Tetapi terdapat nota di bahagian awal templat yang menentukan kod untuk memvisualisasikan modul, dan kod yang ditentukan boleh merujuk kepada kod templat JavaScript ini.
Perpustakaan perdagangan tunai mata wang digital, definisi visual pada bahagian 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 dalam halaman penyuntingan visual adalah:
Dengan contoh-contoh yang sedia ada, anda boleh membina sendiri dengan mudah, lebih mudah daripada melukis.
Pertama, membina templat baru untuk bahasa JavaScript.
Mengedit kod templat.
/*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
}
*/
Templat yang baru dicipta ini boleh disimpan selepas diedit. Dalam strategi yang kita perlukan untuk menggunakan templat ini, pilih templat ini.
Di sini, anda boleh melihat dua modul tambahan:
Modul yang dipanggil:testA, mari kita lihat kod pelaksanaannya:
function(){return 99;}()
Ini adalah fungsi JavaScript yang sangat mudah untuk dijalankan dan mengembalikan nilai 99.
Modul yang dinamakan: MA Cycle, kita lihat di bawah ini kod pelaksanaannya:
(function(){var r = exchange.GetRecords(); return (!r || r.length < %1) ? false : TA.MA(r, %1); })()
Kod adalah panggilan fungsi tanpa nama yang pertama kali dilakukan dalam fungsi tanpa nama untuk mendapatkan data baris K, data baris K.r
.. dan kemudian bergantung pada apakah r yang diperoleh adalah untuknull
ataur
Apakah panjang adalah kurang daripada parameter input modul%1
Untuk menilai kembalifalse
atau kembali.TA.MA(r, %1)
Hasil pengiraan indikator.
Saya tidak mahu menghalang anda daripada menggunakan laman web ini.
Pengarang Strategi Visual:
Jalankan:
Seperti yang dapat dilihat di atas, data yang diperoleh untuk mengira indikator MA dibayar jika anda mahu.
Di atas adalah hanya untuk meringkaskan, untuk reka bentuk modul visual, fungsi templat boleh diperluaskan sendiri.