前回の記事では,いわゆるプログラムおよび定量取引は,プラットフォームから得られたデータに基づいて,一連の計算,判断,トリガーを経て,いくつかの操作を行い,取引を行うプラットフォームアカウントを操作するスクリプトプログラムであることを学びました.データを取得するこれらのアクションとオペレーティングアカウントはすべてプラットフォーム API インターフェースを通じて実行されます.簡単に言えば,スクリプトプログラムはプラットフォームと相互作用します.相互作用であるため,正常な相互作用と異常な相互作用が必要です.異常な相互作用が発生すると,インターフェースは例外情報を返します.
もちろん,市場におけるプログラムおよび定量取引システムまたは自己開発プログラムには様々なエラープロンプトとメッセージがあります.これらのエラーメッセージは,プラットフォームAPIが報告するエラーメッセージに限定されません.また,動作中のプログラム例外エラー,構成エラー,プログラム構文エラーなど,他のエラーもあります.
FMZ量子取引プラットフォームでは,エラーメッセージは,概していくつかのカテゴリーに分けることができます:
戦略文法エラー この種のエラーは最も一般的なエラーで,通常は初心者がプログラミングに精通していない状況で発生し,学習中にコードを書くときに文法エラーが発生します.例えば:
コードは括弧のような文字なしで書かれました.この種のエラーでは,エラープロンプトは通常戦略編集ページに表示され,その状況下で,戦略は実行できない (戦略が実行されると,画像のようにエラーが報告されます).
コードを書くのを終えた後 戦略編集ページを覗き込んで 赤十字が表示されているか確認する習慣を 作り出せます
戦略プログラムBUGによる動作中のプログラム例外 プログラムが動作中にバグがある場合,例外のトリガーでプログラムが異常停止し,このようなエラーメッセージが表示されます.
プログラムが実行するのを妨げます プログラムが実行するのを止めます
不適切な設定と設定によるエラー
FMZのプラットフォームでは,すべての取引ペアは,X_Y
取引通貨の名称をBTC_USDT
書き込みが間違ったら,BTC-USDT
.
FMZプラットフォームのバックテストシステムにおけるエラー報告:
ボットでエラー報告:
あるいは,初心者がよく遭遇する最も一般的なエラー:
この種の誤りは,API KEY
FMZアカウントのパスワードを変更した後に設定された交換オブジェクトに (ユーザーの API キーはすべてブラウザ端で暗号化され,FMZ プラットフォームで設定されています). これは戦略が起動できず,エラーが報告される原因になります.
呼び出しインターフェースによるエラー
インターフェースコールエラーは,戦略を実行するときにしばしば遭遇する. 前回の記事では,FMZプラットフォームのインターフェースが以下に分かれていることを学びました.ネットワークリクエストを行うインターフェースそしてネットワーク要求を行わないインターフェース. インターフェースエラーは,戦略プログラムの停止を直接引き起こしません. 通常,インターフェースコール例外により,間違ったデータが返され,戦略はエラートレランスを行いません. その後,間違ったデータによるプログラム例外エラーがプログラムを停止させます (エラートレランスの概念は,以前の記事で既に紹介されています).
ネットワークリクエストを行うインターフェースのエラーメッセージをいくつかリストします.
ネットワークタイムアウト
初心者がしばしば遭遇するエラーメッセージの1つは,国内ネットワークデバイス (PCまたは国内サーバー) の使用によって引き起こされます.ほとんどのプラットフォームがブロックされているため,多くのプラットフォームは基本的に国内ネットワーク (中国) によってアクセスできないため,アクセスインターフェースはタイムアウトを報告します (以前の記事で言及しました).
HTTP 429 エラー
これは典型的なエラーメッセージの1つです.その理由は,プラットフォームインターフェースが頻繁に呼び出し,プラットフォームの周波数制限を超えているからです. (前の記事で言及しました). 新しい学生の中には,複数のプラットフォームまたは複数のプラットフォームアカウントの API KEY を申請した場合,エラーが起こらないと言う人もいる.プラットフォームによるインターフェースへのアクセス頻度制限は通常,IPアドレスに基づいていることを知っておく必要があります.簡単に言えば,IPアドレスから送信されたすべての要求がアドレスにカウントされる限り,要求番号が制限を超えると,プラットフォームサーバーはIPへのアクセスを拒否します.
プラットフォーム インターフェース サービス の エラー
上記のタイムアウトと429のエラーはネットワーク層のエラーです.プラットフォームインターフェースサービス層に問題がある場合,エラーも報告されます.例えば,スポットマーケットのコートを入手したいのですが,存在しない取引ペアを設定しました. FMZプラットフォームのデバッグツールでテストします. デバッグツールは非常に便利なテストツールで,機能コールとデータ取得の実際のボットテストに非常に適しています.
デバッグツールの実行結果. デバッグツールの実行とボットの実行には違いがない.
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"
) について
例えば,このようなサービス関連のエラーは多くあります.例えば,レバレッジを設定するときに,いくつかのプラットフォームはデシマルのレバレッジ値をサポートしません.レバレッジ値がデシマルを有すると,インターフェースコールにもエラーが発生します.
ネットワーク要求を生成しないインターフェース呼び出しをリストする:
セット・フューチャー契約コード いくつかのインターフェースは,システムにいくつかのグローバル変数を設定するだけで,ネットワーク要求を行わない.例えば:
しかし,パラメータが間違って渡されたり書き込まれたりすると,エラーも報告されます.
誤差の種類に関係なく,表示されるエラーメッセージは,問題を発見するための重要な情報です. つまり,あなたはエラーメッセージから問題を解決することができます. 翻訳ツールを使用して,エラー情報を読み取れる言語に翻訳し,キーワードを抽出することができます. 例えば,"err-msg":"invalid symbol"
取引ペアの設定が間違っていることが原因です.
バックテストシステムは,定量的なツールの重要なポイントでもあります. バックテストシステムは,戦略のプロトタイプを簡単にテストし,当初戦略の潜在的なバグや論理的問題をチェックすることができます. しかし,バックテストシステムは合理的に見なければなりません. バックテストシステムは,ある程度戦略のいくつかの問題を反映することができます.
以下は,FMZがサポートするさまざまな戦略言語のレベルからFMZプラットフォーム上のバックテストシステムの簡潔な説明です. (バックテストシステムのいくつかの紹介は,以前の記事で言及されました.)
JavaScript
バックテストはブラウザで実行され,ローカルハードウェアリソースを使用します.
パイソン
ドーカーのバックテストでは,どのドーカーを割り当てるか (自分で展開したドーカーのどちらか,またはFMZプラットフォームのパブリックドーカーのどちらか) を選択できます. FMZプラットフォーム上のパブリックドーカーの大きな負荷を考えると,ローカルドーカーのバックテストを使用することをお勧めします (それはさらに速くなります.パブリックドーカーのバックテストでは,過負荷の場合,バックテストの結果が中断され,一部のバックテストタスクがキャンセルされます).
C++
スクリプト言語とは異なり,C++戦略はコンパイルして実行する必要があります.C++言語戦略は,まずFMZプラットフォーム (サーバー) でコンパイルされます (コード書き込みに問題がある場合は,コンパイルが通過しない可能性があり,エラーメッセージが直接提示されます).コンパイルが通過した後,FMZプラットフォーム (サーバー) でバックテストされます.
ミランゲージ
底層はJavaScriptで実装され,バックテストもブラウザで実行されます.
視覚化
底層はJavaScriptで実装され,バックテストもブラウザで実行されます
FMZ Quant Tradingプラットフォームのバックテストシステムは,バックテストモードが2つあります (戦略がどの言語で書かれても,バックテストモードはバックテストシステムの設定であり,設定オプションはFMZでサポートされるすべての言語で同じです).
バックテストシステムの説明については,FMZプラットフォームの戦略執筆チュートリアルに関する部分を参照してください.
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.
この図のシミュレーションと同じです
バックテストシステムでシミュレーションを実現するには,写真よりも少し複雑です.ここで詳しく説明しません. 単にシミュレーションレベルのバックテストのメカニズムを理解する必要があります. シミュレーションレベルバックテストは非常に速く (シミュレーションによって生成される価格が連続的にリリースされる実際の秒ごとに価格ではないため).しかし,戦略がシミュレーションレベルバックテストと一致した場合,シミュレーションされたティックの変化傾向, 戦略は優秀なパフォーマンスを発揮します (しかし,実際には,価格はK線バーの構造内にあるにもかかわらず,トレンドに変化しないかもしれません). K線は,K線の周期と呼ばれる. この線は,K線の周期と呼ばれる.下のK線期戦略設定のページには次の図が表示されます.
1分を設定します つまり,k線データを 1分間の周期でデータ源として使って シミュレーションされたティックデータを生成します
高周波戦略では,シミュレーションレベルのバックテストは明らかに適切ではない.しかし,トレンド戦略では,シミュレーションレベルのバックテストは,ある程度,戦略のパフォーマンスを示すことができます.
FMZ Quant バックテストシステムのデータソースはどこにあるのか? バックテストシステムは FMZ プラットフォーム上のダッシュボードのデータをデフォルトで使用します. FMZ のダッシュボードは,各プラットフォームの各通貨のセット市場データを自動的に収集し,プラットフォームのバックテストシステムに提供します.
FMZ API ドキュメンテーションには,カスタムデータソースに関する指示もいくつかあります:https://www.fmz.com/api#カスタムデータソース
FMZプラットフォームのダイジェストにもいくつかのスキームがあります. 興味のある初心者は,それらのスキームを参照してそれらを勉強することができます.
プログラミングや定量化取引は勉強する, テストそして考える- わかった 問題を解決し,問題について考える最も効率的な方法は情報検索じゃあ自分でやってみろそして考えて分析する. 問題が解決しない場合は,上記の操作を繰り返します.
しかし,通常,初心者が問題に直面すると,彼らは感じます:
プログラミングや定量戦略を書くのは とても難しい! 困惑してるけど 私もしばらく勉強してる! 始められる前に諦めたい! ... ほら
FMZプラットフォームで始めるのは,実際には非常に簡単でシンプルです.まずは,情報検索に精通する必要があります.FMZ量子取引プラットフォームの
また,操作能力もあります.バックテストシステムとデバッグツールを使用して簡単にテストを行うことができます. これは完全な戦略をテストすることを意味しません. 実際,完全にゼロの基礎があれば,FMZ Quantのバックテストシステムで直接JavaScriptプログラムの基礎を学ぶこともできます.
JSをよく勉強するサイトです.https://www.runoob.com/js/js-loop-for.htmlウェブサイトはJSに限定されず,あらゆる種類のIT知識がここで問い合わせられ,学習できます. JSの正規表現の使い方がわからないので どうしたらいいですか? もちろん,まず情報を探して,それから試してください!
この例を見てきましたFMZのバックテストシステムを使って テストできます
バックテストシステムに ランダムにプラットフォームを設定します
次のコードをテストします
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))
}
勉強 に 役立つ 素晴らしい 道具 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])
}
}
すぐ に 学ぶ 動機 を 感じ ます か FMZでは,JavaScriptのチュートリアルを見ながらバックテストシステムで操作を試してJavaScriptの基礎を完全に学ぶことができます.JavaScriptの構文がほとんど習得された後,データを取得しテストするためにプラットフォームインターフェースを使用するために次の段階に入ることができます.デバッグツールFMZで実際のインターフェーステストを行う テスト,検証,比較分析などで 結論を導き始めます 学習とスタートがとても速くなります