<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Электронные Таблицы &#187; dde</title>
	<atom:link href="http://www.myspreadsheet.info/tag/dde/feed" rel="self" type="application/rss+xml" />
	<link>http://www.myspreadsheet.info</link>
	<description>... маленькие хитрости Электронных Таблиц ...</description>
	<lastBuildDate>Thu, 06 Jan 2011 11:04:43 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>MetaTrader4-DDE-Excel 2007 Сохранение Котировок на Листе</title>
		<link>http://www.myspreadsheet.info/metatrader4-dde-excel-2007-soxranenie-kotirovok-na-liste.html</link>
		<comments>http://www.myspreadsheet.info/metatrader4-dde-excel-2007-soxranenie-kotirovok-na-liste.html#comments</comments>
		<pubDate>Thu, 04 Dec 2008 19:15:18 +0000</pubDate>
		<dc:creator>egor</dc:creator>
				<category><![CDATA[All]]></category>
		<category><![CDATA[Excel]]></category>
		<category><![CDATA[Трейдерам]]></category>
		<category><![CDATA[dde]]></category>
		<category><![CDATA[metatrader4]]></category>
		<category><![CDATA[vba]]></category>
		<category><![CDATA[макросы]]></category>

		<guid isPermaLink="false">http://www.myspreadsheet.info/?p=85</guid>
		<description><![CDATA[В комментариях к статье про передачу данных из MeteTrader4 в Excel, появился вопросик &#8211; Как можно сохранить данные поступающие через DDE? Решение следующее: Создаем новый лист в Excel. В любую ячейку записываем запрос к MetaTreder =MT4&#124;QUOTE!GBPUSD и присваиваем имя этой ячейке как GBPUSD_QUOTE. В данную ячейку будем получать данные из MT4. Дальше определяем столбец куда [...]]]></description>
			<content:encoded><![CDATA[<p>В <a href="http://www.myspreadsheet.info/peredacha-dannyx-iz-metatrader4-v-ms-excel-2007.html#comment-315">комментариях</a> к статье про передачу данных из <strong>MeteTrader4</strong> в <strong>Excel</strong>, появился вопросик &#8211; <strong>Как можно сохранить данные поступающие через DDE?</strong><br />
Решение следующее:<br />
Создаем новый лист в <strong>Excel</strong>.<br />
В любую ячейку записываем запрос к MetaTreder <strong>=MT4|QUOTE!GBPUSD</strong> и присваиваем имя этой ячейке как <strong>GBPUSD_QUOTE</strong>. В данную ячейку будем получать данные из MT4.<br />
Дальше определяем столбец куда надо сохранять данные и первой верхней ячейке этого столбца присваиваем имя. <strong>QUOTE_COLLECT</strong>.<span id="more-85"></span><br />
Сохраняем файл как <strong>Excel Macro Enabled Workbook (.xlsm)</strong>.<br />
Запускаем MetaTrader и получаем приблизительно такой вид &#8230;<a href="http://img.myspreadsheet.info/files/vba-macro-mt4-dde-excel-quote-collect-1.jpg"><img class="aligncenter" src="http://img.myspreadsheet.info/files/vba-macro-mt4-dde-excel-quote-collect-1-s.jpg" alt="" /></a>Теперь надо написать небольшую программку на VBA.<br />
Алгоритм программы следующий &#8211; через определенный промежуток времени, считываются данные из ячейки с именем <strong>GBPUSD_QUOTE</strong> и записываются в столбец с под ячейкой <strong>QUOTE_COLLECT</strong>. Интервал времени считывания должен устанавливатся пользователем (по умолчанию интервал &#8211; 1 секунда).Все понятно? Начинаем.<br />
Заходим в редактор VBA (сочетание клавиш <strong>Alt+F11</strong>) и создаем форму (<strong>UserForm1</strong>) и модуль (<strong>Module1</strong>) для записи VBA кода.<br />
На форму помещаем текстовое поле (<strong>TextBox1</strong>), текстовую метку (<strong>Label1</strong>) и две кнопочки (<strong>CommandButton1</strong>, <strong>CommandButton2</strong>)<br />
Для наглядности, можно изменить свойства <strong>Caption</strong> у формы и кнопок.<br />
Я присвоил <strong>Caption</strong> форме как &#8211; <strong>Сохраняем Котировки &#8230;</strong> , а кнопкам &#8211; <strong>Старт</strong> и <strong>Стоп</strong>.<br />
В свойстве <strong>Value</strong> поля <strong>TextBox1</strong> записываем <strong>1</strong>, а у метки <strong>Label1</strong> в <strong>Caption</strong> пишем: <strong>Интервал считывания котировок в секундах</strong>.<br />
Получаем вот такую форму &#8230;<a href="http://img.myspreadsheet.info/files/vba-macro-mt4-dde-excel-quote-collect-2.jpg"><img class="aligncenter" src="http://img.myspreadsheet.info/files/vba-macro-mt4-dde-excel-quote-collect-2.jpg" alt="" /></a>Дальше начинаем писать сам код.<br />
В <strong>Module1</strong> создаем процедуру <strong>CollectQuoteRun</strong> для запуска формы <strong>UserForm1</strong>:</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
</pre></td><td class="code"><pre class="vb" style="font-family:monospace;"><span style="color: #E56717; font-weight: bold;">Sub</span> CollectQuoteRun()
UserForm1.Show
<span style="color: #8D38C9; font-weight: bold;">End</span> <span style="color: #E56717; font-weight: bold;">Sub</span></pre></td></tr></table></div>

<p>Затем переходим к программированию формы.</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
</pre></td><td class="code"><pre class="vb" style="font-family:monospace;"><span style="color: #008000;">'----------------------
</span><span style="color: #008000;">'создаем глобальную переменную для управления программой
</span><span style="color: #E56717; font-weight: bold;">Public</span> StartStop <span style="color: #151B8D; font-weight: bold;">As</span> <span style="color: #F660AB; font-weight: bold;">Integer</span>
<span style="color: #008000;">'----------------------
</span><span style="color: #008000;">'код для кнопки &amp;quot;Старт&amp;quot;
</span><span style="color: #E56717; font-weight: bold;">Private</span> <span style="color: #E56717; font-weight: bold;">Sub</span> CommandButton1_Click()
<span style="color: #151B8D; font-weight: bold;">Dim</span> PauseTime, Start
<span style="color: #151B8D; font-weight: bold;">Dim</span> LastQuote <span style="color: #151B8D; font-weight: bold;">As</span> <span style="color: #F660AB; font-weight: bold;">String</span>
<span style="color: #008000;">'передаем переменной значение времени паузы
</span>PauseTime = UserForm1.TextBox1.Value
<span style="color: #008000;">'устанавливаем курсор на ячейку под которой будут записыватся данные
</span>Range(&amp;quot;QUOTE_COLLECT&amp;quot;).<span style="color: #8D38C9; font-weight: bold;">Select</span>
StartStop = 1
<span style="color: #008000;">'запускаем цикл обращения к ячейке с данными из дде
</span><span style="color: #8D38C9; font-weight: bold;">Do</span> <span style="color: #8D38C9; font-weight: bold;">While</span> StartStop = 1
<span style="color: #008000;">'перемещаем курсор на одну ячейку вниз
</span>ActiveCell.Offset(1, 0).<span style="color: #8D38C9; font-weight: bold;">Select</span>
<span style="color: #008000;">'записываем в переменную значение котировок
</span>LastQuote = Range(&amp;quot;GBPUSD_QUOTE&amp;quot;).Value
<span style="color: #008000;">'записываем в переменную значение текущего времени в секундах
</span>Start = Timer
<span style="color: #008000;">'запускаем цикл для задержки времени (по дефолту 1 секунда)
</span><span style="color: #8D38C9; font-weight: bold;">Do</span> <span style="color: #8D38C9; font-weight: bold;">While</span> Timer &amp;lt; Start + PauseTime
<span style="color: #8D38C9; font-weight: bold;">DoEvents</span>
<span style="color: #8D38C9; font-weight: bold;">Loop</span>
<span style="color: #008000;">'спустя одну секунду, записываем значение котировок в нужном месте
</span>ActiveCell.Value = LastQuote
<span style="color: #008000;">'находимся в цикле пока переменная StartStop = 1
</span><span style="color: #8D38C9; font-weight: bold;">Loop</span>
<span style="color: #8D38C9; font-weight: bold;">End</span> <span style="color: #E56717; font-weight: bold;">Sub</span>
<span style="color: #008000;">'--------------------------
</span><span style="color: #008000;">'код для кнопки &amp;quot;Стоп&amp;quot;
</span><span style="color: #E56717; font-weight: bold;">Private</span> <span style="color: #E56717; font-weight: bold;">Sub</span> CommandButton2_Click()
<span style="color: #008000;">'передаем переменной значение 2 для остановки цикла
</span>StartStop = 2
<span style="color: #008000;">'закрываем форму
</span>Unload Me
<span style="color: #8D38C9; font-weight: bold;">End</span> <span style="color: #E56717; font-weight: bold;">Sub</span>
'--------------------------</pre></td></tr></table></div>

<p>Сохраняем документ и запускаем наш макрос. В появившейся форме ставим количество секунд, через которое нужно сохранять данные. Нажимаем кнопку <strong>Старт</strong>. Пьем кофе и наблюдаем как записываются котировки.<a href="http://img.myspreadsheet.info/files/vba-macro-mt4-dde-excel-quote-collect-3.jpg"><img class="aligncenter" src="http://img.myspreadsheet.info/files/vba-macro-mt4-dde-excel-quote-collect-3-s.jpg" alt="" /></a>Такой вот, простенький макрос получился.<br />
Если есть вопросы &#8211; <span style="text-decoration: underline;">welcome to comments!</span></p>
<p>Двери Montblanc! Покупай <a href="http://www.beloknadveri.ru" title="балконные рамы">окна</a> в коттедж в Крупках на сайте http://beloknadveri.ru</p>
]]></content:encoded>
			<wfw:commentRss>http://www.myspreadsheet.info/metatrader4-dde-excel-2007-soxranenie-kotirovok-na-liste.html/feed</wfw:commentRss>
		<slash:comments>8</slash:comments>
		</item>
		<item>
		<title>Передача данных из MetaTrader4 в MS Excel 2007</title>
		<link>http://www.myspreadsheet.info/peredacha-dannyx-iz-metatrader4-v-ms-excel-2007.html</link>
		<comments>http://www.myspreadsheet.info/peredacha-dannyx-iz-metatrader4-v-ms-excel-2007.html#comments</comments>
		<pubDate>Fri, 07 Nov 2008 13:26:31 +0000</pubDate>
		<dc:creator>egor</dc:creator>
				<category><![CDATA[All]]></category>
		<category><![CDATA[Excel]]></category>
		<category><![CDATA[Трейдерам]]></category>
		<category><![CDATA[dde]]></category>
		<category><![CDATA[metatrader4]]></category>

		<guid isPermaLink="false">http://www.myspreadsheet.info/?p=17</guid>
		<description><![CDATA[Иногда возникает необходимость использовать динамически меняющиеся данные в Excel. Например биржевые котировки. Для этого в Excel предусмотрена возможность получения данных, используя Dynamic data exchange (DDE). В моем примере, в качестве источника данных, будет использован торговый терминал MetaTrader4. Первре что надо сделать &#8211; это включить функцию передачи данных по DDE в MetaTrader. Заходим в меню сервис [...]]]></description>
			<content:encoded><![CDATA[<p>Иногда возникает необходимость использовать динамически меняющиеся данные в Excel. Например биржевые котировки. Для этого в Excel предусмотрена возможность получения данных,   используя <strong>Dynamic data exchange</strong> (DDE).<br />
В моем примере, в качестве источника данных, будет использован торговый терминал <strong>MetaTrader4</strong>.<br />
Первре что надо сделать &#8211; это включить функцию передачи данных по DDE в MetaTrader.<span id="more-17"></span></p>
<p>Заходим в меню <strong>сервис &#8211; настройки &#8211; сервер</strong> и ставим галочку в пункте &#8220;<strong>разрешить DDE сервер</strong>&#8220;.</p>
<p><img title="включить поддержку DDE в MetaTrader4" src="http://www.myspreadsheet.info/pic/MetaTrader-and-DDE.png" alt="DDE в MetaTrader4" width="475" height="286" /></p>
<p>Теперь торговый терминал MetaTrader передает данные в DDE.<br />
Формат запроса к терминалу следующий:  <strong>=MT4|ASK!GBPUSD</strong><br />
<strong>MT4</strong> &#8211; имя терминала MetaTrader<br />
<strong>ASK</strong> &#8211; параметр относящийся к обьекту запроса<br />
<strong>GBPUSD</strong> &#8211; непосредственно обьект запроса<br />
Обьектами запроса могут быть торговые инструменты &#8211; например <strong>EURUSD</strong>, <strong>USDCAD</strong>, _<strong>DJI </strong>и так далее &#8230; , а также обьекты торгового счета &#8211; <strong>ACCOUNT</strong>, <strong>BALANCE </strong>и соединения с сервером &#8211; <strong>CONNECT</strong>.<br />
Параметры запроса относящегося к торговым инструментам &#8211; <strong>BID</strong>, <strong>ASK</strong>, <strong>LAST</strong>, <strong>QUOTE</strong>. К остальным обьектам параметр запроса &#8211; <strong>STATUS</strong>.<br />
Далее подготовим Excel к получению данных.<br />
Вопервых надо проверить настройки самого Excel.<br />
Идем в <strong>Excel Options</strong> &#8211; <strong>Advanced </strong>- <strong>General </strong>и проверяем что снята галочка в пункте <strong>Ignore other applications that use Dynamic data exchange (DDE)</strong></p>
<p><img class="aligncenter" title="Настройки Excel" src="http://www.myspreadsheet.info/pic/MS-Excel-and-DDE-1.png" alt="" width="463" height="316" /></p>
<p>Дальше в разделе <strong>Excel Options</strong> &#8211; <strong>Formulas </strong>- <strong>Working with formulas</strong> включаем <strong>R1C1 reference style</strong>.<br />
Это надо сделать для того чтобы Excel воспринимал ввод &#8220;<strong>=MT4</strong>&#8221; как обращение к MetaTrader, а не ссылку на ячейку с координатами <strong>MT4</strong>.</p>
<p><img class="aligncenter" title="Настройки Excel 2" src="http://www.myspreadsheet.info/pic/MS-Excel-and-DDE-2.png" alt="" width="536" height="380" /></p>
<p>Еще один момент! Если установлен русский Windows &#8211; то в  <strong>настройках региональных параметров</strong> надо установить <strong>разделитель целой и дробной части</strong> &#8211; <strong>точка</strong>. Иначе, например данные 1.2788 будут восприниматься как первое января 2788-го года и в ячейке с форматом General будут отображаться как число 324347.<br />
Теперь, когда MetaTrader и Excel подготовлены к соединению по DDE и известен формат запроса к серверу, можно начинать делать таблицу.<br />
Создаем новую таблицу например Quotes.xlsx и в любую ячейку можем записать, допустим  &#8220;<strong>=MT4|ASK!GBPUSD</strong> &#8221; (естественно, записываем без ковычек). Нажимаем Enter и получаем котировку <strong>ASK</strong> валютной пары <strong>GBPUSD</strong>.</p>
<p><img class="aligncenter" title="результат" src="http://www.myspreadsheet.info/pic/MS-Excel-and-DDE-3.png" alt="" width="393" height="132" /></p>
<p>Вот собственно, и все что надо сделать чтоб получать данные от MetaTrader в Excel. Дальше эти данные можно использовать как угодно. Производить рассчеты, строить всевозможные графики, создавать портфели инструментов и так далее.<br />
Некоторые примеры использования этих данных я покажу позже.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.myspreadsheet.info/peredacha-dannyx-iz-metatrader4-v-ms-excel-2007.html/feed</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
	</channel>
</rss>

