調整可能なバックテスト開始時間戦略

作者: リン・ハーンチャオチャン, 日付: 2023-09-26 20:53:15
タグ:

概要

この戦略の目的は,ユーザがバックテストの開始時間をカスタマイズし,より柔軟でカスタマイズ可能なバックテストを可能にすることです.

戦略の論理

この戦略は,Pine Scriptの時間とタイムスタンプ関数を利用して,カスタマイズ可能なバックテスト開始時間を実装します.

まず,ユーザは設定にカスタマイズされたバックテスト開始年,月,日付,時間,分を入力することができます.その後,これらの入力を使用してタイムスタンプを生成し,startTime変数に保存します.

戦略の条件チェックでは,新しい startTime 条件を追加します. 戦略は,現在の時間が startTime よりも大きくまたは等しい場合にのみ開始されます.

例えば:

longCondition = crossover(sma(close, 14), sma(close, 28))

if (longCondition and startTime)

  strategy.entry("My Long Entry Id", strategy.long) 

これは,カスタマイズ可能なバックテスト開始時間を実装することを可能にします.ユーザーはハードコードされた時間に制限される代わりに,バックテストの開始時間を柔軟に設定できます.

利点分析

このカスタマイズ可能なバックテスト開始時間の戦略には以下の利点があります.

  1. より柔軟性: Backtest 開始時間を固定された時間点に制限される代わりに,ユーザーは完全にカスタマイズできます.

  2. より現実的: スタート時間を戦略の実際の実行時間に設定することができ,バックテストをより現実的にします.

  3. イベント駆動バックテストに便利:特定のイベントのバックテストのために,イベントの発生時間に基づいて開始時間を設定できます.

  4. 条件の調整が簡単: バックテスト開始条件は,異なる段階の標的バックテストのために簡単に調整できます.

  5. 繰り返しかつ信頼性:バックテスト開始時間のパラメータ化により,バックテスト結果は繰り返しかつ信頼性があります.

リスク分析

バックテストの開始時刻をカスタマイズすることもリスクがあります.

  1. 結果は開始時間によって異なります. 開始時間が異なる場合,バックテスト結果は非常に異なることがあります.

  2. 開始時間は慎重に選択する必要があります.不合理な開始時間はバックテスト結果に歪みをもたらす可能性があります.

  3. カーブ・フィットメントのリスクが増加します. スタートタイムを過去データに調整することで簡単にオーバーフィットできます.

  4. 比較性の低下:この戦略の結果は,固定開始時間のバックテストと比較できない.

解決策:

  1. 開始時間の変更による結果への影響を評価するために,複数のバックテストを行います.

  2. 歪みを最小限に抑えるために 重要なイベント時刻を開始時刻として選択します

  3. 開始時間を注意深く調整して 過去のデータに過度に適合しないようにします

  4. 設定されたバックテストとの比較のための基準として,固定された開始時間のバックテストを保持する.

オプティマイゼーションの方向性

このカスタマイズ可能なバックテスト開始時間の戦略は,次の側面でも改善できます.

  1. バックテストの時間窓の完全な柔軟な構成のために,開始時間と終了時間の両方のカスタマイズをサポートします.

  2. 複数の時間モードをサポート:特定の日付,相対日付,イベント駆動等,よりスマートで便利な時間設定のために.

  3. より直感的な時間パラメータ設定のためのグラフィカル構成インターフェイスをサポートする.

  4. 異なる時間グラナリティの構成をサポートします:年,月,日,時間,分,秒,など

  5. 復元可能,追跡可能,比較可能な結果のためのバックテスト時間設定を記録する.

  6. 不適切な時間設定の検証を追加して,不合理な時間設定による低品質のバックテストを避ける.

  7. 複数の戦略で開始時間を簡単に同期するために開始時間を拘束します.

概要

この戦略は,バックテスト開始時間の設定をカスタマイズし柔軟にできるようにし,制限を軽減し,バックテストをより現実的にすることができます.しかし,複数のバックテスト,イベント駆動モデルなどを使用して歪みを減らすために,開始時間の結果の依存性は注意する必要があります.この戦略には,将来的によりスマートで便利なバックテスト時間の設定を達成するために改善のための多くの方向性があります.


/*backtest
start: 2022-09-19 00:00:00
end: 2023-09-25 00:00:00
period: 2d
basePeriod: 1d
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=3
strategy("C320up Strategy Tester Start Time", overlay = true)
// Copy and paste below into your strategy
// Strategy Tester Start Time
xYear = input(2018, title = "Start Year")
xMonth = input(01, title = "Start Month", minval = 01, maxval = 12)
xDay = input(01, title = "Start Day", minval = 01, maxval = 31)
xHour = input(00, title = "Start Hour", minval = 00, maxval = 23)
xMinute = input(00, title = "Start Minute", minval = 00, maxval = 59)
startTime = time >= timestamp(xYear, xMonth, xDay, xHour, xMinute)
// End copy and paste
// Add (and startTime) at the end of your condition/s to activate

// The strategy below is just an example
longCondition = crossover(sma(close, 14), sma(close, 28))
if (longCondition and startTime)
    strategy.entry("My Long Entry Id", strategy.long)
shortCondition = crossunder(sma(close, 14), sma(close, 28))
if (shortCondition and startTime)
    strategy.entry("My Short Entry Id", strategy.short)
// Happy trading!


もっと