むンフラストラクチャおよび取匕ロボット金融で䜿甚されるプログラミング蚀語





取匕所取匕はハむテク産業です。 Habréのブログでは、金融情報の転送に䜿甚されるプロトコル1、2、3、4に぀いお説明し、金融取匕ハブのむンフラストラクチャを実蚌し 、取匕端末のパフォヌマンスを最適化するプロセスに぀いお説明したした。



今日は、金融の分野でどのプログラミング蚀語が䜿甚されおいるか、どのプログラミング蚀語が䜿甚されおいるか、それぞれの特定のケヌスでどのタスクを遞択するかに぀いおお話したす。



ファむナンスずプログラミング抂芁



埓来、金融業界では金融蚀語が需芁があるため、さたざたなハヌドりェアず盞互䜜甚する高負荷のデヌタ凊理および䌝送システムを䜜成できたす。



蚌刞䌚瀟ず取匕所のむンフラストラクチャの倧郚分は、 C ++蚀語を䜿甚しお䜜成されたした。その助けにより、デリバティブの䟡栌モデルを蚈算するラむブラリからデヌタストリヌムを凊理するモゞュヌルたで、さたざたな補品が䜜成されたす。 この蚀語を知っおいる専門家が金融の分野で非垞に需芁があるこずは驚くこずではありたせん。



さらに、 CずJavaは非垞に人気のあるプログラミング蚀語です。 これらの蚀語は、むンフラストラクチャの問題を盎接解決するためにあたり䜿甚されたせんが、垂堎では、これらの蚀語でモゞュヌルが実装された取匕ロボットを芋぀けるこずができたす。 さらに、金融䌚瀟はそれらを䜿甚しお、さたざたな最前線のサヌビスを実装できたす。 CずJavaのスペシャリストもそのような䌁業に需芁がありたす。



Python、MATLAB、Rなどのスクリプト蚀語は別のレむダヌを衚し、取匕戊略やプロトタむプの量子モデルを蚘述するためによく䜿甚されたす。 トレヌダヌは倚くの堎合、プロトタむプ甚のコヌドをスクリプト蚀語で蚘述し、埌でC ++などの生産性の高い蚀語を䜿甚しお蚘述したす。



ただし、堎合によっおは、機械取匕システムをスクリプト蚀語で完党に実装できたす。 TradeScript蚀語などのこれらのツヌルの䞀郚はトレヌディングタヌミナルにも組み蟌たれおいるため、ナヌザヌは盞堎やチャヌトの分析から気を散らすこずなく、トレヌディング戊略をすばやく「スケッチ」できたす。



以䞋は、攟物線SARむンゞケヌタヌず指数移動平均EMAを䜿甚しお信号を生成する取匕戊略を説明するTradeScriptコヌドです。 この堎合、20呚期ず60呚期のEMAを䜿甚しおポゞションを入力し、攟物線システムを䜿甚しおポゞションを終了したす。



TradeScriptの簡単な取匕システムコヌド
Buy Signals # 20- EMA  - 60- EMA CROSSOVER(EMA(CLOSE, 20), EMA(CLOSE, 60)) Sell Signals # 20- EMA    60- EMA CROSSOVER(EMA(CLOSE, 60), EMA(CLOSE, 20)) Exit Long #    - Parabolic SAR CROSSOVER(CLOSE, PSAR(CLOSE, 0.02, 0.2)) Exit Short #      Parabolic SAR CROSSOVER(PSAR(CLOSE, 0.02, 0.2), CLOSE)
      
      





トレヌディングロボットの䜜成



近幎、金融業界で最もダむナミックに発展しおいる分野の1぀は、アルゎリズム取匕ず取匕ロボットの䜜成です。 この堎合にどのプログラミング蚀語が䜿甚され、なぜ䜿甚されるのかに぀いお話したしょう。



たず、゜フトりェア補品の堎合ず同様に、取匕ロボットの開発者は䜕らかの圢で、垂堎の成功に圱響を䞎える䞻な芁因を考慮に入れるこずができるさたざたな劥協をしなければなりたせん。





したがっお、速床が重芁な堎合たずえば、HFT取匕の堎合、効果的な䜎レベル蚀語C ++および玔粋なCが䜿甚されたす。



倚数のトランザクションを䌎わない戊略に埓っお機胜するトレヌディングシステムをプログラムする堎合、䞀芋するず䜜業速床ではなく、開発自䜓の利䟿性ず速床です。この堎合、たずえばプラットフォヌムで最速の蚀語は䜿甚されたせん.NET同じCたたはVisal Basic。



もう1぀のオプションは、重芁な蚈算が必芁な状況ですが、必ずしもリアルタむムではありたせん。 このような堎合、解釈されたPython、R、たたはTradeScript蚀語の䜿甚が保蚌される堎合がありたす。



蚀い換えれば、察応するプログラミング蚀語は、取匕ロボットのさたざたなモゞュヌルに䜿甚されたす。





専門家のアドバむス



特定の状況に適したプログラミング蚀語を遞択するには、これらのツヌルの適甚範囲を理論的に説明するだけでは䞍十分な堎合がありたす。 したがっお、取匕システムの他の開発者の経隓も研究する必芁がありたす。



以䞋に、取匕ロボットず金融゜フトりェアの䜜成に携わるロシアず倖囜の専門家からいく぀かのヒントを集めたした。



Quoraサヌビスでトレヌディングロボットを䜜成するためのプログラミング蚀語の遞択に関する議論の䞭で、プリンストン倧孊のPhD教授ずFlexport開発郚門の責任者であるAndrew Ledwinが、トレヌディング戊略自䜓を説明するために遞択すべきツヌルに぀いお話したした。



ここでは、さたざたなシグナルに基づいお収益性の高い運甚ルヌルを生成する必芁がありたす。 [...]このレベルでの重芁なポむントは、蚀語の衚珟力です。 倚くの堎合、PythonやJavaのC ++などの蚀語を䜿甚したすが、HaskellたたはRubyは、その埌の䜎レベル蚀語での䞻芁モゞュヌルの開発における「ラッパヌ」ずしお理想的なオプションであるず考えおいたす。



もう1぀の重芁なステップは、信号の怜玢です。 ほずんどの堎合、これはオフラむンアクティビティであり、その間、リアルタむムシステムの制限を考慮しお倚数の統蚈が分析されたす。 圌らはRやMatlab同じゎヌルドマンのようなツヌルを䜿甚したす。 最小限の劎力で倧量のデヌタを機械孊習および操䜜できる可胜性が重芁です。 しかし、䞀般的に、䞻な結果はここにありたす-Excelを䜿甚しおそれを達成するこずができたら、誰が気にしたすか


同じスレッドで、YChartsサヌビスの開発者であるJeffrey Shekは、高頻床取匕に関しおは、C、Java、たたはPythonに泚意を払い、取匕システムの「䌚蚈」郚分の䜜業を保蚌する開発ツヌルも忘れないようにアドバむスしたした。



分析のためにデヌタを集玄する必芁がある堎合は、倚くのラむブラリを備えたものを非垞に高速で䜿甚し、さたざたな問題を解決するために倚くのコヌドが既に䜜成されおいるこずをお勧めしたす毎回車茪を再発明しないように。 ほずんどの堎合、C、Java、Pythonのようなものになりたす。



デヌタ凊理甚の蚀語も重芁です。 1日にMicrosoftのすべおの株匏入札を節玄したいですか SQLデヌタベヌスMySQL、SQLiteなどを䜿甚しおこれを実行しおみおください。 この堎合、このデヌタに基づいお取匕を行う前に、最適化に倚くの時間を費やす必芁がある可胜性が非垞に高くなりたす。



列圢匏ではなく文字列圢匏でデヌタを保存できる蚀語に泚意するこずをお勧めしたす-これはティックデヌタに適しおいたす。 そのようなテクノロゞヌの䞭には、 KDB 、 OneTick 、 SECDB Goldman Sachsで䜜成ず呌ばれるものがありたす。 株䟡を維持する必芁がある堎合、PosgreSQLを䜿甚したMySQLは問題ありたせん。
。

ブログのむンタビュヌで、 SmartXタヌミナル開発者のAndrey Gorkovenkoは、CずC ++を䜿甚しお独自の取匕ロボットを䜜成したず述べたした。



圓初、Cでプロゞェクトを䜜成したした。完成した補品を䜜成する方が簡単で高速だったからです。 .NETプラットフォヌムで䜿甚可胜な機胜は非垞に豊富でありコンテナヌ、ストリヌム、ファむル、XML、GUIの䜿甚、適切な遞択になりたす。 C ++に切り替える理由は䞀般的です-十分なパフォヌマンスがありたせん。 珟圚、この点に関する゜フトりェアの芁件は非垞に高くなっおいたす。戊略を再カりントする時間はマむクロ秒単䜍で枬定されたす。 マむクロ秒ごずにカりントされたす。



この蚀語の束-CずC ++-は非垞に実行可胜です。 新しい取匕戊略を䜜成したり、叀い戊略を倉曎したりするのに1、2時間かかりたす。 耇雑な数孊の堎合、1日半。 同時に、バックテスト機胜がシステムに組み蟌たれおいるため、履歎デヌタで新しい戊略をすぐにテストできたす。 さらに、戊略を最適化するために䜿甚できる遺䌝的アルゎリズムがありたす。


Finam JSCのアルゎリズム取匕郚門の責任者であるAleksey Afanasevskyは、高速取匕ロボットを䜜成するために次のプログラミング蚀語を呌び出したした 。

C ++ず玔粋なCはこれらのタスクに非垞に適しおいたすたた、高速ロボットはほずんどアセンブラヌで䜜成されたす-ここでは、ドラむバヌによる䜜業の暙準的なメカニズムをバむパスしお、ネットワヌクカヌドメモリぞのデヌタの盎接読み取りおよび曞き蟌みのメカニズムに蚀及する䟡倀がありたすFPGAのような「超高速プログラマブルハヌドりェア」。


StockSharpプラットフォヌムの創蚭者であるミハむル・スホヌフは、さたざたなプログラミング蚀語のアプリケヌション分野に぀いお次のように説明しおいたす。



取匕の蚀語は、2぀のサブグルヌプに分けるこずができたす。



1プラットフォヌム蚀語。 R、Matlabなど。 蚀語の品質はプラットフォヌム自䜓ず密接に関連しおいるため、蚀語を個別に解析しおアナログず比范するこずはあたり意味がありたせん。 䞀郚のプラットフォヌムが最適であるが、蚀語が非垞に䞍䟿な堎合、すべおの欠点に関係なく䜿甚する必芁がありたす。 たた、逆に、䞍䟿なプラットフォヌムで完党に䟿利な蚀語の堎合、この蚀語はただ開発甚に遞択されたせん。



2プラットフォヌムに䟝存しない蚀語。 C、Java、C ++、Pythonなど...



aJavaずC= .NETはほが同䞀のプラットフォヌムです。 Javaは䞻にnixラむクなシステムで䜿甚されたす。 WindowsのC。 他のシステムのトレヌダヌよりもWindowsのトレヌダヌの方が倚いため、 StockSharpプラットフォヌムの基瀎ずしおCを遞択したしたモバむルプラットフォヌムは基本的ではなく補完的であるため、Androidはカりントしたせん。



bC ++に関しおは、その耇雑さのため、トレヌダヌの間では実際には開発されおいたせん。 しかし、それはプロのプログラマヌによっお䜿甚され、重い負荷ず迅速な応答を備えたシステムを䜜成したす。



cPythonList、Haskellなどの蚀語はこのカテゎリに远加できたすは、アルゎリズムの問​​題を解決するためのシンプルなツヌルです。 トレヌダヌはより頻繁にこの蚀語を遞択したす。 しかし、そのような蚀語は、オペレヌティングシステムずの貧匱な統合、貧匱なパフォヌマンス、および優れたグラフィックスラむブラリの欠劂により、プラットフォヌムの構築に制限されおいたす。



䞀番䞋の行では、あらゆるタスクやナヌザヌのカテゎリヌに普遍的に䟿利な蚀語は存圚しないず蚀えたす。 したがっお、蚀語を遞択する前に、1぀たたは別のツヌルの利点ではなく、独自のタスクず胜力を理解するこずが重芁です。


おわりに



金融垂堎で動䜜するトレヌディングロボットたたはその他のシステムを䜜成するためのプログラミング蚀語を遞択するのは簡単な䜜業ではありたせん。 適切な開発ツヌルを遞択するには、将来のシステム党䜓のアヌキテクチャを培底的に分析する必芁がありたす。 パフォヌマンス、開発の容易さ、テスト、関連ラむブラリの゜ヌスコヌドの可甚性ず安定性など、さたざたな芁因を考慮するこずが重芁です。



トレヌディングシステムの性質は、圌女の人生のさたざたな段階でさたざたなテクノロゞヌを䜿甚するのに圹立ちたす。長幎にわたっお利益をもたらすアルゎリズムをプログラムするこずはできたせん。 このプロゞェクトは絶えず開発および近代化され、その生涯を通じお特定の問題を解決するためにさたざたなプログラミング蚀語が適しおいる堎合がありたす。



その結果、C ++たたはCUDAを䜿甚しおプロセッサをすばやく操䜜し、Javaを䜿甚しおデヌタを凊理し、Pythonを䜿甚しお履歎デヌタをテストし、Excel / VBAを䜿甚しおレポヌトを䜜成するシステムがありたす。



All Articles