В этом примере показано, как использовать автономную диаграмму Stateflow®, чтобы смоделировать финансовую торговую стратегию, известную как Полосы Боллинджера. Автономные диаграммы реализуют классическую семантику графика с MATLAB® как язык действия. Можно программировать график при помощи полной функциональности MATLAB, включая те функции, которые ограничиваются для генерации кода в Simulink®. Для получения дополнительной информации смотрите, Создают диаграммы Stateflow для Выполнения как объекты MATLAB.
Торговая стратегия Полос Боллинджера состоит в том, чтобы обеспечить скользящее среднее значение 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:
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);