是否可以在MT4中叠加其他经纪商的报价? - 页 4

 
getch >>:

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


每个人都写得那么神秘,好像他们知道些什么,但却沉默不语))))),他们写道,没有鱼)))),所以也许你应该告诉用户,让他们不要浪费时间)
 
每个人都是如此。你不觉得吗?
 
zhuki >>:
Но открыться всё равно сложнее.Да и завершить хотелось бы положительно.

这都是正式的。

 
getch >>:

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

我熟悉你的工作,对你的研究非常尊重。谢谢你。

 

你是否尝试过不要用专家顾问读取报价,而是读取进入端口的数据包。可以说是在MT4接收它们的时刻。

你看,为了提高速度。

 

这个话题在这个论坛上被触及,我承诺会尝试写一些有用的东西。事实证明,它是仲裁专家顾问的一个普遍核心。我没有在这个问题上做过其他事情。

我认为,终端接收tick和发送tick给交易者之间的延迟接近零。

已经提出了可能的改进。实际上,我认为这个话题很有意思,但在正面解决这个问题的时候,就不一样了。

 
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 >>:


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


我对通过插座获取报价的想法非常感兴趣。谢谢,我稍后会看一下。

原因: