記事「FX裁定取引:合成マーケットメーカーボット入門」についてのディスカッション

 

新しい記事「FX裁定取引:合成マーケットメーカーボット入門」はパブリッシュされました:

今日は私の最初の裁定取引ロボット、つまり合成資産向けの流動性プロバイダー(と言えるかどうかは微妙ですが)を見ていきます。現在、このボットは大規模な機械学習システムのモジュールとして実運用で使われていますが、クラウドから古いFX裁定取引ロボットを引っ張り出してきたので、これを確認し、現代でどのように活用できるか考えてみたいと思います。

私の考え方に革命が起きたのは2017年です。連続する痛い損失の後、私は大口投資家が実際にどのように取引しているのかを学び始めました。ここでいう大口投資家とは、YouTubeで「百万ドル稼いだ」と語る人々ではなく、銀行、ヘッジファンド、プロップファーム(自己勘定取引会社)などの本物の機関です。

そして気づいたのは、彼らは派手な指標戦略を使わないということです。彼らは数学的原理、リスク管理、裁定取引、マーケットメイク、その他市場メカニズムの根本的理解に基づくアプローチを実践しています。その時私は、大口投資家のように取引するか、取引をやめるかだと決心しました。

その後の3年間、私は機関投資家の手法を徹底的に学びました。インターマーケット相関、統計的裁定取引、アルゴリズム取引の世界に没頭し、PythonやMQLを駆使してプロトタイプシステムを作成しました。これらは大口投資家のアプローチを模倣しつつ、個人トレーダーの資金や技術的制約に適合させたものでした。

2020年1月、金融市場史上最も激動の時期の前夜に、Tris_Optimizedは誕生しました。これは、「個人トレーダーが機関投資家の戦略をどのように応用できるか」という問いへの私の答えです。

このEA(エキスパートアドバイザー)は、市場の動きを予測したり、テクニカル指標に依存したり、直感を必要とすることはありません。代わりに、3つの関連する通貨ペア間の潜在的な不均衡を数学的に計算し、その不均衡が発生した際に捉えられるように注文のグリッドを配置します。

5年間にわたる実際の市場での連続運用で、Tris_Optimizedはその有効性を証明しました。パンデミック、インフレの急騰、金利変動、地政学的危機を乗り越え、現在も安定した利益を生み出し続けています(コードのアイデアや実際のコードを夜通し見直すことの方が多く、実際に取引するのは稀ですが)。これは、途方もないリターンを約束するような奇跡的なシステムではなく、機関投資家の原則に基づく堅実なツールです。


作者: Yevgeniy Koshtenko

 

興味深いアプローチだ。最適化せずにそのままスタートした。バランスが保たれ、小さなステップで増加している。

お望みであれば、グリッドのクローズをスワップ形成前の終日に移動させることができます。現在、グリッドは取引開始時に閉じられます。あるいは、日次クローズをまったく使用しないこともできる。

複雑なソリューションを開発し、適用する余地があることは間違いない。

続ける!

 

その記事が英訳版で出てきたので、3月にロシア語の原文で何を見落としていたのだろうと思った。

それは素晴らしいゴミであることが判明した。;-)

 
Evgen Khenkin #:
最適化せずにそのままスタート。バランスは保たれている。
どれくらいのスピードでダウンしたのだろうか(笑)。
 


"最初のエントリー後にエクスポージャーを追加する際、3ペアのトライアングル全体を常に対称的にスケールするのか、それとも最大の不均衡を示す特定のペアのみにポジションを追加するのか?"


 
Ali Munene #:
まだ聞いている。
あきらめなさい!
 

それともデモ口座でしか 使えないボットの一つですか?

 

充填エラーが 発生した場合に修正されるコードは次のとおりです。

ファイル:
 
Stanislav Korotky #:
おとぎ話のようなナンセンスな 話だった

スタニスラフ、冗談やからかい抜きで聞きたいんだが、このおとぎ話のようなナンセンスな記事はどこにあるんだ?正直なところ、この記事の何が間違っているのか、深く掘り下げて理解したい!

失礼ながら、ウラジーミル。

 
MrBrooklin #:

スタニスラフ、冗談やからかい抜きで聞きたいんだが、この素晴らしいナンセンスはどこにあるんだ?正直なところ、私はこの記事の何が間違っているのか、突っ込んで完全に理解したい!

MT5がネッティングとヘッジ会計の口座を同等の権利でサポートしているという事実から始めましょう。提案されているシステムは、ヘッジに特化したものだが、その点については言及されていない。ネッティングでは、カウンター・オーダーによるカウンター・ポジションはすぐに損失に転落し始める。

第二に、クロスの相場の短期的な差を捉えるというアイデアは新しいものではありません(例えば、hrenfxやgetchの 作品から 始めることができます - 彼らは、MT4用ですが、本質は変わりませんし、ダイナミクスの市場画像の良いアイデアを与える)。瞬間の合成スプレッドのオンライン制御なしで開かれた保留中の注文の助けを借りてそれを行うことは無意味です。このような注文はすぐにすべてのペアのスプレッドの合計額のマイナスで始まり、この記事の著者は、いつかこのスプレッドよりもさらに引用符のブローカーの非効率性から待つことを期待してポジションを保持することを示唆している。注文のグリッドは、状況を変更しませんが、ちょうどあなたが利益のみを閉じて、浮動マイナスを蓄積し、損失を少し長く座ってすることができます。

第三に、この記事は証拠金の問題を完全に省略しており、仮に巨額の保証金を想像したとしても、グリッドがプラスでクローズするのを待つことができたとしたら、利益率はいくらになるのだろうか?

そして今、多くの間違いを伴う実際の実現について。例えば

// 日本円およびその他のエキゾチック通貨とのペアの調整
string quoteCurrency = StringSubstr(symbol, 3, 3);
if(quoteCurrency == "JPY" || quoteCurrency == "XAU" || quoteCurrency == "XAG")
   pointCost *= 100.0;

これはくだらない。MT5は通貨に関係なく正しいピップ値を返します。唯一のニュアンスは、FXの場合、ピップ値は口座通貨で返されますが、為替商品の場合、クォート通貨で返されるため、口座通貨への手動再計算が必要になるということです。しかし、この記事では重要ではありません。

次です。

   // 現在のバランスシートに基づく調整係数
   double equityRatio = accountBalance / BaseEquity;

口座全体ではなく、一部だけをExpert Advisorに割り当てたい場合、この関係は逆方向に書く必要があります。これで、口座が10000でベースに1000を割り当てた場合、Expert Advisorは口座が許容する全負荷の10倍のロットでオープンされることがわかりました。

テスト用にこのように変更しました(そうしないと証拠金不足のエラーがすぐに出てしまいます):

   // 現在のバランスシートに基づく調整係数
   double equityRatio = BaseEquity ? BaseEquity / accountBalance : 1.0;

この部分はそのままにしておいたが、ここは謎が多い:

   // 最適リスク調整ロットの計算
   double riskAmount = accountBalance * (RiskPercentage / 100.0);
   double calculatedLot = (riskAmount / 100.0) * equityRatio / (pointCost * basePrice);

RiskPercentageは正確にはパーセンテージなので、RiskPercentage/100はriskAmount変数に現物のお金の端数を与える。

しかし、その金額を割る魔法の100は何なのだろうか?ハードワイヤードのレバレッジなのだろうか?

また、なぜポイントあたりのコスト*価格で金額を割っているのだろうか?通常、リスクはストップロスの距離としてとらえられるが、グリッドがある以上、グリッドの距離をリスクの指標とするのが論理的だが、ここではそうではない。また、100はデフォルトではグリッド・ステップと等しくなく、グリッド・ステップはカスタマイズできることになっている。FXでは、証拠金計算式(これがそうである場合)は異なっており、天井から計算式を使って自分で計算しようとするのではなく、MT5のAPIを通じて要求するのが原則である。

さらに、私は手数料の計算でそのような編集をしなければならなかった - それは(0を与えた):

            double commission = PositionGetDouble(POSITION_COMMISSION);

となった(履歴はサイクルの開始時のポジションでフィルタリングされる):

            double commission = 0; // PositionGetDouble(POSITION_COMMISSION);
            for(int j = 0; j < HistoryDealsTotal(); j++)
            {
               commission += アウト料金はまだ請求されておらず、イン料金と等しいかもしれないので、 // 2倍する。
                 2 * (HistoryDealGetDouble(HistoryDealGetTicket(j), DEAL_COMMISSION)
                 + HistoryDealGetDouble(HistoryDealGetTicket(j), DEAL_FEE));
            }

詳細は省くが、異なるブローカーを扱うには、シンボルのプレフィックス/サフィックス入力を追加し、あらゆる場所の式に追加しなければならなかった。

編集と実験の結果、安定した予想どおりの排水を得ることができた。

Trade-Arbitrage
Trade-Arbitrage
  • 2009.11.27
  • www.mql5.com
Несливающая система2 - использование неэффективности рынка (котирования) для 100%-го извлечения прибыли - арбитраж.
 
Stanislav Korotky #:

まず、MT5がネッティング会計とヘッジ会計を対等な立場でサポートしているという事実から説明しよう。提案されているシステムは、ヘッジに特化したものだが、それについての言及はない。ネッティングでは、カウンター・オーダーからのカウンター・ポジションはすぐに損失で崩壊し始める......。


....修正と実験の後、私たちは安定した予想通りのドレインを得ることができた。

スタニスラフ、詳細な回答をありがとう。

ありがとう、ウラジミール。