Ошибки, баги, вопросы - страница 3590

 

Подскажите есть ли стандартная - не стандартная функция. для импорта экспорта JSON файл конфиг символа?

Искал в хелпе не нашел, поиском то же никак не найду по кодабазе.

Общая задача. Загружать кастом символы с бинанса. Параметры брать с подходящего бабит символа. И далее тестить стратегии.

С загрузкой М1 разобрался, вручную JSON импортнул. Но  для массовой загрузки разных кастом символов, писать с нуля JSON парсер, чтоб потом через функции ниже задавать параметры для кастом символа не хочется.

CustomSymbolSetInteger

Set the integer type property value for a custom symbol

CustomSymbolSetDouble

Set the real type property value for a custom symbol

CustomSymbolSetString

Set the string type property value for a custom symbol

CustomSymbolSetMarginRate

Set the margin rates depending on the order type and direction for a custom symbol

CustomSymbolSetSessionQuote

Set the start and end time of the specified quotation session for the specified symbol and week day

CustomSymbolSetSessionTrade

  


По идее если в терминале есть кнопка. на неё должна быть MQL5 функция.

Documentation on MQL5: Custom Symbols / CustomSymbolSetInteger
Documentation on MQL5: Custom Symbols / CustomSymbolSetInteger
  • www.mql5.com
Sets the integer type property value for a custom symbol. Parameters symbol_name [in]  Custom symbol name. property_id [in]  Symbol...
 

Добрый день

Хочу средствами MT5 достучаться до биржи Gate.io по протоколу WebSocket

В C# код у меня работает

using System.Net.WebSockets;
....

            ws = new ClientWebSocket();
            url = new Uri("wss://fx-ws.gateio.ws/v4/ws/usdt");
            source = new CancellationTokenSource();
...
        async Task Connect()
        {
            try
            {
                await ws.ConnectAsync(url, source.Token);
                isAtivConnect = true;
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex.ToString());
            }
        }

....
        async Task Ping()
        {
            try
            {
                var strPingPong = new Dictionary<string, object>()
                        {
                            { "time", Helpers.ToUnixTime(DateTime.Now) },
                            { "channel", "futures.ping" }
                        };
                string strToSend = JsonConvert.SerializeObject(strPingPong, Formatting.Indented);
                //Console.WriteLine(strToSend);
                ArraySegment<byte> bytesToSend =
                new ArraySegment<byte>(Encoding.UTF8.GetBytes(strToSend));
                //Console.WriteLine("Send Ping");
                try
                {
                    await ws.SendAsync(bytesToSend, WebSocketMessageType.Text,
                                         true, source.Token);
                }
                catch (Exception ex)
                {
                    Console.WriteLine(ex.ToString());
                }
                Console.WriteLine("Send Ping done");
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex.ToString());
            }
        }

В настройках Mt5 добавил адрес

Взял пример из документации по WebSocket

вставил свой адрес и порт 443

вставил свою строку которая отправляется в C#

Соединяюсь и отправляют запрос на Ping

В логе получается вот так

2024.11.12 12:49:53.910 GateWeb (EURUSDrfd,H1)  Установлено подключение к wss://fx-ws.gateio.ws/v4/ws/usdt:443
2024.11.12 12:49:53.910 GateWeb (EURUSDrfd,H1)  Сертификат TLS:
2024.11.12 12:49:53.910 GateWeb (EURUSDrfd,H1)     Владелец:  /CN=*.gateio.ws
2024.11.12 12:49:53.910 GateWeb (EURUSDrfd,H1)     Издатель:  /C=US/O=Amazon/CN=Amazon RSA 2048 M03
2024.11.12 12:49:53.910 GateWeb (EURUSDrfd,H1)     Номер:     08:1b:46:47:cc:41:a1:d0:72:9d:70:60:33:a0:cb:24
2024.11.12 12:49:53.910 GateWeb (EURUSDrfd,H1)     Отпечаток: fd938f52f6279021b97a2f23ea89c27a59043e2a
2024.11.12 12:49:53.910 GateWeb (EURUSDrfd,H1)     Истечение: 2025.09.12 23:59:59
2024.11.12 12:49:53.910 GateWeb (EURUSDrfd,H1)  {
2024.11.12 12:49:53.910 GateWeb (EURUSDrfd,H1)    "time": 1731414299,
2024.11.12 12:49:53.910 GateWeb (EURUSDrfd,H1)    "channel": "futures.ping"
2024.11.12 12:49:53.910 GateWeb (EURUSDrfd,H1)  }

...
2024.11.12 12:49:53.911 GateWeb (EURUSDrfd,H1)  GET-запрос отправлен
2024.11.12 12:49:54.184 GateWeb (EURUSDrfd,H1)  Получен заголовок HTTP ответа:
2024.11.12 12:49:54.184 GateWeb (EURUSDrfd,H1)  HTTP/1.1 400 Bad Request
2024.11.12 12:49:54.184 GateWeb (EURUSDrfd,H1)  Server: awselb/2.0
2024.11.12 12:49:54.184 GateWeb (EURUSDrfd,H1)  Date: Tue, 12 Nov 2024 09:49:52 GMT
2024.11.12 12:49:54.184 GateWeb (EURUSDrfd,H1)  Content-Type: text/html
2024.11.12 12:49:54.184 GateWeb (EURUSDrfd,H1)  Content-Length: 122
2024.11.12 12:49:54.184 GateWeb (EURUSDrfd,H1)  Connection: close


Проверял побайтно буферы что уходят в запросе.

Идентичные.

Подскажите в чем проблема у меня или терминала

Файлы:
GateWeb.mq5  11 kb
 
Alexey Klenov #:

Добрый день

Хочу средствами MT5 достучаться до биржи Gate.io по протоколу WebSocket

В C# код у меня работает

В настройках Mt5 добавил адрес

Взял пример из документации по WebSocket

вставил свой адрес и порт 443

вставил свою строку которая отправляется в C#

Соединяюсь и отправляют запрос на Ping

В логе получается вот так


Проверял побайтно буферы что уходят в запросе.

Идентичные.

Подскажите в чем проблема у меня или терминала

Непосредственно в MetaTrader нету WebSocket :-)

глубоко технически: Ошибка возникает потому-что gate.io ожидает запроса upgrade до WS, а вы ему суёте http-get :-)

если у вас работает всё на C# так и используйте то что работает из MQL. 

 
Maxim Kuznetsov #:

Непосредственно в MetaTrader нету WebSocket :-)

глубоко технически: Ошибка возникает потому-что gate.io ожидает запроса upgrade до WS, а вы ему суёте http-get :-)

если у вас работает всё на C# так и используйте то что работает из MQL. 

Вот тут статья,

https://www.mql5.com/ru/articles/8196

пробовал и по ней

вот такой скрипт

//+------------------------------------------------------------------+
//|                                                      GateWSS.mq5 |
//|                                  Copyright 2021, MetaQuotes Ltd. |
//|                                             https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2021, MetaQuotes Ltd."
#property link      "https://www.mql5.com"
#property version   "1.00"

#include<WebSocketClient.mqh>

input string Address="wss://fx-ws.gateio.ws/v4/ws/usdt";
input int    Port   =443;
input bool   ExtTLS =true;
input int    MaxSize=256;
input int Timeout=1000;



CWebSocketClient wsc;
//CFrame result[];
//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
void OnStart()
  {
//---
   wsc.SetMaxSendSize(129); // max size in bytes set
   if(wsc.Connect(Address,Port,Timeout,ExtTLS,true))
     {
      Print("Connect");
     }
  }
//+------------------------------------------------------------------+

В логе есть запрос на Upgrade

Но по итогу лог получается вот такой

2024.11.12 16:50:44.093 GateWSS (EURUSDrfd,H1)  [Connecting to wss://fx-ws.gateio.ws/v4/ws/usdt][Line: 185][Function: CSocket::Open]
2024.11.12 16:50:45.069 GateWSS (EURUSDrfd,H1)  [GET //fx-ws.gateio.ws/v4/ws/usdt HTTP/1.1
2024.11.12 16:50:45.069 GateWSS (EURUSDrfd,H1)  Host: wss://fx-ws.gateio.ws/v4/ws/usdt
2024.11.12 16:50:45.069 GateWSS (EURUSDrfd,H1)  Upgrade: websocket
2024.11.12 16:50:45.069 GateWSS (EURUSDrfd,H1)  Connection: Upgrade
2024.11.12 16:50:45.069 GateWSS (EURUSDrfd,H1)  Sec-WebSocket-Key: zeturQMg7xFrUburL42OKw==
2024.11.12 16:50:45.069 GateWSS (EURUSDrfd,H1)  Sec-WebSocket-Version: 13
2024.11.12 16:50:45.069 GateWSS (EURUSDrfd,H1)  
2024.11.12 16:50:45.069 GateWSS (EURUSDrfd,H1)  ][Line: 226][Function: CWebSocketClient::upgrade]
2024.11.12 16:50:45.069 GateWSS (EURUSDrfd,H1)  [Sending to wss://fx-ws.gateio.ws/v4/ws/usdt][Line: 310][Function: CSocket::Send]
2024.11.12 16:50:45.069 GateWSS (EURUSDrfd,H1)  [Is Socket Readable ][Line: 238][Function: CSocket::Readable]
2024.11.12 16:50:45.069 GateWSS (EURUSDrfd,H1)  [Is Socket Readable ][Line: 238][Function: CSocket::Readable]
2024.11.12 16:50:45.070 GateWSS (EURUSDrfd,H1)  [Is Socket Readable ][Line: 238][Function: CSocket::Readable]
2024.11.12 16:50:45.071 GateWSS (EURUSDrfd,H1)  [Is Socket Readable ][Line: 238][Function: CSocket::Readable]
.....
2024.11.12 16:50:45.343 GateWSS (EURUSDrfd,H1)  [Reading from wss://fx-ws.gateio.ws/v4/ws/usdt][Line: 285][Function: CSocket::Read]
2024.11.12 16:50:45.343 GateWSS (EURUSDrfd,H1)  [Is Socket Readable ][Line: 238][Function: CSocket::Readable]
2024.11.12 16:50:45.343 GateWSS (EURUSDrfd,H1)  [Reading from wss://fx-ws.gateio.ws/v4/ws/usdt][Line: 285][Function: CSocket::Read]
2024.11.12 16:50:45.343 GateWSS (EURUSDrfd,H1)  [Is Socket Readable ][Line: 238][Function: CSocket::Readable]
2024.11.12 16:50:45.343 GateWSS (EURUSDrfd,H1)  [Reading from wss://fx-ws.gateio.ws/v4/ws/usdt][Line: 285][Function: CSocket::Read]
2024.11.12 16:50:45.343 GateWSS (EURUSDrfd,H1)  [HTTP/1.1 400 Bad Request
2024.11.12 16:50:45.343 GateWSS (EURUSDrfd,H1)  Server: awselb/2.0
2024.11.12 16:50:45.343 GateWSS (EURUSDrfd,H1)  Date: Tue, 12 Nov 2024 13:50:44 GMT
2024.11.12 16:50:45.343 GateWSS (EURUSDrfd,H1)  Content-Type: text/html
2024.11.12 16:50:45.343 GateWSS (EURUSDrfd,H1)  Content-Length: 122
2024.11.12 16:50:45.343 GateWSS (EURUSDrfd,H1)  Connection: close
2024.11.12 16:50:45.343 GateWSS (EURUSDrfd,H1)  
2024.11.12 16:50:45.343 GateWSS (EURUSDrfd,H1)  ][Line: 267][Function: CWebSocketClient::upgrade]
2024.11.12 16:50:45.343 GateWSS (EURUSDrfd,H1)  [eg2IpE4o5d7R1Ji2mMSA5ciZVDI=][Line: 288][Function: CWebSocketClient::upgrade]
2024.11.12 16:50:45.343 GateWSS (EURUSDrfd,H1)  [Socket Disconnected from wss://fx-ws.gateio.ws/v4/ws/usdt][Line: 218][Function: CSocket::Close]
 
Alexander Bykov #:
Подарите кто-нибудь vps на 1 день...

Гляньте в личку

 

Меняли ли что-то в  стандартном rand () последнее время? Уж больно сильно он стал быстрым, практически не наблюдается отставания от самых быстрых генераторов.

Вот результаты 1e8 запусков генераторов:

rand: 49994534.82247627 622ms
lcg: 49997782.38364048 614ms
xor32: 49997232.20708256 615ms

 
Вопрос знающим:
Есть ли возможность открыть программно окно свойств индикатора или советника?
 
Nikolai Semko #:
Вопрос знающим:
Есть ли возможность открыть программно окно свойств индикатора или советника?

Давным-давно смотрел коды открывающие различные окна терминала МТ4. Возможно и это было там. Писал их кажется «колдун злой».

 
Nikolai Semko #:
Вопрос знающим:
Есть ли возможность открыть программно окно свойств индикатора или советника?

нет.

в смысле что без DLL или обращений к WinAPI сие невозможно

 
Понял
Спасибо!