- отправка на api.binaryteam.ru из индикатора после алерта
- MqlTick
- Вопросы от начинающих MQL5 MT5 MetaTrader 5
А в чем собственно проблема? Не умеете преобразовывать структуру в массив uchar?
по сей видимости не умею , я даун. если можно пример?
Необходимо использовать явный кастинг:
struct MqlTickChar { char array[sizeof(MqlTick)]; }; //+------------------------------------------------------------------+ //| Script program start function | //+------------------------------------------------------------------+ void OnStart() { // Преобразуем MqlTick в набор байтов (хранится в массиве tick_char.array) MqlTick tick = {0}; MqlTickChar tick_char; tick_char = (MqlTickChar)tick; // Преобразуем набор байтов в MqlTick tick = (MqlTick)tick_char; }
Необходимо использовать явный кастинг:
struct MqlTickChar { char array[sizeof(MqlTick)]; }; MqlTickChar tick_char;на все остальное выдает ошибки . проще написать dll для QLocalSocket
спасибо большое , из увиденного я понял только на все остальное выдает ошибки
Правильно выдаёт. Ни в структуре MqlTick, ни в структуре MqlTickChar нет ни конструкторов копирования, ни перегрузки оператора "=", поэтому присвоение вида tick_char = (MqlTickCharr)tick (или наоборот) не сработает.
Чёт тоже не могу придумать, как это сделать. Функции StructToCharArray в МКЛ нет. Функции memcpy() тоже нет. Прямого доступа к памяти через указатели - тоже. Единственное, что пришло в голову - записать MqlTick в файл или пайп, а потом оттуда считать побайтово как char[]. Но это хардкор, да. ) А вот как по-простому...
Правильно выдаёт. Ни в структуре MqlTick, ни в структуре MqlTickChar нет ни конструкторов копирования, ни перегрузки оператора "=", поэтому присвоение вида tick_char = (MqlTickCharr)tick (или наоборот) не сработает.
Чёт тоже не могу придумать, как это сделать. Функции StructToCharArray в МКЛ нет. Функции memcpy() тоже нет. Прямого доступа к памяти через указатели - тоже. Единственное, что пришло в голову - записать MqlTick в файл или пайп, а потом оттуда считать побайтово как char[]. Но это хардкор, да. ) А вот как по-простому...
Никаких ошибок код не выдает и не должен, поскольку в приводимых структурах только базовые типы - их можно кастить без всяких копи-конструкторов.
Мне другое не понятно - на кой фиг передавать через WebRequest именно в бинарном виде? HTTP-запрос отлично работает со строками и даже больше приспособлен для текста, а бинарные данные в нем нужно по-любому упаковывать.
А я и не проверил. Действительно, не выдаёт. Опростоволосился. Ну, тогда и проблемы нет.
Мне другое не понятно - на кой фиг передавать через WebRequest именно в бинарном виде? HTTP-запрос отлично работает со строками и даже больше приспособлен для текста, а бинарные данные в нем нужно по-любому упаковывать.
Так задача и стояла преобразовать структуру в массив символов. Или вы имеете в виду, что поля структуры (дату и цены) передать просто как текст вида "01.09.2016 20:23:23, 1.2343, ...", а на стороне приёмника этот текст парсить? Лишние же операции. Зачем?
Так задача и стояла преобразовать структуру в массив символов. Или вы имеете в виду, что поля структуры (дату и цены) передать просто как текст вида "01.09.2016 20:23:23, 1.2343, ...", а на стороне приёмника этот текст парсить? Лишние же операции. Зачем?
Для http-запросов самым простым было бы посылать данные в url или через post payload (в том числе json-ом). Бинарные же данные нужно пихать в base64/BSON/protobuf. В каком случае будет больше "лишних" операций - я б не взялся утверждать. А вы уверены, что бинарное представление в MQL совпадет с бинарным представлением на сервере (который может быть разным в принципе)? Нужен протокол обмена, он подразумевает кодирование на одном конце и декодирование на другом.
простые структуры (не содержащие внутри дин.массивов или строк) упаковываются с pack(1), то есть без прогалов, в хостовом порядке байт. То есть вываливаются в сеть (передаются в dll, преобразуются в char.array) как есть. То есть Mql структуры практически один-в-один переводятся в С-шные.
Извращаться с внешними запросами/ответами/протоколами imho лучше в DLL :-) WebRequest штука удобная, но не когда задержки становятся критичными..Прочесть раз в час/день что-то с сайта, иногда отослать торговый результат - это да, это стезя WebRequest. А постоянно читать/транслировать торговые сигналы и котировки в реальном времени - точно нет.
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования