Jump to content

C# for the MT5?


postscreen

Recommended Posts

postscreen

Сложилась ситуация, когда есть визуальная среда Microsoft Visual Studio 2019, Community. Само собой ее средства связи и являются исчерпывающим что мне доступно. Есть потребность в максимально простом, доступном способе получения тиков в реальном времени. Ну то есть расчетном времени, при регулярных сверках.

 

Однако ничего простого я до сих пор не видел, сам же MT5 в изобилии снабжен совершенно другими средствами, но до того чем пользуюсь я дотягивает с трудом. Однако, не теряя пока надежды сделать все попроще ... Ну то есть казалось бы установил распространенный MT5, подключился и все ... Работает он стабильно, что скажешь, но вот со средствами связи как то нет ясности ...

 

Что делать? Просьба писать в духе:


Средства C#:

Цитата

 

using System.Web;
using System.Net.Http;

HttpClient AccountsOfIG = new HttpClient();

 

 

Средства MT5:

Цитата

Тут загадка ...

 

Link to post
Share on other sites
Ugar68

Можно использовать файлы. Но для котировок это не очень. Лучше именованные каналы.

Есть пару статей на эту тему у метаквотов, может помогут.

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

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


Пишу советники и индикаторы по вашим алгоритмам. Пишите в личку.
Чужие программы не переделываю.

Link to post
Share on other sites
postscreen
24 минуты назад, Ugar68 сказал:

Можно использовать файлы.

А можно поподробнее, мне очевидным кажется только писать для MT, после эти файлы читать ... Иного просто не вижу.

p.s. Остальное почитаю, спасибо, название правда первый раз слышу такое. Прочитал цели ... стало страшновато ...

Edited by postscreen
Link to post
Share on other sites
Ugar68
12 часов назад, postscreen сказал:

А можно поподробнее, мне очевидным кажется только писать для MT, после эти файлы читать ... Иного просто не вижу.

p.s. Остальное почитаю, спасибо, название правда первый раз слышу такое. Прочитал цели ... стало страшновато ...

Как засунуть слона в холодильник. Очень просто, в 3 этапа. Открыть холодильник, засунуть слона, закрыть холодильник.

С файлами то же самое. Открыть файл, засунуть в него нужные данные, закрыть файл. Что бы не использовать лишних DLL, писать файлы в песочницу, специально отведённую локальную или общую папки.

Ну а программе на С без разницы от куда брать файл. Так же, открыть файл, достать данные, закрыть файл.

Только при открытии надо обязательно убеждаться что открылся, что бы не подрались писалка с читалкой.

Всё есть в справочнике по MQL5.

Но мне кажется что мучить диск на каждом тике - тупо. Диск для хранения, а не для перезаписи на каждом тике. Именованные каналы, похожи на файлы, только в оперативке. Проблема в том что в справочнике про них ни слова. Но в библиотеке классов есть Include\Files\FilePipe.mqh. Думаю это то что нужно. Одна из статей, ссылки на которые я давал ранее, поможет разобраться.

ps Сам не пробовал, только интересовался. Не было надобности. Обходился файлами, так как данные надо было не только передавать, но и сохранять, для использования после перезапуска терминала. Да и изменения были не такие частые как тики.


Пишу советники и индикаторы по вашим алгоритмам. Пишите в личку.
Чужие программы не переделываю.

Link to post
Share on other sites
postscreen
21 час назад, Ugar68 сказал:

Но мне кажется что мучить диск на каждом тике - тупо. Диск для хранения, а не для перезаписи на каждом тике. Именованные каналы, похожи на файлы, только в оперативке. Проблема в том что в справочнике про них ни слова. Но в библиотеке классов есть Include\Files\FilePipe.mqh. Думаю это то что нужно. Одна из статей, ссылки на которые я давал ранее, поможет разобраться.

На каждом тике тупо слов нет, да на самом деле и смысла нет, я же не ищу Лучшую цену в конце концов, доволен просто хорошей. :) Но выглядит все тяжко, в том смысле что каналы эти не понимаю я пока ... Бррр, в общем спасибо, если там есть решение мне явно нужно с ним разбираться и оно чуть сложнее чем могло бы быть ... То есть как то не описано. Но вспомниная МТ и его документация про "думки трейдера", относительно выбор Type я вообще к этому отношусь очень спокойно 😂

Link to post
Share on other sites
DVargo

А у меня такой вопрос, а из чего следует, что пайпы в памяти а не на диске?

 

Тогда можно и буфер обмена использовать через Win api, ну или в открытый блокнот писать и из него же читать.

Не ясно только цель данного мероприятия.

Нафига все передавать в C#  если MQL родной брат или сетра,

есть необходимость использовать терминал отличный от MT?

 

Если писать в файл раз в секунду или реже - то диск это переживет, для C#, С++.... программеров - это расходники,

и писать можно не в один файл, а равномерно заполнять винт кучей файлов.

Link to post
Share on other sites
Player 2
1 hour ago, DVargo said:

А у меня такой вопрос, а из чего следует, что пайпы в памяти а не на диске?

Где-то в документации по ним это написано. Они обертка над memory-mapped-файлами с приделанными механизмами синхронизации, которые у чистых memory-mapped-файлов отсутствуют.

Я использовал memory-mapped-файлы для обмена данными, всю синхронизацию делал сам (пайпы не использовал и даже не знал о них). Несмотря на то что они называются файлами, их можно использовать в режиме при котором они существуют только в памяти и на диске ничего не создается.

 

По ссылке я код писал чтобы проверить как это работает.

 

 

Edited by Player 2
Link to post
Share on other sites
postscreen
2 часа назад, DVargo сказал:

Нафига все передавать в C#  если MQL родной брат или сетра,

есть необходимость использовать терминал отличный от MT?

Боюсь местные правила "О Конкуренции" закрывают эту тему раз и навсегда, делая ее не более чем поисками технических решений вокруг одного разрешенного тут предмета.

 

51 минуту назад, Player 2 сказал:

По ссылке я код писал чтобы проверить как это работает.

Тут я стал догадывать, что в пределах чтения данных из МТ все вытаскивали весь и весьма виртуозными способами ...

 

2 часа назад, DVargo сказал:

Если писать в файл раз в секунду или реже - то диск это переживет, для C#, С++.... программеров - это расходники,

и писать можно не в один файл, а равномерно заполнять винт кучей файлов.

 

Чисто технически это на самом деле тривиальная задача на 100%, просто потому что есть очень раскрученные СУБД, что в есть та самая работа с файлами. Только развитая по необходимости. У меня сейчас тики так хранятся, я вырезал 99% чтобы влезло как пример.

 

Цитата

<?xml version="1.0" encoding="UTF-8"?>
<ListOfTick>
  <tick date="2019.07.17" time="12:59:58.256" bid="109.384" ask="109.400" />
  <tick date="2019.07.17" time="12:59:55.832" bid="109.386" ask="109.402" />
  <tick date="2019.07.17" time="12:59:55.325" bid="109.385" ask="109.400" broker="Alpari" order="7548965" link="my.lk.operation.http.link" />
  <tick date="2019.07.17" time="12:59:55.237" bid="109.384" ask="109.398" />
  <tick date="2019.07.17" time="12:59:55.138" bid="109.381" ask="109.396" />
  <tick date="2019.07.17" time="12:59:52.222" bid="109.384" ask="109.399" />
  <tick date="2019.07.17" time="12:59:51.319" bid="109.385" ask="109.401" />
  <tick date="2019.07.17" time="12:59:51.221" bid="109.384" ask="" />
  <tick date="2019.07.17" time="12:59:51.015" bid="109.383" ask="109.399" />
  <tick date="2019.07.17" time="12:59:50.621" bid="109.381" ask="109.397" />
  <tick date="2019.07.17" time="12:59:50.522" bid="109.380" ask="" />

</ListOfTick>

 

XML взял верх в силу возможности разметки, как и хранения истории ... Ну например, я могу сюда добавить выделенное красным, на самом деле это пока не использую.

 

То есть разметка взяла верх, за простоту, гибкость и удобство. Поэтому .txt вылетел в трубу, не выдержал конкуренции, как я не выдержу развития CSV до XML своими силами, когда XML уже есть.

Edited by postscreen
Link to post
Share on other sites
postscreen

В таком контексте я XML вижу как способ упаковать вообще что только можно, хочется и нужно. Даже производные данные, если они особо ценные, новости, .... ну в целом вообще все что душе угодно в рамках разметки. Правда некоторые конечно надо отдельно хранить как файл, а в XML только ссылку хранить. Иначе файлик будет ой какой не малый .... Ну это конечно, если разойтись сильно. В простом случае все и так хорошо.

Link to post
Share on other sites
  • 4 weeks later...
LastHopeMan

Сокеты на 127.0.0.1 на МТ5 и на С# ведь поддерживаются? Открыл и пуляй туда между приложениями через локальный айпю, я бы в эту сторону копал. 

Ля ля ля, тут ссылка на вроде как документацию

Файлы оставьте для МТ4. 


Ни один план не выдерживает столкновения с противником

Link to post
Share on other sites
  • 2 months later...
Lazer_dust

Здравствуйте.

Я тоже искал способ связать c# c mt5

Нашел 2 способа

1 через именованные каналы

   https://stackoverflow.com/questions/18160777/interaction-between-mql5-or-c-and-c-sharp-via-named-pipes обсуждение

  https://bitbucket.org/artemiusgreat/examples/src/master/ исходной код, можно как основу взят

2 через dll

   http://mtapi4.net/how-to-use/

 подключаешь dll к себе в проект а в MT5 запускаешь советник. И можешь из c# иметь полный доступ к MQL

Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

  • Recently Browsing   0 members

    No registered users viewing this page.

×
×
  • Create New...