Main Content

このページの内容は最新ではありません。最新版の英語を参照するには、ここをクリックします。

Stateflow を使用した金融戦略の実装

この例では、スタンドアロンの Stateflow® チャートを使用して、"ボリンジャー バンド" として知られる金融取引戦略をモデル化する方法を説明します。スタンドアロンのチャートは、MATLAB® をアクション言語として Classic チャートのセマンティクスを実装します。Simulink® でのコード生成が制限されている関数を含めて、MATLAB のすべての機能を使用してチャートをプログラミングできます。詳細については、MATLAB オブジェクトとして実行する Stateflow チャートの作成を参照してください。

ボリンジャー バンドの計算

ボリンジャー バンド取引戦略では、ある商品の N 個の株価の移動平均を保持し、株式価値に応じて取引指示を出します。

  • 株式の価値が移動平均の下側の K 標準偏差を下回ったときは「買い」

  • 株式の価値が移動平均の上側の K 標準偏差を上回ったときは「売り」

  • 株式の価値が移動平均の K 標準偏差以内のときは「保有」

この戦略の一般的な実装では、N = 20 および K = 2 の値を使用します。

ファイル sf_stock_watch.sfx は、この金融戦略を実装するスタンドアロンの Stateflow チャートを定義します。チャートは、パラレル構造の 2 つの外側のステートで構成されます。

  • StockTicker サブチャートは株式の現在の価格を記録します。このサブチャートでは、株価計算の詳細は表示されません。金融データ プロバイダーのリアルタイムの市場データにアクセスするために考えられる 1 つの実装方法では Datafeed Toolbox™ を使用します。詳細については、Datafeed Toolboxを参照してください。

  • FinancialAdvisor ステートは、最後の N 個の株式価格を使用して上下のバンドを計算します。ステートは、現在の価格をこれらのバンドと比較して、「買い」、「売り」、「保有」のいずれかの指示を生成します。アクション on every(1,sec) は、1 秒おきにチャートを実行する 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);

関連するトピック