Wininet.dll - как добиться высокой скорости получения данных из интернета при создании новостного советника - страница 2

 
Vitaly Muzichenko:

Если ли возможность вести торговлю без терминала

Торговлю где?

Если бы был открытый MT-API он был бы уже опубликован у каждого диллинг центра.
 
Igor Volodin:

Может уже где-то отвечали, но как насчет штатного WebSocketRequest в следующих версиях?

Поддерживаю! В терминале давно не хватает WebSocket для работы с соответствующими сервисами.

 
Igor Volodin:

Торговлю где?

1. С веб-сайта напрямую

2. С терминала отправляем запрос на веб-сервер, а оттуда в дилинг

3. С терминала под инвесторским паролем (предпочтительней)

 

Ну... торгуйте криптой ) У многих бирж есть маржинальная торговля.

Зачем вам эти диллинг центры.

 
Igor Volodin:

Ну... торгуйте криптой ) У многих бирж есть маржинальная торговля.

Зачем вам эти диллинг центры.

Нужен именно дилинг, терминал мт4 или мт5 - без разницы

Я и так торгую криптой, но сейчас нужен именно форекс 
 

Продублирую вопрос:

ПОДСКАЖИТЕ!

Если ли возможность вести полноценную торговлю:

1. С веб-сайта средствами POST-запросов?

2. С терминала под инвесторским паролем, но через POST-запросы с самописной панели?

Спасибо!

 
Renat Fatkhullin:
Коммуникационную систему запускаем уже.

Через один билд будет и рилтаймовый календарь в MQL5.

Ренат, подскажите пожалуйста как это будет реализовано.

К примеру будет единый сервер, с которого будет рассылаться календарь во все клиентские терминалы?

На сколько будет задержка? - Количество посредников передачи новостного пакета.

Этот сервис в реалтайме будет платный ?

 
Алексей Барбашин:

Поддерживаю! В терминале давно не хватает WebSocket для работы с соответствующими сервисами.

тоже хотелось бы подобный функционал!

 
Konstantin Efremov:

тоже хотелось бы подобный функционал!

Уже есть SocketXXX функции
 
Renat Fatkhullin:
Уже есть SocketXXX функции

Можно вас попросить привести пример, как создать соединение и обмен данными с сервером брокера binary.com с использованием данных функций?

Пример кода на C#, взят отсюда


using System;
using System.Text;
using System.Threading.Tasks;
using System.Net.WebSockets;
using System.Threading;
using System.Net;

namespace BinaryWSDemo
{
    class BinaryWS
    {
        private ClientWebSocket ws = new ClientWebSocket();
        private Uri uri = new Uri("wss://ws.binaryws.com/websockets/v3?app_id=1089");
            
        public async Task SendRequest(string data)
        {
                
                while(this.ws.State == WebSocketState.Connecting){};
            if (this.ws.State != WebSocketState.Open)
            {
                throw new Exception("Connection is not open.");
            }
            
            var reqAsBytes = Encoding.UTF8.GetBytes(data);
            var ticksRequest = new ArraySegment<byte>(reqAsBytes);

            await this.ws.SendAsync(ticksRequest,
                WebSocketMessageType.Text,
                true,
                CancellationToken.None);
            
            Console.WriteLine("The request has been sent: ");
            Console.WriteLine(data);
            Console.WriteLine("\r\n \r\n");

            
        }
        
        public async Task StartListen(){
                WebSocketReceiveResult result;
                while (this.ws.State == WebSocketState.Open){
                var buffer = new ArraySegment<byte>(new byte[1024]);
                    do
                    {
                        result = await this.ws.ReceiveAsync(new ArraySegment<byte>(buffer.Array), CancellationToken.None);

                        if (result.MessageType == WebSocketMessageType.Close)
                        {
                                Console.WriteLine("Connection Closed!");
                                break;
                        }
                        else
                        {
                            var str = Encoding.UTF8.GetString(buffer.Array, 0, result.Count);
                            Console.WriteLine("Received Data at: " + DateTime.Now);
                            Console.WriteLine(str);
                            Console.WriteLine("\r\n");
                        }

                    } while (!result.EndOfMessage);
                }
        }
        
        public async Task Connect(){
                Console.WriteLine("Prepare to connect to: " + this.uri.ToString());
                Console.WriteLine("\r\n");
                
                ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12 | SecurityProtocolType.Tls11;
                await ws.ConnectAsync(uri, CancellationToken.None);
                
                Console.WriteLine("The connection is established!");
                Console.WriteLine("\r\n");
        }

        static void Main(string[] args)
        {
            
                        string data = "{\"ticks\":\"R_100\"}";
            
                        var bws = new BinaryWS();
                        bws.Connect().Wait();
                        
                        bws.SendRequest(data).Wait();
                        bws.StartListen();
            
            Console.ReadLine();
        }
    }
}


#s3gt_translate_tooltip_mini { display: none !important; }
Code samples
  • developers.binary.com
Here is a code snippet that opens a websocket, and requests a stream of updates for the symbol . On receipt of each message, it outputs a message:
Причина обращения: