¿Es posible superponer las cotizaciones de otro corredor en MT4? - página 4

 
getch >>:

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


Todos escriben tan misteriosamente, como si supieran algo, pero se callan))))) y escriben que no hay peces)))) así que tal vez debas decírselo a los usuarios, para que no pierdan el tiempo)
 
Todo el mundo lo hace. ¿No es así?
 
zhuki >>:
Но открыться всё равно сложнее.Да и завершить хотелось бы положительно.

Todo está formalizado.

 
getch >>:

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

Conozco su trabajo y tengo un gran respeto por sus investigaciones. Gracias.

 

Has probado a leer no las cotizaciones con el Expert Advisor sino a leer los paquetes que llegan al puerto. Por así decirlo en el momento de recibirlos por MT4.

Verás, para aumentar la velocidad.

 

Este tema se tocó en este foro y prometí intentar escribir algo útil al respecto. Resultó ser un núcleo universal de un Asesor Experto en arbitraje. No he hecho nada más sobre el tema.

Creo que el retardo entre la recepción de un tick por parte del terminal y su envío al operador es casi nulo.

Se han sugerido posibles mejoras. La verdad es que veo el tema interesante, pero no a la hora de resolverlo de frente.

 
getch >>:

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

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

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

Gracias. Lo tengo.

 
Fduch >>:

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

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

Si no te importa, publica un ejemplo de código. (Ejemplo de código que obtiene cotizaciones a través de sockets).

 
fevrall >>:

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

Desgraciadamente, es inútil sin el resto del código =)

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

Sólo para tener una idea de lo que se entiende exactamente por "resto del código":


Y todo ello es realmente inútil, ya que no hay situaciones de arbitraje.

Getch, gracias. Añadiré un método para comprobar los sintéticos. No lo había pensado...

 
Fduch >>:


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


Me interesa la idea de obtener cotizaciones a través de un enchufe. Gracias, echaré un vistazo más tarde.