È possibile sovrapporre le quotazioni di un altro broker in MT4? - pagina 4

 
getch >>:

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


Tutti scrivono in modo misterioso, come se sapessero qualcosa, ma sono silenziosi))))) e scrivono che non ci sono pesci)))) quindi forse dovreste dirlo agli utenti, così non perdono il loro tempo)
 
Lo fanno tutti. Non è vero?
 
zhuki >>:
Но открыться всё равно сложнее.Да и завершить хотелось бы положительно.

È tutto formalizzato.

 
getch >>:

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

Conosco il suo lavoro e ho grande rispetto per la sua ricerca. Grazie.

 

Hai provato a leggere non le quotazioni con l'Expert Advisor ma a leggere i pacchetti che arrivano alla porta. Per così dire al momento di riceverli da MT4.

Vedete, per aumentare la velocità.

 

Questo argomento è stato toccato in questo forum e ho promesso di provare a scrivere qualcosa di utile su di esso. Si è rivelato essere un nucleo universale di un Expert Advisor arbitrale. Non ho fatto altro sull'argomento.

Penso che il ritardo tra il terminale che riceve un tick e lo invia al trader sia vicino allo zero.

Sono stati suggeriti possibili miglioramenti. In realtà vedo l'argomento come interessante, ma non quando si risolve di petto.

 
getch >>:

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

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

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

Grazie, ho capito.

 
Fduch >>:

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

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

Se non ti dispiace, pubblica un esempio di codice. (Codice di esempio che ottiene le citazioni tramite i socket).

 
fevrall >>:

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

Sfortunatamente, è inutile senza il resto del codice =)

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

Solo per avere un'idea di cosa si intende esattamente per "resto del codice":


Ed è tutto molto inutile perché non ci sono situazioni di arbitraggio.

Getch, grazie. Aggiungerò un metodo per controllare i sintetici. Non ci avevo pensato...

 
Fduch >>:


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


Mi interessa l'idea stessa di ottenere preventivi tramite una presa. Grazie, darò un'occhiata più tardi.