問題タブ [algorithmic-trading]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
low-latency - 今日の最先端の HFT 取引システムはどのくらいの速さですか?
高頻度取引 (HFT) とそのアルゴリズムの速さについてよく耳にします。しかし、私は疑問に思っています - 最近何が速いのですか?
アップデート
取引所と取引アプリケーションを実行しているサーバーとの間の物理的な距離によって引き起こされるレイテンシーについては考えていませんが、プログラム自体によってもたらされるレイテンシーについては考えていません。
より具体的には、イベントがアプリケーションに送信されてから、そのアプリケーションが注文/価格を送信するまでの時間は? つまり、ティックからトレードまでの時間です。
サブミリ秒の話ですか?それともサブマイクロ秒?
人々はどのようにしてこれらのレイテンシーを達成するのでしょうか? アセンブリでコーディング?FPGA? 古き良き C++ コード?
アップデート
最近、ACM に関する興味深い記事が公開され、今日の HFT テクノロジについて多くの詳細が説明されています。
linux - 低遅延のための Linux シェル
私の調査によると、Linux は低遅延/高頻度の取引ソフトウェアでより多く使用されています。Linux でそのような種類のアプリケーションに使用されるシェルを知りたいだけです。Bashまたはkshまたはその他の?そして、特定のシェルの理由は何ですか?
これについてご協力いただきありがとうございます。
-ニシャント。
visual-studio-2010 - エディターからランタイム アプリケーションに C# コードを挿入し、Rosalyn スクリプト API を使用して評価する
ユーザーが実行中のシステム (シミュレーション/テスト モードの場合) に接続し、モデル/シグナルと戦略をその場でコード化できるように、自動取引システムの機能に取り組んでいます。現時点では、私はまだこれをいじっていて、Microsoft Rosallyn スクリプト API を使用してこれを行う方法を探しています。ユーザーは組み込みエディターでコードを記述し、それを取引システムに挿入して、その場でコンパイルおよび実行します。
Visual Studio をリンクして、ユーザーがエディターで C# コードを作成/検証し、ボタンをクリックしてコードを取引システムにリモートで転送し、Rosalyn スクリプト API を使用してその場で実行できるようにすることはできますか?
python - Python TA-Lib 抽象 API の使用法
TA-Libのモジュール ドキュメントと抽象固有のガイドを見てきましたが、抽象APIが正確に何をできるのか (およびその方法) についてはまだ不明です。具体的には、インディケータ値の状態を維持し、入力値の配列ではなく、個々の入力値から RSI を定期的に計算するカスタム インディケータをインスタンス化するPython コードの例を見たいと思います。
私が思い描いているのは、インジケーターに値をシーケンシャルに (利用可能になったときに) 渡す機能です。たとえば、700 項目の数の多い配列を維持して 5 分のローソク足で RSI を計算する代わりに (5 分ごとに)、ローソク足の終値を 5 分ごとに抽象的なインジケーター関数に渡し、状態から計算された 14 期間の RSI 値を出力することが可能です。これは、5 つの異なる時間枠で 9 つの異なる指標値を無期限かつ 24 時間追跡するアプリケーションにより適しています。
numpy 配列は 1 回限りの指標値配列を生成するのに便利ですが、TA-Lib オブジェクトが何らかの方法で指標の状態を維持する場合、進行中の指標計算を伴うライブ システムはより簡単に維持され、メモリ効率が向上します。これは抽象 API でできることですか?
そうでない場合は、抽象インジケーターへの入力として機能する (14 項目 - RSI 期間) のローテーション dequeを持つという代替手段があると思います。TA-Lib 抽象を介したカスタム データ型の実装のコード例をいただければ幸いです。
r - Rのボリンジャーバンド
R でボリンジャー バンド戦略をバックテストするのに問題があります。ロジックは、終値がアッパー バンドよりも大きい場合はショート ポジションを取り、平均を超えたときにポジションをクローズするというものです。また、終値が下限バンドよりも低い場合はロング ポジションを取り、平均値を超えたときにポジションをクローズします。これまでのところ、これは私が持っているものです:
bbands <- BBands(stock$Close, n=20,sd=2)
sig1 <- Lag(ifelse((stock$Close >bbands$up),-1,0))
sig2 <- Lag(ifelse((stock$Close <bbands$dn),1,0))
sig3 <- Lag(ifelse((stock$Close > bbands$mavg),1,-1))
sig <- sig1 + sig2
...ここで行き詰まっていsig3
ます。目的の結果を得るにはどうすればよいですか?
r - ループのR取引戦略のバックテスト
皆さん、R でトレーディング戦略のバックテスト コードを適切に構築する方法を学び始めたところです。最初の例として、t 日の終値が 50 より大きいときにインデックスをロングする非常に単純な戦略をテストしています。日移動平均. 終値が 50 日間の平均を下回った場合、ロング ポジションは売却されますが、戦略が完全にショートになることはなく、ロングまたはフラットになるだけです。
したがって、これを適切にテストするために、以下のネストされた if/else if ステートメントを使用してかさばる for ループをコーディングしました。これはあまり速く実行されません。速度を向上させる一般的な方法があるかどうか疑問に思っています。Rはベクトル化されているはずですが、コードをそのまま実行することはできません。
以下のように「データソート」と呼ばれるデータフレームがあり、毎日「シグナル」と「位置」の列を追加したいとします。そのため、日ごとに時間インデックス i を使用してループし、「信号」列と「位置」列を日ごとに埋めます。位置ベクトルは値 0 または 1 のみを取ることができ、信号は値 -1、0、1 のみを取ることができます。基本的な問題は、いつでも信号ベクトル値が前日の位置 t-1 に依存することです...これにより、操作をベクトル化することができなくなりますか、それとも私はその考えが間違っていますか?
アドバイスをいただければ幸いです。また、quantmod および quantstrat パッケージにはいくつかのバックテスト機能が含まれていることを認識しています...最終的にはこれらのパッケージが処理するにはシグナルが複雑になりすぎるため、自分で構築したいと思います。ありがとうございました。