アルゴトレーディング
アルゴトレーディングツールは、JavaScriptで作成した取引アルゴリズムを実行します。コードは市場データを1日ずつ受け取り、買い注文と売り注文を送信し、ポートフォリオツールと同じ結果を得ます。
フィールド:
- ティッカー - アルゴリズムが取引できる資産。ティッカーの種類のいずれも使用でき、最大10個まで指定できます。
- 残高 - 初期現金。ページ上部で選択した通貨建てです。
- 期間 - シミュレーションの開始日と終了日。
- レバレッジ - 有効にすると空売りが可能になり、アルゴリズムは保有していない資産を、下記の証拠金の範囲内で売却できます。空売りの売却代金は現金に加算されません。潜在的なリターンとリスクの両方が高まるため、慎重に使用してください。
- 初期証拠金 - 新規の空売りポジションを制限する割合(デフォルト50%):空売りの合計額は最大で (現金 + 買いポジション) / 初期証拠金 までです。例えば、50%の場合は現金と買いポジションの合計の2倍まで空売りできます。
- 維持証拠金 - 空売りの価値に対して、証拠金として確保しておく必要がある割合(デフォルト30%)。証拠金がこれを下回ると、シミュレーションはエラーで停止します。自動的なマージンコールはありません。
- コード - アルゴリズムのJavaScriptコード(下記参照)。
コード (AlgoWorkspace):
コードは非同期関数の本体として実行され、thisはAlgoWorkspaceにバインドされます。イベントリスナーを登録し、コードの最後でstart()を呼び出してシミュレーションを開始します。コードにはdataリスナーがちょうど1つ必要で、すべてのリスナーは処理の終了時にnext()を呼び出す必要があります。
利用可能なイベント:
this.on('start', async (next, timeseries) => { ... })- 最初の日付の前に1回実行されます。timeseriesには、日付をキーとするすべての価格データが含まれます(Record<string, AssetDataFlat[]>)。this.assetsとthis.portfolioはまだ設定されていません。this.on('data', async (next) => { ... })- データがある日付ごとに1回実行されます。注文はリスナーがnext()を呼び出した後に、その日付の価格で約定します。this.on('end', async (next, result) => { ... })- 最後の日付の後に、最終結果とともに実行されます。result.summary.alphaとbetaはPromiseです。this.on('error', async (next, errors) => { ... })- 現金や証拠金の不足などで、ある日付の注文がキャンセルされたときに実行されます。errorsはstring[]です。コード内の例外はシミュレーションを停止させ、警告タブに表示されます。
プロパティとメソッド:
this.date- 現在の日付。this.assets- 現在の日付の価格(AssetDataFlat[]: assetCode, date, value, currency)。その日付にデータがあるティッカーのみが含まれます。this.portfolio- 現在のポートフォリオのコピー(cash, assets, total, longValue, shortValue, totalProfit, realizedProfit, margin)。変更しても効果はないため、下記のメソッドを使用してください。this.index- 現在の日付の番号で、1からthis.lengthまで。this.length- データがある日付の数。this.inputs- シミュレーションの入力値。this.state- イベント間で独自のデータを保存するためのオブジェクト。this.buy(assetCode: string, quantity: number): void- 買い注文を送信します。数量はゼロ以外の有限の数値である必要があります。this.sell(assetCode: string, quantity: number): void- 売り注文を送信します。レバレッジが有効な場合、ポジションを超えて売却すると空売りポジションが開かれます。this.print(...msgs: any[]): void- 現在の日付付きのメッセージをメッセージタブに追加します。this.depositCash(amount: number): void- ポートフォリオに現金を追加します。this.loadScript(url: string): Promise<number>- 外部JavaScriptライブラリを読み込みます。読み込んだスクリプトは実行後に削除されます。this.download(obj: any, name?: string): Promise<void>- objをname.jsonという名前のJSONファイルとしてダウンロードします(デフォルトはinvest-tester.json)。
アルゴトレーディングページのデフォルトコードは完全な例です。ライブラリを読み込み、ランダムな注文を出し、毎月積立を行います。