新人,チェックアウト 暗号通貨量的な取引にあなたを連れて行く (3)

作者: リン・ハーンニナバダス, 作成日:2022-04-20 11:46:56, 更新日:2022-04-20 16:53:34

新人,チェックアウト 暗号通貨量的な取引にあなたを連れて行く (3)

エラー メッセージ

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

もちろん,市場におけるプログラムおよび定量取引システムまたは自己開発プログラムには様々なエラープロンプトとメッセージがあります.これらのエラーメッセージは,プラットフォームAPIが報告するエラーメッセージに限定されません.また,動作中のプログラム例外エラー,構成エラー,プログラム構文エラーなど,他のエラーもあります.

FMZ量子取引プラットフォームでは,エラーメッセージは,概していくつかのカテゴリーに分けることができます:

  • 戦略文法エラー この種のエラーは最も一般的なエラーで,通常は初心者がプログラミングに精通していない状況で発生し,学習中にコードを書くときに文法エラーが発生します.例えば:

    img

    コードは括弧のような文字なしで書かれました.この種のエラーでは,エラープロンプトは通常戦略編集ページに表示され,その状況下で,戦略は実行できない (戦略が実行されると,画像のようにエラーが報告されます).

    imgコードを書くのを終えた後 戦略編集ページを覗き込んで 赤十字が表示されているか確認する習慣を 作り出せます

  • 戦略プログラムBUGによる動作中のプログラム例外 プログラムが動作中にバグがある場合,例外のトリガーでプログラムが異常停止し,このようなエラーメッセージが表示されます.

    img

    img

    プログラムが実行するのを妨げます プログラムが実行するのを止めます

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

    FMZのプラットフォームでは,すべての取引ペアは,X_Y取引通貨の名称をXで,コート通貨の名称をYで表します (フューチャー暗号化保証契約における取引ペアのコート通貨は通常,USDで表され,前記記事で紹介されています).BTC_USDT書き込みが間違ったら,BTC-USDT.

    img

    FMZプラットフォームのバックテストシステムにおけるエラー報告:

    img

    ボットでエラー報告:

    img

    あるいは,初心者がよく遭遇する最も一般的なエラー:

    img

    この種の誤りは,API KEYFMZアカウントのパスワードを変更した後に設定された交換オブジェクトに (ユーザーの API キーはすべてブラウザ端で暗号化され,FMZ プラットフォームで設定されています). これは戦略が起動できず,エラーが報告される原因になります.

  • 呼び出しインターフェースによるエラー

    インターフェースコールエラーは,戦略を実行するときにしばしば遭遇する. 前回の記事では,FMZプラットフォームのインターフェースが以下に分かれていることを学びました.ネットワークリクエストを行うインターフェースそしてネットワーク要求を行わないインターフェース. インターフェースエラーは,戦略プログラムの停止を直接引き起こしません. 通常,インターフェースコール例外により,間違ったデータが返され,戦略はエラートレランスを行いません. その後,間違ったデータによるプログラム例外エラーがプログラムを停止させます (エラートレランスの概念は,以前の記事で既に紹介されています).

    ネットワークリクエストを行うインターフェースのエラーメッセージをいくつかリストします.

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

      img

      初心者がしばしば遭遇するエラーメッセージの1つは,国内ネットワークデバイス (PCまたは国内サーバー) の使用によって引き起こされます.ほとんどのプラットフォームがブロックされているため,多くのプラットフォームは基本的に国内ネットワーク (中国) によってアクセスできないため,アクセスインターフェースはタイムアウトを報告します (以前の記事で言及しました).

    • HTTP 429 エラー

      img

      これは典型的なエラーメッセージの1つです.その理由は,プラットフォームインターフェースが頻繁に呼び出し,プラットフォームの周波数制限を超えているからです. (前の記事で言及しました). 新しい学生の中には,複数のプラットフォームまたは複数のプラットフォームアカウントの API KEY を申請した場合,エラーが起こらないと言う人もいる.プラットフォームによるインターフェースへのアクセス頻度制限は通常,IPアドレスに基づいていることを知っておく必要があります.簡単に言えば,IPアドレスから送信されたすべての要求がアドレスにカウントされる限り,要求番号が制限を超えると,プラットフォームサーバーはIPへのアクセスを拒否します.

    • プラットフォーム インターフェース サービス の エラー

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

      img

      デバッグツールの実行結果. デバッグツールの実行とボットの実行には違いがない.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"取引ペアの設定が間違っていることが原因です. 記号は通常,英語で取引コードと取引ペアを表します. この記事では,FAQが集められ,常に更新される記事です.https://www.fmz.com/bbs-topic/1427.

バックテストシステム

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

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

  • JavaScript

    バックテストはブラウザで実行され,ローカルハードウェアリソースを使用します.

  • パイソン

    ドーカーのバックテストでは,どのドーカーを割り当てるか (自分で展開したドーカーのどちらか,またはFMZプラットフォームのパブリックドーカーのどちらか) を選択できます. FMZプラットフォーム上のパブリックドーカーの大きな負荷を考えると,ローカルドーカーのバックテストを使用することをお勧めします (それはさらに速くなります.パブリックドーカーのバックテストでは,過負荷の場合,バックテストの結果が中断され,一部のバックテストタスクがキャンセルされます).

  • C++

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

  • ミランゲージ

    底層はJavaScriptで実装され,バックテストもブラウザで実行されます.

  • 視覚化

    底層はJavaScriptで実装され,バックテストもブラウザで実行されます

FMZ Quant Tradingプラットフォームのバックテストシステムは,バックテストモードが2つあります (戦略がどの言語で書かれても,バックテストモードはバックテストシステムの設定であり,設定オプションはFMZでサポートされるすべての言語で同じです).

img

バックテストシステムの説明については,FMZプラットフォームの戦略執筆チュートリアルに関する部分を参照してください.

https://www.fmz.com/bbs-topic/9091

    1. シミュレーションレベル バックテスト 一般的には,シミュレーションレベルのバックテストは,K線データに基づいて,連続した時間ノードの価格データをシミュレーション方式で生成することです.
    There are the highest, the lowest, open and close prices in one bar, which forms a price structure. Within the time range represented by the K-line, the prices are all in the price structure. Therefore, as long as the generated price is within the K-line structure of the four prices, the simulated price is reasonable.  
    

    この図のシミュレーションと同じですimg

    バックテストシステムでシミュレーションを実現するには,写真よりも少し複雑です.ここで詳しく説明しません. 単にシミュレーションレベルのバックテストのメカニズムを理解する必要があります. シミュレーションレベルバックテストは非常に速く (シミュレーションによって生成される価格が連続的にリリースされる実際の秒ごとに価格ではないため).しかし,戦略がシミュレーションレベルバックテストと一致した場合,シミュレーションされたティックの変化傾向, 戦略は優秀なパフォーマンスを発揮します (しかし,実際には,価格はK線バーの構造内にあるにもかかわらず,トレンドに変化しないかもしれません). K線は,K線の周期と呼ばれる. この線は,K線の周期と呼ばれる.下のK線期戦略設定のページには次の図が表示されます.

    img

    1分を設定します つまり,k線データを 1分間の周期でデータ源として使って シミュレーションされたティックデータを生成します

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

    1. リアル市場レベルバックテスト シミュレーションレベルについて話す後,実際の市場レベルについて話しましょう. 一般的に言えば,実際の市場レベルバックテストは,テストで秒ごとに価格データを本当にリリースし,戦略が市場の毎秒の価格をバックトラックできるようにすることです.この種のバックテストモードは,いくつかの取引戦略を高い頻度でテストし,一定の基準値で結果を得ることができます. 実際の市場レベルでのバックテストデータの量は大きすぎるため,大きな時間範囲でテストすることはできません (通常,時間範囲は1日未満です).取引履歴は必要ない(取引の履歴データと市場深度データには,実際の市場レベルのバックテストの秒ごとにスナップショットも含まれています.したがって,実際の市場レベルのバックテストデータの量は巨大です.) 適切な場合は,図のようにバックテストの範囲を拡大します:

    img

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

    1. FMZダッシュボードのデータを使用する この こと は 前 の 記事 に 記さ れ て い ます.https://www.fmz.com/bbs-topic/9245#定量取引プラットフォームわかった プラットフォームが提供するバックテストデータは,限られた数の取引ペアのみをサポートします. (全市場およびすべての通貨のバックテストデータは天文学的数値であり,それらをすべて収集することは非現実的です.プラットフォームは主流プラットフォームおよび主流通貨の市場データを収集しました.)
    1. カスタムデータソースのデータを使用する バックテストページのオプションを選択してカスタムデータソースを設定できます.簡単に言えば,プラットフォームからデータを持っている場合は,FMZプラットフォームのフォーマット要件に従って,バックテストのためにFMZプラットフォームのバックテストシステムに提供できます.

    img

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

FMZプラットフォームのダイジェストにもいくつかのスキームがあります. 興味のある初心者は,それらのスキームを参照してそれらを勉強することができます.

勉強 し て 試し て 考える

プログラミングや定量化取引は勉強する, テストそして考える- わかった 問題を解決し,問題について考える最も効率的な方法は情報検索じゃあ自分でやってみろそして考えて分析する. 問題が解決しない場合は,上記の操作を繰り返します.

しかし,通常,初心者が問題に直面すると,彼らは感じます:

プログラミングや定量戦略を書くのは とても難しい! 困惑してるけど 私もしばらく勉強してる! 始められる前に諦めたい! ... ほら

FMZプラットフォームで始めるのは,実際には非常に簡単でシンプルです.まずは,情報検索に精通する必要があります.FMZ量子取引プラットフォームのスクエア,フォーラム,ダイジェストには多くの情報があります.

img

また,操作能力もあります.バックテストシステムとデバッグツールを使用して簡単にテストを行うことができます. これは完全な戦略をテストすることを意味しません. 実際,完全にゼロの基礎があれば,FMZ Quantのバックテストシステムで直接JavaScriptプログラムの基礎を学ぶこともできます.

JSをよく勉強するサイトです.https://www.runoob.com/js/js-loop-for.htmlウェブサイトはJSに限定されず,あらゆる種類の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 the email address? ", " Answer:", IsEmail(strEmailAddress1))
    
    var strEmailAddress2 = "123456789@qq.com"
    Log(strEmailAddress2, " Is it the 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のチュートリアルを見ながらバックテストシステムで操作を試してJavaScriptの基礎を完全に学ぶことができます.JavaScriptの構文がほとんど習得された後,データを取得しテストするためにプラットフォームインターフェースを使用するために次の段階に入ることができます.デバッグツールFMZで実際のインターフェーステストを行う テスト,検証,比較分析などで 結論を導き始めます 学習とスタートがとても速くなります


もっと