Расширение пользовательского шаблона с помощью визуального (блочного) редактирования стратегии

Автор:Нинабадасс., Создано: 2022-04-27 10:01:48, Обновлено: 2022-04-27 10:12:55

Расширение пользовательского шаблона с помощью визуального (блочного) редактирования стратегии

Как расширить пользовательскую библиотеку, необходимую для визуальных стратегий? Например, я хочу рассчитать индикатор MA, но система поставляется только с:

img

Эти индикаторы, как я могу добавить коды к этим индикаторам? Давайте возьмем в качестве примера добавление модуля расчета показателя MA, чтобы объяснить, как расширить модуль визуализации.

Образец спотовой торговли криптовалютами

Давайте поговорим о шаблоне Криптовалютная библиотека спотовой торговли; адрес:https://www.fmz.com/strategy/10989- Да, конечно. Хотя этот шаблон является шаблоном версии JavaScript платформы FMZ (для студентов, которые не понимают концепцию шаблона, вы можете перейти к документации API FMZ для получения дополнительной информации:https://www.fmz.com/api#template- Да, конечно. Комментарии в начале шаблона содержат код, который определяет модуль визуализации, и код шаблона JavaScript можно ссылаться в определенном коде.

Библиотека спотовой торговли криптовалютами; определение визуализации в начале:

/*blockly
    {
        "type": "ext_Trade",
        "message0": "%1 symbol amount %2|%1 Coins %2",
        "args0": [{
            "type": "field_dropdown",
            "options": [
                ["bid|Buy", "Buy"],
                ["ask|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": "cancel %1 orders|Cancel %1 Orders",
        "args0": [{
            "type": "field_dropdown",
            "name": "TYPE",
            "options": [
                ["all|All", " "],
                ["buy order|Buy", "ORDER_TYPE_BUY"],
                ["sell order|Sell", "ORDER_TYPE_SELL"]
            ]
        }],
        "previousStatement": null,
        "nextStatement": null,
        "template": "$.CancelPendingOrders(%1);",
        "colour": 85
    }, {
        "type": "ext_Cross",
        "message0": "calculate cross period %1 and %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": "obtain asset information|GetAccount",
        "template": "$.GetAccount()",
        "order": "ORDER_ATOMIC",
        "output": null
    }
*/

Соответствующие модулям на странице визуального (блочного) редактирования:img

Создать пользовательский модуль для вычисления MA

С готовым примером очень просто построить его самостоятельно, как и копировать механически.

Во-первых, создать новый шаблон на языке JavaScript.img

Изменить код шаблона.

/*blockly
    {
        "type": "ext_testA",
        "message0": "testA|testA",
        "template": "function(){return 99;}()",
        "order": "ORDER_ATOMIC",
        "output": "Number"
    },{
        "type": "ext_MA",
        "message0": "MA period %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
    }
*/
  • тип: для определения типа модуля по атрибуту и определения модуля по названию.
  • message0: для отображения текста на модуле
  • шаблон: код, выполненный модулем
  • выход: тип, экспортируемый модулем;
  • args0: параметр, импортированный модулем; в коде определения модуля %1 представляет первый импортированный параметр, а %2 - второй.

После редактирования нового шаблона, сохраните его. В стратегии, где мы должны использовать этот шаблон, проверьте шаблон.img

Вы можете видеть, что есть два дополнительных модуля:

  • img

    Модуль называется: testA. Давайте посмотрим на код исполнения:img

    function(){return 99;}()
    

    Это очень простая функция JavaScript, которая возвращает значение 99 при исполнении.

  • img

    Модуль называется: MA период. Давайте посмотрим на код исполнения:

    img

    (function(){var r = exchange.GetRecords(); return (!r || r.length < %1) ? false : TA.MA(r, %1); })()
    

    Код является анонимным вызовом функции. Анонимная функция сначала выполняет операцию по получению данных K-линии, а именно данных K-линииr. Затем, в зависимости от того, полученный rnullили продолжительностьrменьше параметра%1Импортировано на модуль, судья возвращатьсяfalseили возвращает результат показателя, рассчитанный какTA.MA(r, %1).

Он готов к следующему использованию.

Тест для вычисления показателя MA

Визуальное (блочное) редактирование стратегии:img

Операция:img

Из этого видно, что данные, рассчитанные с помощью показателя MA, были получены как ожидалось.

Вышеприведенный пример - это только пример дизайна модуля визуализации, поэтому вы можете использовать функцию шаблона для самостоятельного расширения.


Больше