É possível sobrepor as cotações de outro corretor na MT4? - página 4

 
getch >>:

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


Todos escrevem tão misteriosamente, como se soubessem de alguma coisa, mas estão em silêncio))))) e escrevem que não há peixe)))), então talvez você devesse contar aos usuários sobre isso, para que eles não percam seu tempo)
 
Todos o fazem. Você não?
 
zhuki >>:
Но открыться всё равно сложнее.Да и завершить хотелось бы положительно.

Tudo isso está formalizado.

 
getch >>:

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

Estou familiarizado com seu trabalho e tenho grande respeito por sua pesquisa. Obrigado.

 

Você já tentou ler não as citações com o consultor especializado, mas ler os pacotes que chegam ao porto. Por assim dizer, no momento de recebê-las pela MT4.

Veja, a fim de aumentar a velocidade.

 

Este tópico foi abordado neste fórum e eu prometi tentar escrever algo útil sobre ele. Acabou se tornando um núcleo universal de um consultor especializado em arbitragem. Eu não fiz mais nada sobre o assunto.

Acho que o atraso entre o terminal que recebe um tique e o envio ao comerciante é próximo de zero.

Possíveis melhorias foram sugeridas. Na verdade, eu vejo o tópico como interessante, mas não quando o resolvo de frente.

 
getch >>:

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

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

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

Obrigado, eu peguei.

 
Fduch >>:

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

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

Se você não se importa, poste um exemplo de código. (Exemplo de código que recebe citações através de soquetes).

 
fevrall >>:

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

Infelizmente, é inútil sem o resto do código =)

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

Apenas para ter uma idéia do que exatamente se entende por "resto do código":


E tudo isso é realmente inútil, pois não há situações de arbitragem.

Getch, obrigado. Vou acrescentar um método para verificar os sintéticos. Não tinha pensado nisso...

 
Fduch >>:


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


Estou interessado na própria idéia de obter citações através de uma tomada. Obrigado, darei uma olhada mais tarde.