推定読書時間: 7分

PrescienTraderには、AmiBrokerの強力な分析およびバックテスト機能と統合するマルチタイムフレーム機能が含まれています。また、分析関数の使用方法を示すAFLスクリプトも含まれています。分析機能には、PrescientAPI Professionalサブスクリプションが必要です。

次のビデオは、探索をセットアップして実行する方法を示しています。ビデオを見てから、この記事に戻ってチュートリアルを続けてください。

サムネイル

探検

含まれているPrescienTraderバックテストスクリプトを使用して探索を実行すると、AmiBrokerは、指定された商品のリストと指定された日付範囲をスキャンします。楽器と日付の組み合わせごとに行を生成します。上記の例では、2018年10月1日から12月31日までの期間の単一の商品(CHF / JPY)を分析しています。

スクリプトは、次の探索列を出力します。

  • ティッカーシンボル
  • 日付時刻
  • オープン、ハイ、ロー、クローズ、ボリューム、建玉
  • 保存しました –保存されたパラメーター設定を使用している行の場合、この列は黄色で強調表示されます。 PrescienTraderでパラメーターを保存すると、パラメーターは選択した銘柄と時間枠についてのみ保存されます。これにより、各機器および各時間枠でカスタムパラメータ設定を使用できます。探索を実行すると、PrescienTraderはカスタムパラメーター設定を自動的に適用します。 [保存済み]列の黄色のハイライトは、[パラメーター]ウィンドウで入力した設定ではなく、行が保存済みの設定を使用していることを示します。
  • PLスロープ –これは、Prescient Lineトレンドの勾配を示します。正の勾配は上昇トレンドを予測し、負の勾配は下降トレンドを予測します。
  • FLDスコア –すべての有効なサイクルのFLDの合計に、PLベーシス設定に応じて、各サイクルの強度または振幅を掛けたもの。正の値は、市場が循環的な上昇傾向にあることを示します。負の値は、市場が循環的な下降傾向にあることを示します。
  • トレンドバー –現在の予測トレンド内の相対的なバー番号。トレンドの最初のバーはバー0です。
  • トレンドバー –現在の予測トレンドのバーの総数。
  • トレンドパーセント –現在の予測トレンドの完了率。たとえば、トレンドバー= 5およびトレンドバー= 10の場合、トレンドPctは50%になります。 Trend Pctが100%に達することはないことに注意してください。これは、新しいトレンドが開始されたことを意味するためです。古いトレンドと新しいトレンドが重なった時点で、Trend Pctは0%になります。数値表示に加えて、この列には、傾向の進行に伴って緑色から赤色に変化する棒グラフも表示されます。
  • アクション –これは、現在の行のシグナル、買い/売り/売り/カバーです。含まれているスクリプトから生成される信号は、単純にトレンドスロープに基づいています。トレンドスロープが正の場合、買いシグナルを表示し、トレンドスロープが負の場合、ショートシグナルを表示します。これは非常に単純なものとして意図されています PrescienTraderインディケータを使用してトレーディングシステムの構築を開始する方法の例。 あなたはお金を失う可能性が高いので、これらのサンプルシグナルをライブ取引に使用しないでください! 私たちのインディケーターとおそらく他のインディケーターを使用して独自のトレーディングシステムを開発し、システムを広範囲にわたってバックテストするという考え方です。バックテストされた有効なシステムを取得したら、そのシステムを[アクション]列に接続して取引シグナルを表示できます。

バックテスト

バックテストまたは最適化を実行するには、まずPrescienTraderバックテストAFLスクリプトをロードします。お勧めします スクリプトのコピーを作成します、元のスクリプトを変更するのではなく。私たちの分析関数は、探索列の出力を生成し、その結果を含むAFL配列と行列も作成します。バックテストまたは最適化を実行するときは、生成されたAFL配列とマトリックスを使用します。これには以下が含まれます。

  • ptStaticPL
  • ptStaticPLSlope
  • ptStaticFLDScore
  • ptStaticTrendBar
  • ptStaticTrendBars
  • ptStaticTrendPct
  • ptStaticFrequencies(マトリックス)
  • ptStaticSlopes(マトリックス)
  • ptStaticFLDPrices(マトリックス)

複数の時間枠に対して分析を実行している場合、関数は各時間枠に対して個別の配列と行列のセットを作成します。名前は上記と同じですが、各名前にはHTPxサフィックスが付いていますが、xはより高い期間のインデックスを表します。たとえば、最初のより高い期間の配列と行列は、ptStaticPLHTP1、ptStaticPLSlopeHTP1などと命名されます…2番目のより高い期間の配列と行列は、ptStaticPLHTP2、ptStaticPLSlopeHTP2などと命名されます…

AmiBrokerバックテスターは非常に強力です。真のポートフォリオバックテスト、ウォークフォワードテスト、モンテカルロシミュレーション、複数のタイムフレームテスト、ピラミッド化とスケーリング、複数の通貨などをサポートしています。このすべての機能とパワーは、バックテストやPrescienTraderからの出力に利用できます。 AmiBrokerでのバックテストの詳細について説明することは、この記事の範囲を超えています。そのためには、AmiBrokerのドキュメントを読むことをお勧めします。

パラメータとパラメータ変数

分析を実行するとき、PrescienTraderは[パラメーター]ウィンドウで指定したパラメーター値を使用します。ただし、現在の市場とタイムフレームの機器設定を以前に保存した場合、 保存された設定は、[パラメータ]ウィンドウに表示される設定を上書きします。これにより、ポートフォリオ内の各商品の異なるパラメーター値を使用してポートフォリオ分析を実行できます。 [パラメータ]ウィンドウを表示すると、最後に入力した設定が表示されます。これは、保存されている設定とは限りません。クリック すべてリセット ボタンをクリックして、保存された機器設定を表示します。

さらに、デフォルト設定を保存できます。保存された機器設定とは異なり、保存されたデフォルト設定は ない 表示された設定を上書きします。これにより、AmiBrokerが最後に入力した設定を自動的に記憶するという利点を活用できるため、特定の設定のセットを複数回テストする場合、毎回それらを再入力する必要はありません。ただし、保存したデフォルト設定にいつでも戻ることができます。 すべてリセット ボタン。それを念頭に置いて 保存された機器設定は、保存されたデフォルト設定よりも優先されますなので、クリックすると すべてリセット デフォルトの設定は表示されません。つまり、現在表示されている機器とタイムフレームの機器設定が保存されています。

最後に、各パラメーターに対応するAFL変数を設定することにより、ほとんどのパラメーターをオーバーライドできます。使用可能な変数は次のとおりです。

  • ptPolarity(0 =正、1 =負)
  • ptPLBasis(0 =振幅、1 =強度)
  • ptLookbackRange
  • ptMinFrequency
  • ptMaxFrequency
  • ptHarmonicFilter
  • ptMinConfidence
  • ptBestXCycles

また、各変数は、マルチタイムフレーム分析の期間変動が大きくなります。より長い期間の変数を設定するには、変数名にHTP1、HTP2、HTP3などを追加します。例えば:

  • ptMinFrequencyHTP1
  • ptMaxFrequencyHTP2
  • ptLookbackRangeHTP3
  • ptHarmonicFilterHTP2
  • ptMinConfidenceHTP1
  • ptPLBasisHTP4

変数は常に、パラメーターウィンドウの設定と保存されている設定の両方をオーバーライドします。 AFLでパラメーター変数を設定すると、対応するパラメーターが[パラメーター]ウィンドウから消えます。 を呼び出す前に、すべてのパラメータ変数を設定する必要があります。 PrescientAnalysis または PrescientAnalysisPrepare 関数。

シングルスレッド分析とマルチスレッド分析

PrescienTraderは、シングルスレッド分析とマルチスレッド分析の両方をサポートしています。シングルスレッド関数は1行のコードしか必要としないため、簡単な探索や単純なバックテストを実行するのに適しています。欠点は、分析が単一のスレッドで実行されるため、一度に1つの行しか分析できないことです。ただし、分析が数百行だけで構成されている場合、時間差はごくわずかです。このシナリオでは、マルチスレッド分析の追加コードを作成する方が、実行することで節約される時間よりも長くかかります。

PrescienTraderバックテスタースクリプト–シングルスレッドセクション

サンプル分析スクリプトが呼び出されます PrescienTraderバックテスター。このスクリプトを表示すると、シングルスレッドセクションとマルチスレッドセクションが含まれていることがわかります。これらのセクションは、パラメーター設定を使用して切り替えることができます。単一スレッド分析セクションには、1行のコードが含まれています。

PTBacktest();

PTBacktest 「パラメーター」ウィンドウですべてのパラメーターを構成するため、関数はパラメーターを取りません。実行すると、APIリクエストを作成し、PrescientAPIにリクエストを送信し、レスポンスを解析して、結果を探索列に出力し、上記のAFL配列を生成します。

マルチタイムフレーム分析を実行するには、PrescientAnalysis関数を複数回呼び出すだけです。たとえば、基本期間と2つの上位期間を分析する場合は、次のコードを使用します。

PTBacktest(); PTBacktest(); PTBacktest();

関数の各インスタンスは、[パラメーター]ウィンドウに別の時間枠を作成するため、上記の例では、[パラメーター]ウィンドウに基本期間HTP1およびHTP2の設定が含まれます。マルチスレッドとマルチタイムフレームを混同しないでください。これらは2つのまったく異なる概念です。マルチスレッドとは、機器のポートフォリオの分析など、一度に複数の分析を実行することを指します。マルチタイムフレームは、複数のタイムフレームで各機器を分析することを指します。たとえば、S&P 500を毎日、毎週、毎月の時間枠で分析できます。その例では、3つのタイムフレームすべてを同時に分析するため、マルチスレッドモードで実行することにもメリットがあります。ただし、シングルスレッドモードでマルチタイムフレーム分析を実行できます。その場合、タイムフレームが順次分析されます。

PrescienTrader分析スクリプト–マルチスレッドセクション

マルチスレッドセクションは、シングルスレッドスクリプトよりも複雑で、数行のコードが必要です。

postVars = PTBacktestPrepare();
if(StrLen(postVars)> 0){
    ih = InternetPostRequest( "https://api.prescientrading.com"、postVars);
    もし(ih){
        応答= "";
        while((line = InternetReadString(ih))!= "")
            応答+ =行;
        PTBacktestExecute(response);
        InternetClose(ih);
    }
    そうしないと {
        msg = "APIからの応答なし-タイムアウトまたはインターネット接続の問題の可能性-60秒待機しています";
        _TRACE(メッセージ);
        PTLogToFile(msg);
        PTWait(60);
    }
}

追加コードの理由は、AmiBrokerはPrescienTraderなどのプラグインでマルチスレッドをサポートしていないためです。そのため、プラグインは単一のプラグイン関数で分析操作全体を実行する代わりに、最も時間がかかるAPIリクエスト以外のすべてを処理します。したがって、複数のスレッドで実行することで最大のメリットが得られます。

これを段階的に分解してみましょう…

  1. 最初のステップでは、PTBacktestPrepareを呼び出して、結果をpostVars変数に割り当てます。この関数は、[パラメーター]ウィンドウで定義されたパラメーターを使用して、APIリクエストに適した形式でデータを生成します。
  2. 2番目のステップでは、InternetPostRequest関数とInternetReadString関数を使用してAPIリクエストを作成します。リモートサーバーと対話しているため、これはプロセスの最も遅い部分であり、複数のスレッドで実行することで最大の利益を得ます。
  3. 最後のステップでは、APIから返されたデータに対してPTBacktestExecuteを実行します。この関数はデータを解析し、結果を探索列に出力して、上記のAFL配列を生成します。

ご覧のとおり、それほど複雑ではありませんが、シングルスレッドアプローチよりも多くのコードが必要です。大量のデータを分析する場合、マルチスレッドアプローチは、コンピューターのCPUコアの数に応じて、最大32倍高速になります。

シングルスレッドアプローチの場合と同様に、上記のコードブロックを複数回挿入するか、コードブロックをforループでラップすることにより、複数の時間フレームを分析できます。

最適化

最適化とは、市場または市場グループに対して最良の結果を達成するためにパラメーターを微調整するプロセスです。 AmiBrokerは、最大64個のパラメーターを同時に最適化することを可能にし、ポートフォリオの最適化をサポートし、3つのスマート最適化エンジン、 標準粒子群最適化, 部族 そして CMA-ES.

PrescienTraderは、各パラメーターのコードを記述することなく、すべてのパラメーターの最適化をサポートします。 最適化パラメータを設定するには、 シフト キーを押し、[パラメータ]ツールバーアイコンをクリックします。 これにより、最適化パラメータウィンドウが表示され、ここに 範囲 (開始および終了)各パラメーターおよび 一歩 数値パラメータ用。範囲は最適化の範囲を表します。たとえば、ルックバック範囲を最適化するには、次のようなものを選択できます。

ルックバック範囲:5
ルックバック範囲:10
ルックバック範囲ステップ:1

これらのパラメーターを入力すると、ルックバック範囲が5から10の間で増分1で最適化されるため、5、6、7、8、9、10の値がテストされます。

ロギング

分析を実行すると、PrescienTraderは情報をトレースウィンドウに継続的に出力します。各行には次の情報が含まれています。

  • 分析タイプ(バックテスト、最適化、探索など)
  • 分析中の機器のシンボル
  • 期間(毎日、毎週、毎月など)
  • データシリーズ(クローズ、平均など)
  • パラメータ値:
    • 極性
    • PLベース
    • 最小頻度
    • 最大周波数
    • ルックバック範囲
    • 高調波フィルター
    • 最小信頼
    • ベストXサイクル

各パラメーター値について、括弧内にそのソースを示します。ソースは次のいずれかです。

  • パラメータ–値は[パラメータ]ウィンドウから取得されました。
  • Opt –値は、[パラメーター]ウィンドウで指定された最適化設定に基づいて生成されました。
  • 保存済み–この商品と期間の保存済みの値。
  • AFL –値は、パラメーターに対応するAFL変数から取得されました。
  • 配列–値はAFL配列から取得されました。配列はバーごとに異なる値を使用できるため、値は表示されません。

AFL変数の優先順位が最も高く、その後に保存された値が続き、次にパラメーターウィンドウで指定された値が続きます。

[トレース]ウィンドウに加えて、[パラメーター]ウィンドウにファイルパスを入力して、ファイルへのロギングを有効にすることができます。

この記事は役に立ちましたか?
嫌い 0
ビュー: 1451
永遠に無料
毎日の取引シグナル
PrescientSignalsより
申し込む
購読すると、毎日メール受信ボックスに配信される無料の取引シグナルを受信できます
無料の信号は1週間遅れます。これにより、先週の予測と実際の結果を比較することで、PrescientSignalsサービスをリスクなしで評価できます。
永遠に無料
PrescientSignalsによる毎日の取引シグナル
申し込む
購読すると、毎日メール受信ボックスに配信される無料の取引シグナルを受信できます
無料の信号は1週間遅れます。これにより、先週の予測と実際の結果を比較することで、PrescientSignalsサービスをリスクなしで評価できます。