資源の読み込みに... 荷物...

JavaScript 戦略バックテストは,Chrome ブラウザの DevTools でデバッグされています.

作者: リン・ハーン発明者 量化 - 微かな夢, 作成日:2022-06-24 14:10:02, 更新日:2023-09-25 19:50:23

img

JavaScript 戦略バックテストは,Chrome ブラウザの DevTools でデバッグされています.

バックテストシステムにおけるデバッグ戦略では,通常はLog()戦略のデバッグは,プログラムテストの初期段階では,非常に非効率で,経験が少ないプログラムテスト者にとって困難です.JavaScript言語,Chromeバックテスト中にブレイクポイントデバッグ,シングルステップデバッグ,変数値モニタリング,表現モニタリングなどを実装することができます. では,この方法をどのように使用するか学びましょう.Javascriptこのデバッグメソッドは,FMZプラットフォームで言語戦略のバックテストをサポートするのみJavaScript言語戦略を FMZ プラットフォームで

についてdebuggerFMZプラットフォームのコマンド

挿入するdebuggerFMZのJavaScript言語の戦略コードへのコマンドは,バックテスト中にプログラムの実行を中断することを可能にします.

次のテスト戦略コードを使用します.

/*backtest
start: 2022-03-21 09:00:00
end: 2022-06-21 15:00:00
period: 30m
basePeriod: 15m
exchanges: [{"eid":"Binance","currency":"BTC_USDT"}]
*/

function main() {
    var n = 1 
    while (true) {
        var t = exchange.GetTicker()
        debugger
        var r = exchange.GetRecords()
        if (n == 1) {
            // When placing a purchase order, if there is an error here, an error will be reported, and null will be returned, and GetTicker will return data t with Buy attribute only, and the attribute name is case-sensitive without buy attribute
            var id = exchange.Buy(t.buy, 0.1)    
            var orderBuy = exchange.GetOrder(id)
        }
        Sleep(500)
    }
}

バックテストからコードを設定する

/*backtest
start: 2022-03-21 09:00:00
end: 2022-06-21 15:00:00
period: 30m
basePeriod: 15m
exchanges: [{"eid":"Binance","currency":"BTC_USDT"}]
*/

設定はスクリーンショットに示されているように:

img

戦略コードを見てみましょう.debugger指揮するvar t = exchange.GetTicker()この位置でプログラム実行が停止します. 複数debuggers は戦略コードで使用できますが,推奨されません.特定の位置でブレイクポイントを使用するだけで,次のブレイクポイントはブラウザの DevTools デバッグ機能で設定できます.

我々は開く必要がありますDevToolsバックテストを実行する前に,その後,debugger戦略規範に規定されているもの は効力を生じます.debuggerバックテストの戦略プログラムが中断または停止することはできません. 停止点を開いた後,DevTools戦略をバックテストするために,戦略プログラムは最初の設定で中断されますdebugger位置,およびdebugger戦略コードの全域でも設定できます.

2つの方法がありますDevToolsChrome ブラウザのツール:

    1. ポップアップメニューを開きます.

    DevToolsのインターフェースを表示します.

    1. ショートカットキーを使用します.

    鍵をクリックするとDevTools押すことでCommand+Option+I (Mac)またはControl+Shift+I (Windows, Linux).

開封後DevTools図のように:

img

JavaScript 言語戦略のためのブラウザにおける DEBUG のインターフェース

ストラテジーをバックテストするために Start Backtestボタンをクリックすると,ストラテジーは停止し,対応する位置で待機します.debuggerコードに設定されている. バックテストは,次のとおり, 固定されているようです.

img

戦略によって中断された位置に表示されていることが見られます.debugger, プログラム全体が n の値が 1 で,t の値が 1 で,関数で返される市場データを実行するだけですGetTicker上記の図の赤いボックスに特定の変数の値が表示されるので,戦略が実行されているときに各変数の値を観察することは簡単です.

手動でデバッグするブレイクポイントを設定する

コード左側の行番号をクリックして 断点を追加できます

img

スクリプト実行を再開するには,スクリプト実行を再開します. プログラムが次のブレイクポイントに実行されます. ブレイクポイントがない場合,またはプログラムに例外を引き起こすエラーがある場合は,バックテストが終了します.

img

また,実装できるボタンはいくつかあります. 例えば,次の関数をスキップし,次の関数呼び出しに移動し,現在の関数呼び出しから退出し,単一のステップを実行し,すべてのブレイクポイントを無視し,などです.

img

コードDEBUGをテストする

img

実行を継続するために 復旧スクリプト実行ボタンをクリックすると 戦略プログラムに例外が発生し バックテストは例外エラーメッセージが印刷されたまま終了します

main:17:31 - TypeError: Cannot convert "undefined" to double

構造貢献名には小字が重要でないことは,初心者がよく犯す間違いです.

var id = exchange.Buy(t.buy, 0.1)  //  When placing a purchase order, if there is an error here, an error will be reported, and null will be returned, and GetTicker will return data t with Buy attribute only, and the attribute name is case-sensitive without buy attribute

価格が交換に渡される.buy関数は定義されていない変数で,プログラム例外を引き起こし,バックテストを終了します.

プログラムがブレイクポイントの位置で停止すると,このコード行は実行されません. 次の関数呼び出しへのステップボタンをクリックします.

img

交換所へ行き 買い物機能の電話をします

img

価格が定義されていない変数です

上記のアプローチを使用することで,プログラムのバグを段階的に調べることは簡単です.多くの初心者はしばしば間違いを犯します.例えば,配列のインデックスが境界を超えてアクセスされ,定義されていない変数が参照され,表現が正しく書かれていないなど,これらはすべてプログラムをDEBUGするのが簡単です.


関連性

もっと