このページの内容は最新ではありません。最新版の英語を参照するには、ここをクリックします。
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);