Websocket как сделать? - страница 14

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

Федор, ты немного не в ту сторону зарулил. Так не пойдет! Ты вчистую воспользовался кодом, который дал Володя. Твоя задача получить данные от вебсокета и передать аск и бид в mql! Пока мы только bid из полученных данных возвращали в mql, твоя задача вернуть всю структуру в mql и вывести информацию в журнал.

Ok. Сейчас попробую переделать
 
Алексей Барбашин:

Да, не умеет. Но эту проблему тоже можно обойти. Достаточно на последнем этапе, когда код отлажен, внедрить в шарповскую библиотеку DLLExport и все будет работать и с mt4.

не будет, я уже проверял 

или C++/CLI

или  Unmanaged Exports от Robert Giesecke - про статью, которую пишу

ЗЫ: возможно с помощью DLLExport будут работать простые методы return a + b; , не более, все что потребует инициализации .Net не работает, хотя.... буду рад примеру, всегда рад узнать что-нибудь новое

ЗЫЗЫ: нашел https://github.com/3F/DllExport , не пользовался, что то другое находил, но это та же фича

Please note again, the UnmanagedExports was created by Robert Giesecke. You need visit his page.

But this repository does not related to Robert and generally still being developed by GitHub/3F developer 

 

Почему-то возвращает нули.


 
Igor Makanu:

не будет, я уже проверял 

или C++/CLI

или  Unmanaged Exports от Robert Giesecke - про статью, которую пишу

ЗЫ: возможно с помощью DLLExport будут работать простые методы return a + b; , не более, все что потребует инициализации .Net не работает, хотя.... буду рад примеру, всегда рад узнать что-нибудь новое


работало.
надо внести правильные изменения в IL код.

Я делал свой exe, который вносил изменения после компиляции VS.
И тогда методы C# становятся видимы из C/MQL

плюс маршаллинг
Давно этим не пользовался

 
Vladimir Suslov:


работало.
надо внести правильные изменения в IL код.

Я делал свой exe, который вносил изменения после компиляции VS.
И тогда методы C# становятся видимы из C/MQL

Давно этим не пользовался

выше свой пост только что я обновил

это тот же код что я использую - код от Robert Giesecke

но там ничего не нужно править руками, основная проблема разобраться со сложными типами данными, вот только недавно обмен данными делал, выцарапал метод

  [DllExport("redismtset", CallingConvention = CallingConvention.StdCall)]
        public static void redismtset([MarshalAs(UnmanagedType.LPArray, SizeParamIndex = 1)] byte[] value, int sz, [MarshalAs(UnmanagedType.LPWStr)]string key)
        {
            byte[] tmp = new byte[sz];
            Array.Copy(value, 0, tmp,0, sz);
            if (dbExcPing()) DB.Set(key, tmp);
        }
//----
 [DllExport("redismtget", CallingConvention = CallingConvention.StdCall)]
        public static int redismtget([MarshalAs(UnmanagedType.LPWStr)]string key)
        {
           if (dbExcPing()) db_buffer_byte = DB.Get(key); else db_buffer_byte = null;
            return db_buffer_byte?.Length?? - 1;
        }
массив строк пробовал обрабатывать через StringBuilder , очень нестабильно все работает - забросил, ибо требует постоянного контроля за выделением памяти для буфера строк и в MQL4 и в .Net - в общем постоянный поиск когда что то перестанет работать )))
 
Алексей Барбашин:

Когда я пользовался тем методом там требовалось единожды внедрить DllExport и далее все методы можно было объявлять экспортными. Эта библиотека сама вносила необходимые изменения в код. Но с тех пор как МТ5 стал поддерживать шарп я перестал этим "баловаться".

кажется, вопрос был про МТ4?

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

Это не мудрено. Метод Dequeue() забирает запись из очереди. Ты пытаешься взять две записи и из каждой из них разные параметры. Ну во первых тебе никто не гарантирует что в очереди будет две записи на момент обращения ))

Переделал так.

MQL


Вообще теперь ничего не возвращает, т.к. добавил проверку

 
Igor Makanu:

выше свой пост только что я обновил

это тот же код что я использую - код от Robert Giesecke

но там ничего не нужно править руками, основная проблема разобраться со сложными типами данными, вот только недавно обмен данными делал, выцарапал метод

эта либа у меня не заработала (несколько лет назад) и я сделал свою.
Возможно, сейчас обновлена и работает.
Но принцип именно этот

 
Vladimir Suslov:

эта либа у меня не заработала (несколько лет назад) и я сделал свою.
Возможно, сейчас обновлена и работает.
Но принцип именно этот

она не работает на русскоязычной Вин

но точно будет работать без проблем если установить виртуальную машину + Вин 7 на англ. языке - выбрал при установке Вин язык, пробовал разными способами из установленной Вин7 на русском языке перейти на анг. - где то или в реестре или какая то папка остается русская, из за этого шаблон Robert Giesecke компилируется с предупреждениями и не будет работать экспорт .dll

ЗЫ: сохранил образ виртуальной машины 10 ГБ на жестком диске, теперь без проблем могу использовать шаблон Robert Giesecke

 
ребята, почему у меня нули возвращает? И очередь пустая?
Причина обращения: