定量的な取引プログラミング言語の評価
第1章と第2章では,定量取引の基礎とFMZ Quantツールの使い方について学びました.この章では,実際の取引戦略を実装します.もし労働者が良いことをしたいのであれば,まずそのツールを磨く必要があります.取引戦略を実装するには,まずプログラミング言語をマスターする必要があります.このセクションでは,まず定量取引における主流のプログラミング言語,および各プログラミング言語の特徴を紹介します.
プログラミング言語を学ぶ前に,まず"プログラミング言語"の概念を理解する必要があります. プログラミング言語は,人間もコンピュータも理解できる言語です. 標準化された通信コードです. プログラミング言語の目的は,コンピュータを制御するために人間の言語を使用し,私たちが何をすべきかをコンピュータに伝えることです. コンピュータはプログラミング言語に従って指示を実行することができ,また,コンピュータに指示を発行するためにコードを書くことができます.
親が私たちに話すことを教え,他人が何を言っているかを理解することを教えてくれたように. 長い教育と自己学習の期間を経て,私たちはそれを知らずに話すことを学び,他の子供たちが話す意味を理解することができます. 中国語,英語,フランス語など,多くの言語があります.
中国語: こんにちは
日本語: ハローワールド
フランス語:Bonjour tout le monde
コンピュータ画面に"Hello World"を表示するには,次のプログラム言語を使用します.
C言語: put (
Java言語:System.out.println ((
Python言語:プリント (
コンピュータ言語には独自の規則があり,多くの言語があることがわかります. これらの言語規則は,今日説明するプログラミング言語の分類です. 各カテゴリーでは,最も基本的なルールだけ覚えておく必要があります. これらのプログラミング言語を使用してコンピュータと通信し,コンピュータが私たちの指示に従って対応する戦略を実行させることができます.
参照と比較を容易にするため,あなたに合った定量取引プログラミング言語を選択します.私たちは最も一般的に使用される6つのプログラミング言語をカテゴリー化します: Python,Matlab/R,C++,Java/C#,EasyLanguage,およびビジュアルプログラミング言語 (下記のとおり).
Python は,機能能力,速度,拡張性,学習困難によって評価されます.例えば,機能範囲のスコアが 1 から 5 になる場合,機能範囲のスコアが 5 になる場合,パワフルで,機能性が 1 になる場合,機能性が 1 になる場合です. (上記のように) Visual Programming と EasyLanguage は,学習が簡単で,非常に新しいものです. Python は強力な拡張機能を持ち,より複雑な取引戦略を開発するのに適しています. C++ プログラミングは,最も速く,高周波トレーダーに適しています.
しかし,各プログラミング言語の評価は,主に定量的な取引の分野でのアプリケーションです. そして個人の主観的な要素です. あなたはそれらを自分自身で探求することもできます. 次に,私たちはこれらのプログラミング言語を一つずつ紹介し始めます.
視覚プログラミングは長い間存在してきました この種の"What you see is what you get"のプログラミングアイデアは 様々な制御モジュールで装備されています ドラッグアンドドロップだけでコードロジックを構築し 取引戦略の設計を完了できます このプロセスはビルディングブロックのようなものです
上記のように,同じ手順は FMZ Quant トレーディングプラットフォームの視覚プログラミングで数行だけのコードです.これは,特にプログラミングを全く理解していないトレーダーにとって,プログラミングの限界を大幅に削減します.これは素晴らしい操作体験です.
このビジュアルプログラミングの基礎的な実装戦略がC++に変換されているため,プログラムの実行速度にはほとんど影響しません.しかし,機能性と拡張性は弱で,複雑すぎたり,洗練された取引戦略を開発することは不可能です.
EasyLanguageと呼ばれる言語は,一部の商業化された定量取引ソフトウェアに特有のプログラミング言語を指します.これらの言語にもいくつかのオブジェクト指向機能がありますが,主にアプリケーションでスクリプトされています.文法的には,私たちの自然な言語にも非常に近い.定量取引の初心者にとって,出発点としてEasyLanguageを使用することは良い選択です.例えば,FMZ Quantプラットフォーム上のM言語です.
この種のスクリプト言語は,戦略バックテストや特定のソフトウェアの実際の市場に問題はないが,拡張性に関しては,しばしば制限されている.例えば,戦略開発者は外部APIを呼び出すことができない.実行速度では,このスクリプト言語は独自の仮想マシンで実行され,パフォーマンス最適化はJava/C#と同じくらい良い.
Stackoverflowでは,近年,主流プログラミング言語のアクセス数がほとんど変わっていない.Pythonだけが急増している.PythonはWeb開発,機械学習,ディープラーニング,データ分析などに使用できる.柔軟性やオープン性により最も汎用的な言語となっています.定量投資分野でも同様です.現在,グローバルな定量プラットフォームは主にPythonに基づいています.
Pythonの基本的なデータ構造リストと辞書は非常に強力で,データの分析のほぼすべてのニーズを満たすことができます.より速く,より包括的なデータ構造が必要な場合は,NumPyとSciPyが推奨されています.これらの2つのライブラリは基本的にPython科学コンピューティングの標準ライブラリと呼ばれます.
金融エンジニアリングでは,よりターゲット化されたライブラリがPandasで,シリーズとデータフレームという2つのデータ構造があり,時間系列の処理に最適です.
速度に関しては,Pythonはゲームの中央にあり,C++よりも遅い,EasyLanguageよりも速い.主にPythonは純粋なPython言語として通常の速度で動作するダイナミックな言語であるため.しかし,C++の速度に近づくためにいくつかの関数を静的に最適化するために Cythonを使用することができます.
Pythonは,拡張性において1位である.拡張言語 API の設計は,他の言語と幅広くインタフェースができることに加えて,使用が非常に簡単である.学習困難の観点から,Python はシンプルな構文,高いコード読みやすさ,そして簡単なエントリーを持っています.
また,Matlab と R 言語があります.この2つの言語は主にデータ分析に指向しています.言語作成者は文法における科学的操作のために多くの設計を行っています.これは定量的な取引操作の自然なサポートによって特徴付けられています.しかし,アプリケーション範囲は限られており,一般的にデータ分析と戦略バックテストに使用されています. 取引システムと戦略アルゴリズム開発では,使用しやすさと安定性が低いです.
また,Matlab と R 言語は独自の言語仮想マシンで実行されるため,速度とスケーラビリティは比較的低い.パフォーマンスに関しては,それらの仮想マシンが Java と C#よりもはるかに劣っている.しかし,その文法が数学表現式に近いため,学習は比較的簡単である.
C++ は,手順プログラミング,データ抽象化,オブジェクト指向プログラミング,汎用プログラミング,デザインパターンなどの複数のプログラミングパターンをサポートする汎用プログラミング言語です. C++ で達成したいすべての機能を実装できますが,そのような強力な言語の最大の欠点は,テンプレート,ポインタ,メモリ漏れなど,学習が非常に難しいことです.
現在,C++は依然として高容量,高周波取引のための好ましいプログラミング言語である.その理由は単純である.C++言語の機能がコンピュータの基礎層にアクセスしやすくなるため,大量のデータを処理する高性能バックテストおよび実行システムを開発するための最も効果的なツールである.
Java/C#は仮想マシンで動作する静的言語である.C++と比較して,範囲外配列がない,コーデュンプがない,投げられた例外がエラーコードを正確に位置付け,自動ゴミ収集メカニズムをもたらし,メモリリーークの心配する必要がない.だから文法学習難度に関しては,C++よりも簡単だ.速度に関しては,仮想マシンが実行時にコンパイルされたJIT関数を持って来るため,スピードはC++に次ぐ.
C++ の拡張性能に関しては C++ より弱く,その拡張が C ブリッジを通過する必要があるため,この2つの言語が仮想マシン上で実行されるので,機能モジュールを拡張する際には,さらに 1 つのレイヤ壁を横断する必要があります.
しかし,結局のところ,定量的なプログラミング言語は重要ではなく,考え方が重要です. FMZ Quant M言語とビジュアルプログラミング言語は,定量的な取引への入り口として全く問題ありません. 基礎的なことをした後,改善は,さまざまな市場状況を継続的に探求し,C ++などのより基礎言語を使用しようとすることです.
量的な取引ツールとしてのPython言語の利点は何ですか?
M言語で使用されている API をいくつか書きましょうか?
次のセクションの通知
プログラミング言語の分類に基づいた定量的な取引戦略を開発します. プログラミング言語の分類は,