avatar of 发明者量化-小小梦 发明者量化-小小梦
フォロー ダイレクトメッセージ
4
フォロー
1271
フォロワー

暗号通貨界における定量取引の初心者の方は、こちらをぜひご覧ください - 暗号通貨界における定量取引への近道(パート 3)

作成日:: 2021-05-06 11:20:04, 更新日:: 2024-12-04 21:27:24
comments   1
hits   3182

暗号通貨界における定量取引の初心者の方は、こちらをぜひご覧ください - 暗号通貨界における定量取引への近道(パート 3)

暗号通貨界における定量取引の初心者の方は、こちらをぜひご覧ください - 暗号通貨界における定量取引への近道(パート 3)

エラーメッセージ

前回の記事では、いわゆるプログラム型取引や定量型取引とは、一連の計算、判断、トリガーを経て取引所から取得したデータに基づいて何らかの操作を行い、取引所の口座を操作して取引を行うスクリプトプログラムのことであると学びました。データの取得やアカウントの操作といったこれらのアクションはすべて、取引所の API インターフェースを通じて実行されます。簡単に言えば、スクリプトプログラムと取引所の相互作用です。相互作用である以上、正常な相互作用と異常な相互作用があるはずです。異常な相互作用が発生すると、インターフェースは例外情報を返します。

もちろん、市販のプログラム化された定量取引システムや独自開発のプログラムには、さまざまなエラー プロンプトやエラー メッセージが表示されます。これらのエラー メッセージは、Exchange API インターフェイスによって報告されるエラー メッセージに限定されません。プログラム実行時例外エラー、構成エラー、プログラム構文エラーなどもあります。

Inventor Quantitative Trading Platform では、エラー メッセージは大まかに次のいくつかのカテゴリに分類できます。

  • ポリシー構文エラー このタイプのエラーは最も一般的で、通常は初心者がプログラミングに慣れておらず、学習およびテストの段階で記述されたコードに構文エラーがあるために発生します。例えば:

暗号通貨界における定量取引の初心者の方は、こちらをぜひご覧ください - 暗号通貨界における定量取引への近道(パート 3)

コードには括弧などの文字がありません。このタイプのエラーは通常、ポリシー編集ページに表示され、ポリシーを実行できません (下の図に示すように、実行時にエラーが直接報告されます)。

暗号通貨界における定量取引の初心者の方は、こちらをぜひご覧ください - 暗号通貨界における定量取引への近道(パート 3) そのため、戦略を書いた後は、プラットフォームの戦略編集ページを見て、小さな赤い XX があるかどうかを確認するのが習慣になっています。ある場合は、明らかなエラーがあるはずです。

  • ポリシープログラムバグによるランタイムプログラム例外 プログラムにバグがあります。プログラムの実行中に例外が発生すると、プログラムが異常停止し、このタイプのエラー メッセージが表示されます。

暗号通貨界における定量取引の初心者の方は、こちらをぜひご覧ください - 暗号通貨界における定量取引への近道(パート 3)

暗号通貨界における定量取引の初心者の方は、こちらをぜひご覧ください - 暗号通貨界における定量取引への近道(パート 3)

このようなエラーが発生すると、プログラムは失敗し、実行が停止します。

  • 不適切な構成や設定によって発生するエラー

FMZプラットフォームでは、取引ペアは次のように一律に定義されています。X_Yこの形式では、X は取引通貨の名前を表し、Y は表示通貨の名前を表します (先物通貨ベースの契約取引ペアの表示通貨は通常 USD で表され、以前の記事で紹介しました)。例えばBTC_USDT取引ペアをランダムに書き出すと、BTC-USDT

暗号通貨界における定量取引の初心者の方は、こちらをぜひご覧ください - 暗号通貨界における定量取引への近道(パート 3)

FMZ プラットフォームのバックテスト システムでエラーが報告されました:

暗号通貨界における定量取引の初心者の方は、こちらをぜひご覧ください - 暗号通貨界における定量取引への近道(パート 3)

実際の取引でエラーを報告する:

暗号通貨界における定量取引の初心者の方は、こちらをぜひご覧ください - 暗号通貨界における定量取引への近道(パート 3)

さらに、初心者が遭遇する一般的な間違いは次のとおりです。

https://www.fmz.com![暗号通貨界における定量取引の初心者の方は、こちらをぜひご覧ください - 暗号通貨界における定量取引への近道(パート 3)](/upload/asset//345be4d2aa663dd2c02cf5b97f95ce03fc0a7378.png)

このタイプのエラーは、FMZプラットフォームアカウントのパスワードを変更することによって発生し、API KEY無効 (ユーザーの API キーがブラウザ上で暗号化され、その後 FMZ プラットフォーム上で構成されている) の場合、戦略を開始できず、エラーが報告されます。

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

戦略を実行する際にインターフェース呼び出しエラーが発生することがよくあります。以前の記事では、FMZプラットフォームのインターフェースが次のように分かれていることを学びました。ネットワークリクエストを生成するためのインターフェースネットワークリクエストを生成しないインターフェース。インターフェースエラーによってポリシープログラムが停止することはありません。これは通常、不正なデータを返すインターフェース呼び出し例外が原因です。ポリシーにはフォールトトレランスがないため、不正なデータによってプログラム例外エラーが発生し、プログラムが停止します。 (フォールト トレランスの概念については、以前の記事で説明しました)。

ネットワーク要求を生成するインターフェース エラー メッセージは次のとおりです。

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

    暗号通貨界における定量取引の初心者の方は、こちらをぜひご覧ください - 暗号通貨界における定量取引への近道(パート 3)

    初心者がよく遭遇するエラー メッセージの 1 つは、国内のネットワーク デバイス (自分のコンピューターまたは国内のサーバー) の使用です。ほとんどの取引所がブロックされているため、国内ネットワークからは基本的に多くの取引所にアクセスできず、アクセス インターフェイスはタイムアウトを報告します。 (以前の記事で触れました)

  • http 429 エラー

    https://www.fmz.com![暗号通貨界における定量取引の初心者の方は、こちらをぜひご覧ください - 暗号通貨界における定量取引への近道(パート 3)](/upload/asset//65057d99e2acdf9e237130ae7dc8082d333dc36b.png)

    典型的なエラー メッセージの 1 つです。原因は、交換インターフェースが頻繁に呼び出され、交換の頻度制限を超えていることです。 (以前の記事で触れました) 新入生の中には、「もっと交換留学に応募したい」と言う人もいるかもしれません。API KEYあるいは、さらにいくつかの交換口座を申請することもできます。取引所は通常、IPアドレスに基づいてインターフェースのアクセス頻度を制限することを知っておく必要があります。簡単に言えば、IPアドレスから送信されたすべてのリクエストがこのIPアドレスでカウントされる限り、制限を超えてこのIPが再度リクエストを送信した場合、Exchange サーバーはアクセスを拒否します。

  • 交換インターフェースビジネスレベルでのエラー報告

    上記のタイムアウトと 429 は、ネットワーク レベルのエラーです。取引所インターフェースのビジネス レベルで問題が発生した場合にもエラーが報告されます。たとえば、スポット相場を取得したいが、存在しない取引ペアを設定した場合などです。 FMZ プラットフォームのデバッグ ツールでテストしました。デバッグ ツールは非常に便利なテスト ツールで、関数呼び出し、データ取得などのニーズのリアルタイム テストに非常に適しています。

    暗号通貨界における定量取引の初心者の方は、こちらをぜひご覧ください - 暗号通貨界における定量取引への近道(パート 3)

    デバッグツールの実行結果と実際の実行結果に違いはありません。 暗号通貨界における定量取引の初心者の方は、こちらをぜひご覧ください - 暗号通貨界における定量取引への近道(パート 3)

    Huobi	错误	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")。 例えば、このような業務関連のエラーは数多くあります。例えば、レバレッジを設定する際、一部の取引所では小数点付きのレバレッジ値に対応していません。このとき、レバレッジ値に小数点が含まれていると、インターフェース呼び出しエラー。

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

  • 先物契約コードを設定する 一部のインターフェースは、システム内の一部のグローバル変数のみを設定し、ネットワーク要求を生成しません。次に例を示します。

    暗号通貨界における定量取引の初心者の方は、こちらをぜひご覧ください - 暗号通貨界における定量取引への近道(パート 3)

    ただし、パラメータが誤って渡されたり、ランダムに書き込まれたりした場合はエラーが発生します。

    暗号通貨界における定量取引の初心者の方は、こちらをぜひご覧ください - 暗号通貨界における定量取引への近道(パート 3)

ただし、エラーの種類に関係なく、表示されるエラー メッセージは問題を見つけるための重要な情報であり、通常はエラー メッセージから問題を特定できます。翻訳ツールを使用して、エラー メッセージを翻訳し、重要な情報を抽出できます。例えば、上記の例では"err-msg":"invalid symbol"、翻訳: 「err msg」: 「無効なシンボル」。取引コードと取引ペアを表すために通常英語の記号が使用されるため、取引ペアの設定が間違っていることはおそらくご存知でしょう。 エラー情報について簡単に説明します。クエリに関するよくある質問を引き続き収集する投稿があります: https://www.fmz.com/bbs-topic/1427

バックテストシステム

バックテスト システムも定量ツールの重要なポイントです。バックテスト システムを使用すると、戦略のプロトタイプを簡単にテストし、戦略の潜在的なバグや論理的な問題を事前にテストできます。バックテストシステムについては合理的に考える必要があります。バックテスト システムは、ある程度、戦略の問題を反映できます。

以下では、FMZ がサポートするさまざまな戦略言語の観点から、FMZ プラットフォーム上のバックテスト システムについて簡単に説明します。 (バックテストシステムの紹介は以前の記事で触れました)

  • JavaScript

ブラウザ側のバックテストでは、ローカルのハードウェア リソースが使用されます。

  • Python

カストディアンでバックテストを行う場合、どのカストディアンに割り当てるかを選択できます (独自のカストディアンまたは FMZ プラットフォームのパブリック カストディアンのいずれか)。 FMZプラットフォームのパブリックカストディアンの負荷が高いことを考慮すると、バックテストにはローカルカストディアンを使用することをお勧めします(これはより高速になります)。パブリックカストディアンでバックテストを行う場合、負荷を超えるタスクが多すぎると、一部のバックテストがタスクがキャンセルされ、バックテストが遅延します。測定が中断されます。

  • C++

スクリプト言語とは異なり、C++ ポリシーは実行する前にコンパイルする必要があります。 C++ 言語戦略は、最初に FMZ プラットフォーム (サーバー) でコンパイルされます (コードに問題がある場合は、コンパイルが失敗し、エラー メッセージが表示されます)。コンパイル後、FMZ プラットフォーム (サーバー) でバックテストを実行します。

  • マイ語

基盤となる実装は JavaScript であり、バックテストもブラウザ側で実行されます。

  • 視覚化

基盤となる実装は JavaScript であり、バックテストもブラウザ側で実行されます。

Inventor Quantitative Trading Platform のバックテスト システムには、2 つのバックテスト モードがあります (こちらは戦略言語を区別せず、こちらはバックテスト設定であり、さまざまな言語での戦略バックテストは同じです)。

暗号通貨界における定量取引の初心者の方は、こちらをぜひご覧ください - 暗号通貨界における定量取引への近道(パート 3)

バックテスト システムの説明については、プラットフォーム チュートリアルの情報を参照してください。

https://www.fmz.com/bbs-topic/4158#%E7%AD%96%E7%95%A5%E5%9B%9E%E6%B5%8B

  • 1. シミュレーションレベルのバックテスト 簡単に言えば、シミュレーションレベルのバックテストとは、K ライン データに基づいて各時間ノードの価格データをシミュレートして生成することです。
  K线中一根柱子不是有高开低收么,构成了一个价格框架,在这个K线代表的时间范围内,价格都在这个价格框架内,所以只要生成的价格在这个K线高开低收框架范围内,这个模拟出来的价格就是合理的。

図のシミュレーションのように: https://www.fmz.com![暗号通貨界における定量取引の初心者の方は、こちらをぜひご覧ください - 暗号通貨界における定量取引への近道(パート 3)](/upload/asset//35c54e14e29601352720d51f75e2d7674415f92e.png) もちろん、実際のバックテスト システムでこのシミュレーションを実装する場合、状況は図に示されているよりも少し複雑になります。ここでは詳しく説明しません。シミュレーション レベルのバックテストのメカニズムを理解すれば十分です。 この原則を理解した上で、シミュレーション レベルのバックテストは非常に高速ですが、シミュレーション レベルのバックテストの欠点に注意する必要があります (シミュレーションによって生成された価格は、1 秒ごとに 1 つずつリリースされる実際の価格ではないため)。しかし、戦略が合えばシミュレーションされたティック変化トレンドこれにより、戦略のパフォーマンスが非常に良くなります (ただし、実際の状況では、価格はこの K ライン列の枠組み内にあっても、このように動かない場合があります)。 シミュレーションされたティックデータを生成するために使用されるKラインは基礎Kラインと呼ばれ、このKラインの期間はボトムKラインサイクルポリシー設定ページに示されているように設定します。

暗号通貨界における定量取引の初心者の方は、こちらをぜひご覧ください - 暗号通貨界における定量取引への近道(パート 3) ここで 1 分に設定すると、シミュレートされたティックを生成するためのデータ ソースとして、1 分周期の K ライン データが使用されることを意味します。

もう 1 つのポイントは、高頻度戦略の場合、シミュレーション レベルのバックテストを使用することは明らかに適切ではないということです。ただし、トレンド戦略の場合、シミュレーションレベルのバックテストを使用すると、戦略のパフォーマンスをある程度反映できます。

  • 2. リアルタイムバックテスト シミュレーションレベルのバックテストについて説明したので、次はリアルタイムレベルのバックテストについて説明します。簡単に言えば、リアルタイム バックテストとは、バックテスト中に実際の秒単位の価格データを公開することを意味します。戦略により、市場での価格を毎秒バックトラックします。このバックテストモードでは、取引頻度の高い一部の戦略をバックテストすることができ、ある程度の参考値を得ることができます。 欠点は、リアルタイムのバックテスト データの量が多すぎて、より長い時間枠 (通常 1 日未満) にわたってバックテストできないことです。閉じることができますティックデータ、デプスデータレベル(取引データ、市場デプスデータもリアルタイムバックテストで秒単位のスナップショットを持っているため、リアルタイムバックテストデータの量は膨大です)を減らして、バックテストの範囲を適切に増やします。図に示すように:

暗号通貨界における定量取引の初心者の方は、こちらをぜひご覧ください - 暗号通貨界における定量取引への近道(パート 3)

Inventor Quantitative Trading Platform バックテスト システムのデータはどこから来ますか?バックテスト システムは、デフォルトで FMZ プラットフォームのデータ センターのデータを使用します。FMZ プラットフォームのデータ センターは、各取引所から各通貨の市場データを自動的に収集し、プラットフォーム上のバックテスト システムに提供します。

    1. FMZデータセンターのデータをデフォルトで使用する 以前の記事で言及されています: https://www.fmz.com/bbs-topic/6857#%E9%87%8F%E5%8C%96%E4%BA%A4%E6%98%93% E5%B9% %E5%8F%B0 翻訳: 翻訳: プラットフォームが提供するバックテストデータは、限られた取引ペアのみをサポートしています(市場全体とすべての通貨のバックテストデータは天文学的な数字であり、すべてを収集することは非現実的です。プラットフォームは、主流の取引所と主流の通貨から市場データを収集します) 。
    1. カスタムデータソースデータを使用する バックテストページのオプションを使用して、カスタムデータソースを設定できます。簡単に言えば、特定の取引所からのデータがある場合は、FMZプラットフォームのバックテストシステムに提供して、FMZのフォーマット要件に従ってバックテストを行うことができます。プラットフォーム。

暗号通貨界における定量取引の初心者の方は、こちらをぜひご覧ください - 暗号通貨界における定量取引への近道(パート 3)

FMZ API ドキュメントには、カスタム データ ソースに関する説明もいくつかあります。 https://www.fmz.com/api#%E8%87%AA%E5%AE%9A%E4%B9%89%E6%95%B0%E6%8D%AE%E6%BA%90

FMZ ライブラリにもいくつかのソリューションがあります。 暗号通貨界における定量取引の初心者の方は、こちらをぜひご覧ください - 暗号通貨界における定量取引への近道(パート 3)

興味のある初心者の方は勉強したり参考にしたりしてください。

学ぶ、テストする、考える

プログラム取引と定量取引は切り離せない勉強テスト考える。 問題について孤立して考えることはできません。それは非効率的です。問題を解決し、考える最も効果的な方法は情報を探す、それから自分で試してみましょう思考分析問題が解決しない場合は、上記の手順を繰り返してください。

しかし、通常、初心者が問題に遭遇すると、次のように感じます。

「あ~プログラミングも定量化も戦略書きも難しすぎる。」 「ずっと見てきたけど、まだ混乱してる!」 「まだ始めていないのにやめてしまいたい!」 ….

FMZ プラットフォームを使い始めるのは実はとても簡単です。まず、情報を見つけるのが上手である必要があります。 Inventor Quantitative Trading Platform の戦略プラザ、コミュニティ、ライブラリには、参照可能な情報が多数あります。

暗号通貨界における定量取引の初心者の方は、こちらをぜひご覧ください - 暗号通貨界における定量取引への近道(パート 3)

次に、実践的な能力があります。バックテスト システムとデバッグ ツールを使用すると、テストが容易になります。これは、完全な戦略をテストすることを意味するものではありません。実際、基礎知識がまったくない場合でも、FMZ 定量バックテスト システムで JavaScript プログラミングの基礎を学ぶことができます。

私がよくJSを勉強するチュートリアルサイトはこちらです:https://www.runoob.com/js/js-loop-for.html JSに限らず、あらゆるIT知識をここで検索・学習できます。 例えばJSの正規表現の使い方が分からないのですが、どうすればいいでしょうか? もちろん、まずは情報を確認してから試してみてくださいね〜

次のような例を見ました: 暗号通貨界における定量取引の初心者の方は、こちらをぜひご覧ください - 暗号通貨界における定量取引への近道(パート 3) 私はそれをテストしたいのですが、FMZ プラットフォームのバックテスト システムを使用してテストして学習することもできます。

バックテストシステムでランダムに取引所を設定する 暗号通貨界における定量取引の初心者の方は、こちらをぜひご覧ください - 暗号通貨界における定量取引への近道(パート 3)

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

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, " 是邮件地址么 ? ", " 回答:", IsEmail(strEmailAddress1))
    
    var strEmailAddress2 = "[email protected]"
    Log(strEmailAddress2, " 是邮件地址么 ? ", " 回答:", IsEmail(strEmailAddress2))
}

暗号通貨界における定量取引の初心者の方は、こちらをぜひご覧ください - 暗号通貨界における定量取引への近道(パート 3)

見て〜なんて素晴らしい学習ツールなんだろう! たとえば、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])
    }
}

暗号通貨界における定量取引の初心者の方は、こちらをぜひご覧ください - 暗号通貨界における定量取引への近道(パート 3)

すぐに勉強する意欲が湧いてきますか? 実際、FMZ では、バックテスト システムで JavaScript の基礎を学びながら、JavaScript チュートリアルを視聴できます。 JavaScript構文はほぼマスターされました。次の段階に進むには、交換インターフェースを使用してテスト用のデータを取得する必要があります。FMZプラットフォームを使用することもできます。デバッグツール実際のインターフェーステストを実行します。

次に、さらに考え、1 つの例から推論を引き出し、テストして検証し、比較して分析するなどを行う必要があります。この方法ならすぐに始めることができます。