Например, я хочу вычислить показатели MA, но система сама по себе имеет только:Как можно добавить к этим показателям некоторые персонализированные коды? Мы объясняем, как расширить модуль визуализации, добавляя модуль для вычисления индивидуальных показателей MA.
Для начала, давайте поговорим о шаблоне, который используется для создания электронной валюты.https://www.fmz.com/strategy/10989Несмотря на то, что этот шаблон является шаблоном языка JavaScript для платформы FMZ, студенты, которые не понимают концепцию шаблона, могут обратиться к документации FMZ API:https://www.fmz.com/api#模板类库(См. Но в комментариях к началу шаблона есть код, который определяет визуализацию модуля, и в определённом коде можно ссылаться на код этого шаблона JavaScript.
Начальная часть - визуализированное определение:
/*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
}
*/
Модули на странице визуализации редактирования:
Если у вас есть готовые примеры, то создать их своими руками проще, чем просто рисовать.
Сначала мы создали новый шаблон для языка JavaScript.
Редактировать код шаблона.
/*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
}
*/
Смотрите, как создается новый шаблон, и сохраните его. В политике, в которой мы должны использовать этот шаблон, выберите этот шаблон.
Посмотрите, как появились два дополнительных модуля:
Он создал модуль под названием testA, и мы посмотрим на его код выполнения:
function(){return 99;}()
Это очень простая функция JavaScript, которая выполняется и возвращает значение 99.
Он называется модуль MA Cycle, и мы посмотрим на его код выполнения:
(function(){var r = exchange.GetRecords(); return (!r || r.length < %1) ? false : TA.MA(r, %1); })()
Код является анонимным вызовом функции, в которой первым выполняется операция по получению данных K-строка, K-строка данных.r
◄ затем, если r, полученный дляnull
Илиr
Длина не меньше, чем входный параметр модуля%1
Вернутьсяfalse
Или вернуться?TA.MA(r, %1)
Результаты вычисления индикаторов.
Если вы хотите, вы можете использовать его позже.
Визуализация стратегии редактора:
Работает:
Вы можете увидеть, что выше приведены данные по расчету показателя MA.
Выше приведены только параметры, которые можно расширить с помощью функций шаблона для дизайна визуализированных модулей.