記事「MQL5でマーケットメイク系アルゴリズムを作成する」についてのディスカッション

 

新しい記事「MQL5でマーケットメイク系アルゴリズムを作成する」はパブリッシュされました:

マーケットメーカーはどのように機能するのでしょうか。この問題を考えて、原始的なマーケットメイク系アルゴリズムを作ってみましょう。

多くの人は、マーケットメーカーはまったくリスクを負わないと考えています。しかし、これはそうではありません。マーケットメーカーの主なリスクは在庫リスクです。このリスクは、ポジションが一方向に急激に動く可能性があり、そのポジションをオフロードしてスプレッドで稼ぐ能力がないことにあります。例えば、熱狂的な群衆がある資産を売ると、マーケットメーカーは全供給を買い取ることを余儀なくされます。その結果、価格はマイナスになり、MMは損失を被ります。 

企業は、特別なスプレッド中心方程式を使い、売買の最適価格を決定することで、このリスクを回避しようとしています。しかし、これは必ずしも実現可能なことではありません。たとえ価格が最適でなかったとしても、MMの仕事は市場に流動性を供給することであり、たとえ一時的に赤字であったとしても、この仕事をこなさなければなりません。 

作者: Yevgeniy Koshtenko

 

ユージン、記事をありがとう!為替市場に関する私の知識のパズルの多くのギャップがほぼ完全に埋まりました。

1つだけ微妙な点があります。記事の読者の中には、テストする通貨ペアに接尾辞や接頭辞が ある場合、ストラテジーテスターで ExpertAdvisorを起動しない 人が いるかもしれません 。この点を考慮し、Expert Advisorのパラメータ設定で指定する必要があります。

でも、これですべて解決です!

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

 
MrBrooklin #:

ユージン、記事をありがとう!為替市場に関する私の知識のパズルの隙間の多くが、ほぼ完全に埋まりました。

1つだけ微妙な点があります。記事の読者の中には、テスト対象の通貨ペアに接尾辞や接頭辞が ある場合、ストラテジーテスターで ExpertAdvisorを起動しない 人が いるかもしれません 。この点を考慮し、Expert Advisorのパラメータ設定で指定する必要があります。

そうでなければ、すべてがスーパーです

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

ありがとうございました!私は別のブローカーの接頭辞で明日チェックします。何かあれば、追記します。)

 

ユージン、昨日は記事のテキスト部分に興味があったので、Expert Advisor のコードをよく見ていませんでした:

//+------------------------------------------------------------------+
//||
//+------------------------------------------------------------------+
int CountOrders(string symb,ENUM_ORDER_TYPE type)
  {
   int count=0;

   for(int i=OrdersTotal()-1; i>=0; i--)
     {
      if(OrderSelect(OrderGetTicket(i)))
        {
         if(OrderGetInteger(ORDER_TYPE)==type && PositionGetString(POSITION_SYMBOL)==symb && PositionGetInteger(POSITION_MAGIC)==Magic)
            count++;
        }
     }
   return(count);
  }

あなたの警告にはすぐに注意を払いました。以下は、未決済の注文と未決済のポジションを カウントする関数です。CountOrdersとCountTradesは、マジックEA番号を考慮に入れて、特定のシンボルの未決済注文とポジションをカウントします。これらはまだコードでは使われていませんが、将来のバージョンで、リミット間のスプレッドを中心に置く通常の関数を書くときに使う予定です。

しかし、私はよく理解していません - それはあなたの考えですか、それとも違うものですか?

ウラジミール、よろしく。

 
MrBrooklin 未決済のポジションを カウントする関数です。CountOrdersとCountTradesは、マジックEAナンバーを考慮して、特定のシンボルの未決済注文とポジションをカウントします。これらはまだコードでは使われていませんが、将来のバージョンで、リミット間のスプレッドを中央に置くための通常の関数を書くときに使う予定です。

しかし、よく理解できないのですが、これはあなたのアイデアなのでしょうか、それとも違うものなのでしょうか?

ウラジミール、よろしく。

そうでなければ、Expert Advisorはそのマジシャンの注文を他のものと混同し始める可能性があります)Symbは将来Expert Advisorの多通貨バージョンを作るつもりです。私はまだそれを作ることができませんでした))))

 
Yevgeniy Koshtenko #:

そうしないと、EAがそのマジシャンの注文を他のものと混同し始める可能性があるからです)共生によって、将来的にはEAの多通貨バージョンを作るつもりです。私はまだそれを作ることができませんでした))))

注文に関しては問題ないのですが、なぜこの機能でシンボルとマジックのポジションがチェックされるのでしょうか?))

よろしく、ウラジミール。

 

これは記事ではなく、MQの恥だ。どうしてこのようなものが公表されることが許されるのでしょうか?

//+------------------------------------------------------------------+
//||
//+------------------------------------------------------------------+
int CountTrades(string symb)
  {
   int count=0;

   for(int i=PositionsTotal()-1; i>=0; i--)
     {
      if(PositionSelectByTicket(PositionGetTicket(i)))
        {
         if(PositionGetString(POSITION_SYMBOL)==symb && PositionGetInteger(POSITION_MAGIC)==Magic)
           {
            count++;
           }
        }
     }
   return(count);
  }

PositionGetTicket(i)の説明書によると、「この関数は、オープンポジションの リスト内のインデックスによってポジションのチケットを返し、そのポジションでさらなる作業を行うために、このポジションを自動的に選択する...」とのことです。また、ポジションがすでに選択されているのに、なぜPositionSelectByTicket 関数を使ってチケットでポジションを選択するのでしょうか?新参者にやってはいけない方法を教えているのですか?

ウラジミールの発言は極めて妥当です。そして、あなたの回答はそのことについては全く関係ありません... オーダーを扱うのに、なぜシンボルとPOSITION マジックをチェックするのですか?

 

コードは別として、テキスト部分も気に入らなかった。

くだらない、ただの紙切れだ。

興味深いトピックであることは間違いない。

どんなマーケットメイキングをするのか、何の意味があるのか。

作者にマトリックスが欠如しているから、作れなかったのは事実である。

で、世の中にはたくさんある。

少なくともあと......10年は考える必要がある。

手始めとして、そして改善する方法として、私はこれを支持する。

 

Renat Akhtyamov #:

どんなマーケット・メイキングを作るのか、何の意味があるのか。

筆者に必要なマトリクスが欠けていたため、作成できなかったのは事実である

記事を 斜め読みするのではなく、最初から最後まで、つまり完全に読むべきだ。そうすれば、そのような疑問は生じない。

PositionSelectByTicket() 関数を使わずにすでにチケットが選択されているときにPositionSelectByTicket() 関数を 使うことについてのアレクセイ・ヴィクトロフ氏の批判には完全に同意 します。ところで、私自身はそのことに注意を払っていませんでした。

いずれにせよ、記事に感謝する!

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

 
MrBrooklin #:

記事を 斜め読みするのではなく、最初から最後まで、つまり完全に読めば、そのような疑問は生じない。

PositionSelectByTicket ()関数を使わずにすでにチケットが選択されているときに PositionSelectByTicket ()関数を使うことについてのAlexey Viktorov氏の批判には完全に同意します。ところで、私自身はそのことに注意を払っていませんでした。

しかし、とにかく記事に感謝します!

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

チケットを選択するのではなく、ポジションを選択し、対応する関数によってそのプロパティを操作します。

 
Alexey Viktorov #:

チケットが選択されるのではなく、ポジションが選択され、適切な関数を通じてそのプロパティを操作する。

アレクセイさん、ご説明ありがとうございます。))私がメッセージを書いたとき、同じドキュメント(黄色でハイライト)を参照しました:

Функция возвращает тикет позиции по индексу в списке открытых позиций и автоматически выбирает эту позицию для дальнейшей работы с ней 
при помощи функций PositionGetDouble, PositionGetInteger, PositionGetString.

ulong  PositionGetTicket(
   int  index      // 項目リストの番号
   );

Параметры

index

[in]  Индекс позиции в списке открытых позиций, начиная с 0.

Возвращаемое значение

Тикет позиции. В случае неудачного выполнения возвращает 0.

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