С непрерывным совершенствованием количественных торговых стратегий пользователи имеют все более высокие требования к изменению позиций в режиме реального времени. Например: Веб онлайн-логи, мобильные приложения и WeChat и т. д. Все нуждаются в изменениях позиций счетов в режиме реального времени, что требует автоматического продвижения изменений, отправленных в браузеры и мобильные телефоны и т. д. По этой причине эта статья нацелена на FMZ Quant (FMZ.COM) Стратегия Mylanguage для достижения в режиме реального времени продвижения позиций на мобильные приложения и WeChat.
Чтобы увидеть полный исходный код статьи, пожалуйста, нажмите на ссылку:https://www.fmz.com/strategy/305785, и я предлагаю вам написать код на практике, потому что только обучение от чтения кода недостаточно.
Чтобы продемонстрировать, эта статья будет ссылаться на предыдущую стратегию торговли Williams %R. Адрес ссылки на стратегию:https://www.fmz.com/strategy/283024. Логика стратегии состоит из значения Уильямса и скользящей средней. Для полной стратегии и конфигурации бэкстеста вы можете нажать на эту ссылку, чтобы получить ее. Код этой стратегии показан следующим образом:
HC := HHV(HIGH, 14) - CLOSE;
HL := HHV(HIGH, 14) - LLV(LOW, 14);
WR := -100 * HC / HL;
MA20 : EMA2(C, 14);
C1 := WR < -60 && C > MA20;
C2 := WR > -15 && C < MA20;
C1, BPK;
C2, SPK;
The Mylanguage на FMZ Quant (FMZ.COMMylanguage имеет простой синтаксис, который может работать с логикой некоторых простых стратегий; при работе с некоторыми сложными стратегиями язык будет показывать некоторые проблемы. Поэтому FMZ Quant продвинул функцию улучшения языка на основе Mylanguage.
%%
// here we can call any API of FMZ Quant
scope.TEST = function(obj) {
return obj.val * 100;
}
%%
close price:C;
Zoom 100 times of close price:TEST(C);
Zoom 100 times of last close price:TEST(REF(C, 1)); // move the mouse to the backtested K-line, and the variable value will prompt
Как показано в приведенном выше коде, функция улучшения языка позволяет смешивать программирование Mylanguage и JavaScript.https://www.fmz.com/doc/2569#语�%A8%80%E5%A2%9E%E5%BC%BA
В том числе:
1.объект охватаscope object; можно добавлять свойства в него, и присваивать анонимные функции к свойствам.
2.scope.get_locals ((
В стратегии Mylanguage функция BKVOL может получить сигнал покупки лота, то есть текущую длинную позицию. Функция SKVOL может получить сигнал продажи лота, то есть текущую короткую позицию. Затем мы можем вычислить текущий статус изменения позиции, вычитая SKVOL из BKVOL. Как показано ниже в коде:
HC := HHV(HIGH, 14) - CLOSE;
HL := HHV(HIGH, 14) - LLV(LOW, 14);
WR := -100 * HC / HL;
MA20 : EMA2(C, 14);
C1 := WR < -60 && C > MA20;
C2 := WR > -15 && C < MA20;
C1, BPK;
C2, SPK;
%%
// adding the following code in any Mylanguage strategy can realize the push of position changes to mobile phone App and WeChat
if (typeof(scope._tmp) !== 'number') {
scope._tmp = 0;
}
var pos = scope.get_locals('BKVOL') - scope.get_locals('SKVOL');
if (pos != scope._tmp) {
scope._tmp = pos;
Log('Push position changes:', scope.symbol, pos, '@');
}
%%
В приведенном выше коде мы объединяем торговую стратегию Уильяма W%R
Далее мы запускаем бота, чтобы проверить эту функцию; создаем бота, выбираем OKEX spot, и устанавливаем валютную пару на LTC_USDT (фьючерсы на сырьевые товары и криптовалюты также могут использовать эту функцию, и операция такая же).
Сигнал задействован, перейти к веб-логам Сигнал задействован, нажмите на мобильное приложение Сигнал задействован, перейти на WeChat.
Выше мы используем простую торговую стратегию Mylanguage William W%R и модуль push-сообщений, разработанный модулем улучшения языка в Mylanguage, чтобы реализовать стратегию продвижения изменений позиции в мобильные приложения и WeChat в режиме реального времени.