MetaTrader
Atom
24.03.2010
elcust


Михаил, добрый день. Можно ли с Вашей помощью реализовать получение котировок из MetaTrader при помощи DDE??? MetaTrader с радостью их посылает через DDE и в Exel можно их увидеть, я бы хотел так же через DDE видеть их в .Net


Теги:


Спасибо:


< 1 2 3 4  >
Mikhail Sukhov

Фотография
Дата: 11.05.2010
Ответить


clientposition, money, account - это все название категории. При экспорте через ДДЕ есть такое понятие. Оно однозначно идентифицирует поток данных Скажем, чтобы отличить, какие данные были получены, по сделкам или заявкам.

Спасибо:

XMbIPb

Фотография
Дата: 11.05.2010
Ответить


А что такое "portfolio" ? и чем категории отличаются от столбцов, там разве не реляционная модель данных? и как мне всё-таки получить эти SYMBOL, BID, ASK и DATE?

Спасибо:

Mikhail Sukhov

Фотография
Дата: 11.05.2010
Ответить


portfolio - это ДДЕ категория таблицы порфтелей... Я думал, лучше все прочитать в Квике раздел про ДДЕ. А так же о том, как работает ДДЕ в S#.

Спасибо:

XMbIPb

Фотография
Дата: 11.05.2010
Ответить


Хорошо, тогда так: Какое название категории идентифицирует поток данных, отправляемых метатрейдером?

Спасибо:

XMbIPb

Фотография
Дата: 12.05.2010
Ответить


this.Trader.ProcessUnknownDdeData += (name, rows) => { // узнаем, что пришедшие данные отвечают за портфель if (string.Compare(name, "portfolio", true) == 0) { foreach (var row in rows) { var client = (string)row[0]; var portfolio = _portfolioWindow.Portfolios.FirstOrDefault(p => p.Client == client);

                   if (portfolio == null)
                    {
                            portfolio = new Portfolio { Client = client };
                            _portfolioWindow.Portfolios.Add(portfolio);
                    }

                   portfolio.Shorts = (double)row[1];
                    portfolio.Longs = (double)row[2];
                    portfolio.Collateral = (double)row[3];
                    portfolio.Margin = (double)row[4];
                    portfolio.Money = (double)row[5];
                    portfolio.PnL = (double)row[6];
            }
    }

Здесь "portfolio" - это ДДЕ категория таблицы портфелей, которую мы указали в настройках ДДЕ сервера в квике, а portfolio.Collateral,portfolio.Margin,portfolio.Money и portfolio.PnL

  • это названия столбцов этой таблицы.. я прав?

Вся беда в том что у МТ нет настроек ДДЕ сервера, где бы я мог указать нужную категорию, у меня есть только названия столбцов, указанные в документации МТ ( SYMBOL, BID, ASK и DATE)...

Спасибо:

Mikhail Sukhov

Фотография
Дата: 12.05.2010
Ответить


Я с МТ не работал. Но думаю, что так же, как и в Квике. Какой задается в настройках - такой и приходит по ДДЕ... Вы умеете из МТ экспортировать в Эксель?

Спасибо:

XMbIPb

Фотография
Дата: 12.05.2010
Ответить


В том то и беда, что там нет настроек... В эксель тоже не умею..вот всё что есть в документации:

Экспорт котировок Исходными данными, на базе которых строится вся аналитическая работа пользователя терминала, являются данные о динамике цен финансовых инструментов. Эту информацию поставляет брокерская компания. Ценовые данные позволяют строить графики финансовых инструментов, исследовать финансовые рынки, использовать различные торговые тактики и принимать торговые решения. Котировки представляют собой файлы с записями в формате "SYMBOL, BID, ASK, DATE" (финансовый инструмент, цена покупки, цена продажи, дата и время) и поступают в терминал автоматически после установки связи с сервером.

Терминал позволяет экспортировать текущие котировки в другие программы в режиме реального времени по протоколу "DDE" (Dynamic Data Exchange). Это -- протокол операционных систем MS Windows для динамической передачи данных между различными приложениями. Котировки по DDE выдаются только по приходе новых тиков (режим ADVISE), а не сразу же по запросу (режим REQUEST) с выдачей последней известной цены. N/A выдается при первом запросе REQUEST, а после прихода новой цены появляются котировки.

Для активизации режима экспорта котировок из клиентского терминала по протоколу DDE необходимо включить опцию "Разрешить DDE сервер" в настройках терминала.

Внимание: исторические данные по протоколу DDE не транслируются. Передача текущих котировок производится только при работающем клиентском терминале. Форматы DDE-запросов с их возможными результатами на примере файла "DDE-sample.xls":

запрос BID: = MT4|BID!USDCHF результат: 1.5773 запрос ASK: = MT4|ASK!USDCHF результат: 1.5778 запрос HIGH: = MT4|HIGH!USDCHF результат: 1.5801 запрос LOW: = MT4|LOW!USDCHF результат: 1.5741 запрос TIME: = MT4|TIME!USDCHF результат: 21.05.02 9:52 запрос QUOTE: = MT4|QUOTE!USDCHF результат: 21.05.02 9:52 1.5773 1.5778 1.5776

Внимание: для правильного отображения данных в MS Excel нужно включить опцию в меню "Сервис -- Параметры -- Переход -- Преобразование формул в формат Excel при вводе".

Спасибо:

Mikhail Sukhov

Фотография
Дата: 12.05.2010
Ответить


Из того, что Вы привели, я понял так. Название категорий - BID ASK HIGH LOW TIME QUOTE.... Проще всего это узнать через ITrader.ProcessUnknownDdeData. И, опять же, судя по тому, что Вы привели, указывать название ddeServer нужно MT.

Спасибо:

XMbIPb

Фотография
Дата: 18.06.2010
Ответить


А как узнать названия категорий через trader.ProcessUnknownDdeData, если это событие не срабатывает? И где нужно указывать название MT?

Спасибо:

Mikhail Sukhov

Фотография
Дата: 18.06.2010
Ответить


http://stocksharp.com/doc/help/html/E_Ecng_Trading_Quik_QuikTrader_ProcessUnknownDdeData.htm

Первый параметр и есть название категории. Если событие не срабатывает, значит по ДДЕ и не шлется... Вы добились экспорта в Эксель? Потому что, по Вашему описанию решения, я понял, что проблема явно не в обработке данных из МТ, а в самой настройке МТ.

Спасибо:
< 1 2 3 4  >

Добавить файлы через драг-н-дроп, , или вставить из буфера обмена.

loading
clippy