Автономный график Stateflow® является классом MATLAB®, который задает поведение конечного автомата. Автономные графики реализуют классическую семантику графика с MATLAB как язык действия. Можно программировать график при помощи полной функциональности MATLAB, включая те функции, которые ограничиваются для генерации кода в Simulink®. Для получения дополнительной информации смотрите, Создают диаграммы Stateflow для Выполнения как Объекты MATLAB.
Этот пример показывает, как использовать автономную диаграмму Stateflow, чтобы смоделировать финансовую торговую стратегию, известную как Полосы Боллинджера. Стратегия состоит в том, чтобы поддержать скользящее среднее значение курсов акций N
для некоторого товара и дающий торговые инструкции в зависимости от значения запаса:
"Купите", когда значение запаса пропустит стандартные отклонения K
ниже скользящего среднего значения.
"Продайте", когда значение запаса повысится стандартные отклонения K
выше скользящего среднего значения.
"Содержите", когда значение запаса будет в стандартных отклонениях K
скользящего среднего значения.
Типичные реализации для этой стратегии используют значения N
= 20 и K
= 2.
sf_stock_watch.sfx
файла задает автономную диаграмму Stateflow, которая реализует эту финансовую стратегию. График состоит из двух внешних состояний в параллельном разложении.
Подграфик StockTicker
записывает текущую цену запаса. Подграфик скрывает детали для вычисления курсов акций. Чтобы получить доступ к данным о рынке в реальном времени из провайдеров финансовых данных, одна возможная реализация включает использование Datafeed Toolbox™. Для получения дополнительной информации смотрите Datafeed Toolbox.
Состояние FinancialAdvisor
использует последние курсы акций N
, чтобы вычислить высокие и низкие полосы. В зависимости от текущей цены относительно этих полос состояние генерирует, "покупают", "продают" или "содержат" инструкции. Действие on every(1,sec)
создает таймер MATLAB®, чтобы выполнять график каждую секунду. Смотрите Выполнение Диаграммы управления при помощи Временной Логики.
Параллельное разложение является шаблоном проектирования, который позволяет вашему алгоритму предварительно обработать входные данные. Для получения дополнительной информации смотрите Разложение состояния.
Чтобы выполнить автономный график, создайте объект w
диаграммы Stateflow с параметром конфигурации набор '-warningOnUninitializedData'
к false
:
w = sf_stock_watch('-warningOnUninitializedData',false);
Loading data... Ready in 5 4 3 2 1 0: HOLD at 14.1942 SELL at 14.2802 SELL at 14.247 HOLD at 14.2025 BUY at 14.1444
w
из рабочего пространства MATLAB:delete(w);