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

初心者のための暗号通貨量的な取引 - 暗号通貨量的な取引にあなたを近づける (3)

作者: リン・ハーンFMZ~リディア作成日:2022-07-29 09:37:22,更新日:2023-09-21 21:03:55 更新日:2021-09-21 更新日:2021-09-21 21:03:55 更新日:2021-09-21 21:03:55 更新日:2021-09-21 21:03:55 更新日:2021-09-21 21:03:55 更新日:2020-09-21 21:03:55 更新日:2020-09-21 21:03:55 更新日:2020-09-21 21:03:55 更新日:2020-09-21 21:03:55 更新日:2020-09-21 21:03:55 更新日:2020-09-21 21:03:55 更新日:2020-09-21 21:03:55 更新日:2020-09-21

img

初心者のための暗号通貨量的な取引 - 暗号通貨量的な取引にあなたを近づける (3)

エラー メッセージ

前回の記事では,いわゆるプログラムおよび定量取引は,一連の計算,判断,トリガーを通じて取引所から得られたデータに基づいたスクリプトプログラムであり,いくつかの操作を行い,取引所口座を操作するために取引を行うことを学びました.データを取得し,取引所アカウントを操作するこれらの行動はすべて取引所APIインターフェイスを通じて実行されます.簡単に言えば,スクリプトプログラムは取引所と相互作用します.それは相互作用であるため,正常な相互作用と異常な相互作用が必要です.異常な相互作用が発生すると,インターフェースは例外メッセージを返します.

もちろん,市場にあるプログラムおよび定量的な取引システム,または自らが開発したプログラムには,あらゆる種類のエラープロンプトとエラーメッセージがあります.これらのエラーメッセージは,交換APIインターフェースが報告するエラーメッセージに限定されません.また,プログラム実行時の例外エラー,構成エラー,プログラム文法エラーなどがあります.

FMZの量的な取引プラットフォームのエラーメッセージも,概していくつかのカテゴリーに分けられます.

  • 戦略文法エラー この種のエラーは,初心者がプログラミングに精通していないため,最も一般的であり,学習およびテスト段階中にコード書き中に文法的なエラーが発生します.例えば:

    img

    コードには括弧のような文字が欠落している.このようなエラーは通常,戦略編集ページで見られるので,戦略を実行することはできません (下図のように,実行時に直接エラーが報告されます).

    img戦略を書いた後 プラットフォームの戦略編集ページに目を通して 赤色XXが表示されているか確認してください そうであれば 明らかなエラーがあるはずです

  • 戦略プログラム BUG に起因する実行時間プログラム例外 プログラムにはバグがあります.プログラムが実行されているとき,例外を起動すると,プログラムが異常な停止を起こし,そのようなエラーメッセージが表示されます.

    img

    img

    このようなエラーにより,プログラムは異常になり,実行が停止します.

  • 不適切な構成と設定によるエラー

    FMZプラットフォームでは,取引対は,X_Y, X は取引通貨の名前,Y は通貨の名前 (先行記事で説明したように,先行通貨ベースの取引合約の取引ペアの通貨は通常,USDで表されます)BTC_USDTランダムに書くと,BTC-USDT.

    img

    FMZプラットフォームのバックテストシステムにエラーが報告されています

    img

    また,初心者がよく犯す間違いは

    img

    この種のエラーは,FMZプラットフォームのアカウントのパスワードの変更により発生し,API KEY設定された交換オブジェクト (ユーザの API KEY は,ブラウザで暗号化された後に FMZ プラットフォームで設定されます) で,戦略が起動できず,エラーが報告されます.

  • インターフェース呼び出しでエラーが報告されています.

    戦略を実行するときにインターフェースコールエラーがしばしば発生します. 前回の記事では,FMZプラットフォームのインターフェースが以下に分かれていることを学びました.ネットワークリクエストを生成するインターフェースそしてネットワークリクエストを生成しないインターフェース. インターフェースエラーは,通常インターフェースコール例外が発生し,誤ったデータが返されるため,戦略がエラー・トレランスを作らないため,戦略プログラムが停止する.

    ネットワークリクエストを生成するいくつかのインターフェースエラーメッセージは以下の通りです.

    • ネットワークタイムアウト

      初心者が頻繁に遭遇するエラーメッセージの1つは,国内ネットワーク機器 (独自のコンピュータまたは国内サーバー) の使用です.ほとんどの交換がブロックされているため,国内ネットワークのほとんどの交換はアクセスできないため,アクセスインターフェースはタイムアウトを報告します (以前の記事で言及しました).

    • HTTP 429 エラー

      クラシックなエラーメッセージの1つは,交換インターフェースが頻繁に呼び出し,交換の周波数制限を超えていることです (前記記事で言及しました). 申請したいと 言うかもしれませんAPI KEYインターフェースアクセス制限の頻度は,通常 IP アドレスに基づいていることを知っておく必要があります.簡単に言うと,IP アドレスに送信されたすべてのリクエストがこの IP アドレスにカウントされる限り,リクエストが制限を超えると交換サーバーはアクセスを拒否します.

    • 交換インターフェイスの業務に関するエラー報告

      上記のタイムアウトと 429 はネットワークエラーです.交換インターフェイスのビジネスに問題がある場合,エラーも報告されます.例えば,スポット市場価格を取得したいが,存在しない取引ペアを設定した場合は. FMZ プラットフォームのデバッグツールでテストしました.デバッグツールは非常に便利なテストツールで,機能呼び出しとデータ取得の実際のボットテストに非常に適しています.

      img

      デバッグツールの実行結果,デバッグツールの実行と実際のボットの実行の間に違いはありません.

      Huobi	error	GetTicker: Invalid ticker: {"Info":{"err-code":"invalid-parameter","err-msg":"invalid symbol","status":"error","ts":1620872079355},"High":0,"Low":0,"Sell":0,"Buy":0,"Last":0,"Volume":0,"OpenInterest":0,"Time":0}
      

      このエラーメッセージは,取引ペアが無効であることを意味します."err-msg":"invalid symbol") について 例えば,いくつかの取引所が小数値を持つ小数値をサポートしないときのレバレッジ設定など,ビジネス関連のエラーが多くあります. この時点で,レバレッジ値が小数値を持つ場合,インターフェースコールでもエラーが発生します.

    ネットワークリクエストを生成しないインターフェース呼び出しをリストする

    • セット・フューチャー契約コード いくつかのインターフェースは,システム内のいくつかのグローバル変数を設定し,ネットワークリクエストを生成しません.例えば:

      img

      ただし,パラメータが誤って渡されたり,書き込みされた場合,エラーが報告されます.

      img

    しかし,エラーの種類に関係なく,表示されるエラーメッセージは,問題を発見するための重要な情報であり,問題は通常エラーメッセージから見ることができます. 翻訳ツールを使用してエラーメッセージを翻訳し,重要な情報を抽出することができます. 例えば,"err-msg":"invalid symbol"上記の例では,その翻訳は: err msg: 無効の記号. It is probably known that the trading pair is set incorrectly, because English symbols are usually used to represent the trading code and trading pair. 取引対が正しく設定されていないのは,おそらく知られている. For common problems, there is a post that will continue to be collected for query: 一般的な問題については,以下のように説明します.https://www.fmz.com/bbs-topic/9158

バックテストシステム

バックテストシステムは,定量的なツールの焦点でもあります. バックテストシステムは戦略プロトタイプを便利にテストし,初期テスト戦略における潜在的なバグや論理的な問題をテストすることができます. バックテストシステムは合理的に見なければなりません. バックテストシステムは,ある程度戦略のいくつかの問題を反映することができます.

以下は,FMZがサポートする異なる戦略言語レベルからFMZプラットフォーム上のバックテストシステムの簡潔な説明です. (バックテストシステムのいくつかの紹介は,以前の記事で言及されました)

  • JavaScript

    ブラウザのバックテストはネイティブのハードウェアリソースを使用します

  • パイソン

    ドッカー上でバックテストを行う際には,どのドッカーに割り当てるか (自分で展開したドッカーか,FMZプラットフォーム上のパブリックドッカーか) を選択できます. FMZプラットフォーム上のパブリック保管者の大きな負荷を考えると,バックテストのためにローカルドーカーを使用することが推奨されます (これはまた高速になります.パブリックドーカーのバックテスト中に,タスクが負荷を超えると,一部のバックテストタスクがキャンセルされ,バックテスト中断になります).

  • C++

    スクリプト言語とは異なり,C++戦略はコンパイルして実行する必要があります.C++言語戦略は最初にFMZプラットフォーム (サーバー) でコンパイルされます (コードに問題がある場合,コンパイルが通過しない可能性があり,エラーメッセージが直接ポップアップします).コンパイルが通過した後,FMZプラットフォーム (サーバー) でバックテストされます.

  • MyLanguage は

    基礎実装はJavaScriptで,バックテストもブラウザで行われます.

  • 視覚化

    基礎実装はJavaScriptで,バックテストもブラウザで行われます.

FMZ Quant Trading Platformのバックテストシステムは,バックテストモードが2つに分かれています (これは戦略言語に関係なく,これはバックテスト設定であり,すべての言語の戦略バックテストは同じです).

img

    1. シミュレーションレベルバックテスト シンプルな文言では,シミュレーションレベルのバックテストは,各タイムノードの価格データにK線データに基づいてシミュレーションおよび生成されます.
    A bar in the K-line opens high and closes low, which constitutes a price framework, within which the prices are all in this price frame, so as long as the generated price opens high and closes low in this K-line frame within the range, the simulated price is reasonable.
    

    これはこんなシミュレーションですhttps://www.fmz.comimgもちろん,実際のバックテストシステムがこのシミュレーションを実装すると,状況が図よりも少し複雑になります. この原則を知っていながら,シミュレーションレベルのバックテストの欠点は注意することが重要です.シミュレーションレベルのバックテストは非常に速く (シミュレーションによって生成される価格が実際の秒ごとに1つずつリリースされる価格ではないため) ありません.しかし,戦略がシミュレーションレベルに適合した場合,シミュレーションされたの動きの傾向戦略は非常にうまく機能します (しかし,実際には,価格はこのK線バーの枠内にあるにもかかわらず,この傾向ではないかもしれません). このK線の周期を"K線"と呼びます このK線の周期を"K線"と呼びます下のK線期戦略設定ページに示されているように設定されます:

    imgここで"分を設定すると,1分間のK線データがシミュレーションされたティックの生成のデータ源として使用されることを意味します.

    また,高周波戦略では,明らかにシミュレーションレベルのバックテストを使用することは適切ではありません.しかし,トレンド戦略では,シミュレーションレベルのバックテストの使用は,ある程度戦略のパフォーマンスを反映することができます.

    1. 本物のボットレベルのバックテスト シミュレーションレベルのバックテストについて話した後,実際のボットレベルのバックテストについてお話しましょう.簡単に言えば,実際のボットレベルのバックテストは,バックテスト中に毎秒価格データの実際のリリースです.これは戦略が市場の毎秒価格を追跡することを可能にします.このバックテストモードでは,取引頻度が高い戦略をバックテストし,一定の基準値を得ることができます. 欠点は,実際のボットレベルでのバックテストデータの量は,大きな時間範囲でバックテストするには大きすぎることです (時間は通常1日未満です).分割データ(トランザクション・ティック・バイ・ティックデータと市場深度データには,実際のボット・バックテストの秒ごとにスナップショットも含まれていますので,実際のボット・バックテストデータの量は巨大です)

    img

FMZ量子取引プラットフォームのバックテストシステムのデータソースはどこにあるのか?バックテストシステムはデフォルトでFMZプラットフォームのデータセンターのデータを使用します.FMZプラットフォームのデータセンターは,各取引所の各通貨のセット市場データを自動的に収集し,プラットフォーム上のバックテストシステムに提供します.

    1. FMZデータセンターからデータをデフォルトで使用する 前 の 記事 に 挙げた よう に:https://www.fmz.com/bbs-topic/9536プラットフォームが提供するバックテストデータは,限られた数の取引ペアのみをサポートします (全市場およびすべての通貨のバックテストデータは天文学的な数字であり,それらをすべて収集することは非現実的です.当社のプラットフォームは主流取引所および主流通貨の市場データを収集しました).
    1. カスタムデータソースデータを使用する バックテストページのオプションを使用してカスタムデータソースを設定できます.簡単に言えば,交換からデータがある場合は,FMZプラットフォームのフォーマット要件に従ってバックテストのためにFMZプラットフォームのバックテストシステムに提供できます.

    img

    FMZ API ドキュメンテーションには,カスタムデータソースに関するいくつかの注釈もあります:https://www.fmz.com/api#custom-data-source

学習,テスト,思考

プログラム化や定量化取引は学習, テストそして考える- わかった 問題について考えるのは 無駄に考えられない.それは非効率です.情報を見つけるじゃあやってみろ, 考えて分析する, 問題が解決しない場合は,上記の操作を繰り返してください.

しかし,初心者が問題に直面すると,

プログラミングや量化や戦略を書くのは 難しいのです 久しぶりに観たけど まだ驚いている! 始める前に諦めたい! ... ほら

FMZプラットフォームの開始は,実際には非常に簡単です. まず,あなたは情報検索に善い必要があります. FMZ量子取引プラットフォームの戦略スクエア,コミュニティ,図書館に多くの情報があります.

img

2つ目は,バックテストシステムとデバッグツールを使用して簡単にテストできる実践的な能力です.これは完全な戦略をテストすることを意味しません.実際,完全に基本的な場合,FMZ Quant バックテストシステムでJavaScript プログラムの基礎を学ぶこともできます.

JSをよく学ぶサイトです.https://www.runoob.com/js/js-loop-for.htmlJSに限らず,あらゆる種類の IT 知識がここで問い合わせられ,学習できます. JSのレギュラーエクスプレッションを使う方法がわからないので どうしたらいいですか? もちろん,最初に情報を検索し,それを行うためにそれを試してみましょう ~

この例を見てきましたimgFMZプラットフォームのバックテストシステムを使って テストして学びたいのです

バックテストシステムでランダム交換を設定しますimg

次のコードをテストします

function IsEmail(str) {
    var reg=/^\w+@[a-zA-Z0-9]{2,10}(?:\.[a-z]{2,4}){1,3}$/;
    return reg.test(str);
}

function main() {
    var strEmailAddress1 = "13512345678"
    Log(strEmailAddress1, " Is it an email address? ", " Answer: ", IsEmail(strEmailAddress1))
    
    var strEmailAddress2 = "123456789@qq.com"
    Log(strEmailAddress2, " Is it an email address? ", " Answer: ", IsEmail(strEmailAddress2))
}

img

見て~ 学習ツールだ! JavaScript言語のループロジックを書く方法を学び それを試してみましょう

配列変数の要素を配列に表示する順序でループする:

function main() {
    var arr = [{coinName: "BTC", price: 10000}, {coinName: "LTC", price: 100}, {coinName: "ETH", price: 2000}, {coinName: "ETC", price: 500}]
    for (var i = 0 ; i < arr.length ; i++) {
        Log(arr[i])
    }
}

img

一瞬で学ぶ動機を感じますか? FMZでは JavaScript チュートリアルを見ながら Backtesting システムで JavaScript の基礎を学ぶことができます. JavaScript の文法がほとんど習得され,次の段階に入ると,データテストを取得するために交換インターフェースを使用する必要があります.デバッグツールリアルなインターフェーステストを行うため

テストの検証,比較分析などです 学習の開始がとても速くなります


関連性

もっと