Реализуйте финансовую стратегию при помощи Stateflow

Автономный график 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);

Похожие темы