В этом примере показано, как использовать автономный график Stateflow ® для моделирования стратегии финансовой торговли, известной как Bollinger Bands. Автономные диаграммы реализуют классическую семантику графика с MATLAB ® в качестве языка действий. Можно запрограммировать график, используя полную функциональность MATLAB, включая те функции, которые ограничены для генерации кода в Simulink ®. Для получения дополнительной информации смотрите Создание диаграмм Stateflow для выполнения в качестве объектов MATLAB.
Торговая стратегия Bollinger Bands заключается в поддержании скользящего среднего значения N
цены акций на некоторые товары и выпуск инструкций по торговле в зависимости от значения акций:
«Купить», когда значение запаса падает K
стандартные отклонения ниже скользящего среднего значения.
«Продать» при повышении стоимости акций K
стандартные отклонения выше скользящего среднего значения.
«Hold», когда значение запаса внутри K
стандартные отклонения скользящего среднего значения.
Типичные реализации для этой стратегии используют значения N
= 20 и K
= 2.
Файл sf_stock_watch.sfx
определяет автономную диаграмму Stateflow, которая реализует эту финансовую стратегию. График состоит из двух внешних состояний с параллельным разложением.
The StockTicker
субдиаграмма регистрирует текущую цену запаса. В субдиаграмму скрыты подробные данные для расчета цен на акции. Для доступа к рыночным данным в реальном времени от поставщиков финансовых данных одна из возможных реализаций включает использование Datafeed Toolbox™. Для получения дополнительной информации см. Datafeed Toolbox.
The FinancialAdvisor
состояние использует последнюю N
фондовые цены для вычисления высоких и низких полос. В зависимости от текущей цены относительно этих диапазонов, состояния генерирует инструкции «купить», «продать» или «держать». Область действия on every(1,sec)
создает таймер MATLAB ® для выполнения графика каждую секунду. Смотрите Управление выполнением диаграммы при помощи Временной Логики.
Параллельное разложение является шаблоном проектирования, которая позволяет вашему алгоритму предварительно обработать входные данные. Для получения дополнительной информации смотрите Разложение состояний.
Чтобы выполнить автономную диаграмму, создайте объект диаграммы Stateflow w
:
w = sf_stock_watch();
График генерирует поток цен на акции и выдает инструкции «купить», «продать» или «удержать».
Note: Chart execution continues until you delete the chart object. Loading data... Ready in 5 4 3 2 1 0: HOLD at 14.1942 SELL at 14.2802 SELL at 14.2471 HOLD at 14.2025 BUY at 14.1444
Чтобы остановить выполнение графика, удалите объект графика w:
delete(w);