Возможно ли в МТ4 одного ДЦ наложить котировки другого ? - страница 4

 
getch >>:

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


Все так загадочно пишут, как будто что то знают, но молчат))))) и они же пишут что рыбы нет))) так может размусолить юзирем чтоб время не тратили)
 
А все и знают . А вы разве нет?
 
zhuki >>:
Но открыться всё равно сложнее.Да и завершить хотелось бы положительно.

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

 
getch >>:

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

Я знаком с Вашими работами и очень уважаю Ваши изыскания. Спвсибо.

 

В связи с этим ответьте .А вы не пробовали прочитать не котировки с помощью эксперта, а читать сразу пакеты приходящие на порт. Так сказать на момент получения их МТ4.

Понимаете, что для увеличения скорости.

 

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

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

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

 
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");
        }

Чтобы было представление что именно подразумевается под "остальным кодом":


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

Getch, спасибо. Добавлю метод для для проверки синтетики. Не думал о ней..

 
Fduch >>:


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


Мне интересна сама идея получения котировок через сокет. Спасибо, посмотрю чуть позже.