MT4で他のブローカーの相場を重ねることは可能ですか? - ページ 4

 
getch >>:

Спреды в теории арбитража не при чем.


みんな何か知ってるような謎の書き込みをしてるけど黙ってる)))魚がいないって書いてる)))だからユーザーに教えてあげた方が無駄がないのでは?)
 
みんなそうです。そうでしょう?
 
zhuki >>:
Но открыться всё равно сложнее.Да и завершить хотелось бы положительно.

すべて形式化されています。

 
getch >>:

Это все формализовано.

私はあなたの仕事をよく知っていますし、あなたの研究に大きな敬意を抱いています。ありがとうございます。

 

Expert Advisorでクォートを読むのではなく、ポートに来るパケットを読んでみてください。いわば、MT4で受信した瞬間に。

ほら、速度を上げるためにね。

 

この話題はこのフォーラムでも触れられていて、何か役に立つことを書いてみようと約束したのです。それは、仲裁エキスパートアドバイザーの普遍的な核心であることが判明したのです。この件に関しては、もう何もしていない。

端末がティックを受信してからトレーダーに送信するまでの遅延は、ほぼゼロに近いと思うのですが。

改善の可能性が示唆されています。実は、このテーマは面白いと思っているのですが、正面から解決するとそうはいきません。

 
getch >>:

Эта тема была затронута на этом форуме и пообещал попробовать что-то дельное по ней написать. Получилось универсальное ядро арбитражного советника. Больше ничего на тему не делал.

Думаю, что задержка между получением тика терминалом и отправкой его трейдеру близка к нулю.

Возможные доработки высказывал. Тему на самом деле вижу интересной, но не при решении в лоб.

ありがとうございます、わかりました

 
Fduch >>:

Саму программу не смотрел, я писал собственную реализацию (приложение на c#, которое принимает через сокеты котировки и рассылает приказы терминалам).

Да и вопрос не в реализации, а в применении на практике. Пар ДЦ, подходящих для арбитража, я так до сих пор и не встретил.

差し支えなければ、コード例を投稿してください。 (ソケット経由で引用符を取得するコード例)。

 
fevrall >>:

Если не сложно выложите пример кода. (Пример кода, котрый получает котировки через сокеты).

残念ながら、残りのコードがなければ使い物になりません =)。

言語はc#です。

        /// <summary>
        /// Метод обработки входящих соединений
        /// </summary>
        public override void ProceedSocket( object objSocket)
        {
            string dealingCenterName = "";
            Socket socket = ( Socket) objSocket;
            #region ProcessingSocket
            {
                #region GetMessage
                string incomingMessage = "";
                byte[] buffer = new byte[10000];
                Console. WriteLine("Recieving data from socket..");
                int recieved = 0;
                while (( recieved = socket. Receive( buffer)) != 0)
                {
                    Console. WriteLine("Recieved "+ Convert. ToString( recieved));
                    string str = "";
                    for (int k = 0; k < buffer. Length; k++)
                        str = str + Convert. ToChar( buffer[ k]);
                    incomingMessage = incomingMessage + str;
                    if ( str. Contains("\r\n\r\n") == true)
                        break;
                }
                #endregion

                lock ( DealingCentersDictionary)
                {
                    #region UpdateMarketsInfo
                    // Обновляем инфу в ServerMarketInstruments
                    string[] instruments = incomingMessage. Split("\r\n". ToCharArray());
                    // Выбирам дилинговый центр
                    dealingCenterName = instruments[0];
                    Console. WriteLine("Proceeding " + dealingCenterName + " socket");
                    if ( DealingCentersDictionary. ContainsKey( dealingCenterName) == false)
                        DealingCentersDictionary. Add( dealingCenterName, new Market());
                    Market CurrentDCInstruments = DealingCentersDictionary[ dealingCenterName];
                    // Обновляем котировки
                    for (int k = 1; k < instruments. Length; k++)
                    {
                        string s = instruments[ k];
                        string[] data = s. Split(';');
                        if ( data. Length == 3 && data[0] != "" && data[1] != "" && data[2] != "")
                        {
                            string ticket = data[0];
                            double ask = Convert. ToDouble( data[1]. Replace(".", ","));
                            double bid = Convert. ToDouble( data[2]. Replace(".", ","));
                            if ( CurrentDCInstruments. Instruments. ContainsKey( ticket) == false)
                            {
                                CurrentDCInstruments. Instruments. Add( ticket, new Instrument());
                            }
                            CurrentDCInstruments. Instruments[ ticket]. CurrentState.Ask = ask;
                            CurrentDCInstruments. Instruments[ ticket]. CurrentState.Bid = bid;
                        }
                    }
                    #endregion
                }

                #region Answer
                byte[] byteAnswer = new byte[300];
                socket. Send( byteAnswer);
                #endregion
            }
            #endregion
            socket.Close();
            Console. WriteLine("Closed " + dealingCenterName + " socket");
        }

ただ、「残りのコード」というのが具体的にどういう意味なのか、イメージしておいてください。


しかも、仲裁の場面もないので、本当に無駄なことばかりです。

ゲッチ、ありがとう。合成樹脂をチェックする方法を追加します。思いつかなかったな...。

 
Fduch >>:


И все это действительно бесполезно, т.к. арбитражных ситуаций нет.


ソケットで見積もりを取るという発想そのものに興味があります。ありがとうございます、後で見てみます。