バックテストシステムにおけるデバッグ戦略では,通常はLog()
戦略のデバッグは,プログラムテストの初期段階では,非常に非効率で,経験が少ないプログラムテスト者にとって困難です.JavaScript
言語,Chrome
バックテスト中にブレイクポイントデバッグ,シングルステップデバッグ,変数値モニタリング,表現モニタリングなどを実装することができます. では,この方法をどのように使用するか学びましょう.Javascript
このデバッグメソッドは,FMZプラットフォームで言語戦略のバックテストをサポートするのみJavaScript
言語戦略を FMZ プラットフォームで
debugger
FMZプラットフォームのコマンド挿入するdebugger
FMZの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"}]
*/
設定はスクリーンショットに示されているように:
戦略コードを見てみましょう.debugger
指揮するvar t = exchange.GetTicker()
この位置でプログラム実行が停止します. 複数debugger
s は戦略コードで使用できますが,推奨されません.特定の位置でブレイクポイントを使用するだけで,次のブレイクポイントはブラウザの DevTools デバッグ機能で設定できます.
我々は開く必要がありますDevTools
バックテストを実行する前に,その後,debugger
戦略規範に規定されているもの は効力を生じます.debugger
バックテストの戦略プログラムが中断または停止することはできません. 停止点を開いた後,DevTools
戦略をバックテストするために,戦略プログラムは最初の設定で中断されますdebugger
位置,およびdebugger
戦略コードの全域でも設定できます.
2つの方法がありますDevTools
Chrome ブラウザのツール:
DevToolsのインターフェースを表示します.
鍵をクリックするとDevTools
押すことでCommand+Option+I (Mac)
またはControl+Shift+I (Windows, Linux)
.
開封後DevTools
図のように:
ストラテジーをバックテストするために debugger
コードに設定されている. バックテストは,次のとおり, 固定されているようです.
戦略によって中断された位置に表示されていることが見られます.debugger
, プログラム全体が n の値が 1 で,t の値が 1 で,関数で返される市場データを実行するだけですGetTicker
上記の図の赤いボックスに特定の変数の値が表示されるので,戦略が実行されているときに各変数の値を観察することは簡単です.
コード左側の行番号をクリックして 断点を追加できます
スクリプト実行を再開するには,スクリプト実行を再開します. プログラムが次のブレイクポイントに実行されます. ブレイクポイントがない場合,またはプログラムに例外を引き起こすエラーがある場合は,バックテストが終了します.
また,実装できるボタンはいくつかあります. 例えば,次の関数をスキップし,次の関数呼び出しに移動し,現在の関数呼び出しから退出し,単一のステップを実行し,すべてのブレイクポイントを無視し,などです.
実行を継続するために
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関数は定義されていない変数で,プログラム例外を引き起こし,バックテストを終了します.
プログラムがブレイクポイントの位置で停止すると,このコード行は実行されません. 次の関数呼び出しへのステップボタンをクリックします.
交換所へ行き 買い物機能の電話をします
価格が定義されていない変数です
上記のアプローチを使用することで,プログラムのバグを段階的に調べることは簡単です.多くの初心者はしばしば間違いを犯します.例えば,配列のインデックスが境界を超えてアクセスされ,定義されていない変数が参照され,表現が正しく書かれていないなど,これらはすべてプログラムをDEBUGするのが簡単です.