ドキュメント

アプリケーション

最終更新日:2020年8月4日(マーク・フリック)

What If シミュレーション

「What If」シミュレーションは、戦略の堅牢性を検証するための、強力でありながら迅速かつ簡単な新しいクロスチェック機能です(StrategyQuant Build 129に追加されました)。.

「What If(もしも)」シナリオでは、以下のようなシナリオをシミュレーションできます:

  • 戦略が特定の曜日や時間帯だけにトレードする場合はどうなりますか?
  • もし、最も収益性の高い取引のうち5%を省略したらどうなるでしょうか?
  • 等.

「What If」クロスチェックのアイデアの由来は、私たちの QuantAnalyzer この機能を長年備えている製品.

これをStrategyQuantにクロスチェックとして追加することで、想定シナリオの下で著しくパフォーマンスが低下する戦略を即座に除外することができます。.

 

「What If」シミュレーションはどのように機能しますか?

それはシンプルです。選択された各「もしも(What If)」シミュレーションは、標準的なバックテストによって生成された注文のリストに適用されます。.

例えば、あなたが使用する場合 日単位でのみ取引する シミュレーションし、取引を行うのは 火曜日、水曜日、木曜日, 、この3日間にオープンされなかったトレードをすべてフィルタリングして除外します。.

「What If」シミュレーションは戦略のバックテストを再度実行するのではなく、メインのバックテストからの既存のトレードリストを使用していることを認識することが重要です。このおかげで、このクロスチェックは非常に高速です。.

 

設定

What Ifはモンテカルロ法に似ています。戦略の結果に適用される1つ以上のシナリオを選択します。

StrategyQuantにおける「What If」シミュレーションの相互検証

 

「What If」シミュレーションのパフォーマンスに基づくフィルタリング

オプションで、指定された制限を下回るパフォーマンスの戦略を自動フィルタリングで除外することもできます。

What If シミュレーションフィルタリング

上の図では、What ifシミュレーションの純利益は、通常のバックテストの純利益の少なくとも80%以上でなければならないと定義しました。.

 

結果を表示中

What If シュミレーションを実行すると、資産曲線チャート、概要、またはトレード一覧に表示できる新しい結果が作成されます。.

バックテストの資産価値と「What If」シミュレーションの違いの例は以下の通りです:

もしもシミュレーション結果

 

 

 

この記事は参考になりましたか? この記事は役に立った この記事は役に立たなかった

6 コメント
最古の
最新 最も投票された
ジン
ジン
2020年8月15日 午後5:55

最適な日を自動的に選択できますか?
最悪の日を除外しますか?

tomas262
tomas262
返信する  ジン
2020年8月31日午後5時36分

どういう意味ですか?あるいは、これの要点は何ですか?日々のPnL(損益)がどうなるかは事前に決して分からないため、バックテストで「悪い日」を除外する意味はありません。

エマニュエル
2022年4月12日 午前9:52

ありがとうございます

ペペ
2024年11月13日 午後1時08分

すべて問題ありません。そして、戦略に「もしもの場合(What if)の条件」を適用するにはどうすればよいですか?

Tomas Matejka
管理者
返信する  ペペ
2024年11月15日 午後8:58

What-ifルールを組み込むためにはMQLコードを手動で編集するか、AlgoWizardでストラテジーを編集してWhat-ifルールに対応する条件を設定する必要があります。

ペペ
返信する  Tomas Matejka
2024年11月16日 午前9:27

おっしゃる通りです。AlgoWizardでは多くのパラメータを変更できることをいつも忘れてしまいます。ありがとうございます。.

そして次の質問です:

AlgoWizardでは、たとえば「木曜日の午前8時から午前9の間は戦略を実行しない」という条件を追加することは可能です。どのように設定すればよいか、その方法を説明します。お試しになった内容が表示されていませんが、解決策が見つからないとのことですので、以下のように設定します。.

LongEntrySignal=

RSI (14)[1] > 57.8
そして
現在の日付の曜日 4
そして
Current Time >= GetTime(8,0,0)
そして
CurrentTime <= GetTime(9,0,0)

(動かないのは分かっていますが、どうすれば動かすことができますか?)