Страницы: 1 2 След.
RSS
Использование Excel для работы на Forex, Excel в связке с MT4, MT5 для работы на валютных рынках
 
Здравствуйте дорогие любители Excel!

Предисловие

Ни для кого не секрет, что в интернете статей про торговлю на рынке форекс очень много, но в основном это 5% по настоящему стоящей информации в зоне RU. Все остальное или размноженно и выложено на тысячах сайтов, либо на английском (пол беды), либо реклама.
На мой взгляд planetaexcel.ru самый авторитетный ресурс посвященный Excel, за что огромное спасибо Николаю и всем участникам этого замечательного сайта. Думаю найдется не один человек интересующийся валютными операциями и в частности связкой Excel с разнообразными торговыми платформами и базами данных. В связи с этим прошу выделить отдельную ветку на форуме посвященную связке Excel c торговыми платформами, и созданию разнообразных вспомогательных программ средствами Excel.

А теперь перейду к одной из проблем в которой прошу помощи советом.

Задача:
Создание тиковой истории котировок с возможность выбора нужного тайм фрейма.

Что имеется:

А имеется такой вот макрос
Код
Private Sub Worksheet_Calculate()
i = Worksheets("EURUSD").UsedRange.Rows.Count

Worksheets("EURUSD").Cells(i + 1, 1).Value = Worksheets("Quotes").Cells(2, 2).Value 'Bid
Worksheets("EURUSD").Cells(i + 1, 2).Value = Worksheets("Quotes").Cells(2, 3).Value 'Ask
Worksheets("EURUSD").Cells(i + 1, 3).Value = Worksheets("Quotes").Cells(2, 4).Value 'Open
Worksheets("EURUSD").Cells(i + 1, 4).Value = Worksheets("Quotes").Cells(2, 5).Value 'High
Worksheets("EURUSD").Cells(i + 1, 5).Value = Worksheets("Quotes").Cells(2, 6).Value 'Low
Worksheets("EURUSD").Cells(i + 1, 6).Value = Worksheets("Quotes").Cells(2, 7).Value 'Close
Worksheets("EURUSD").Cells(i + 1, 7).Value = Worksheets("Quotes").Cells(2, 8).Value 'Volume
Worksheets("EURUSD").Cells(i + 1, 8).Value = Worksheets("Quotes").Cells(2, 9).Value 'Spread
Worksheets("EURUSD").Cells(i + 1, 9).Value = Time() 'Time
Worksheets("EURUSD").Cells(i + 1, 10).Value = Worksheets("Quotes").Cells(2, 12).Value 'Date

End Sub

Лист Quotes получает динамические данные от терминала



На листе EURUSD, записываются любые изменения на листе Quotes в таком виде:



Нужно:
1. Чтоб на листе Timeframes формировался список всех строк найденых на листе EURUSD по заданному таймфрейму.
2. Значения столюцов Open и Close автоматически заполнялись по следующему условию: Open - первая секунда новой минуты, Close - последняя ( значения 00:00:01 может не найтись, по этому нужно найти первое и последнее значение в пределах каждой минуты)

Например, нужный таймфрейм 1 минута. Функция должна найти все значения в пределах каждой минуты, найти максимальное и минимальное значение BID в пределах каждой минумы и записать соответственно в поля High и Low, найти первое и последнее значение каждой минуты и соответственно записать в поля Open и Close значения ячейки Bid

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

Заранее спасибо всем отозвавшимся.
Изменено: Darky - 19.03.2016 22:59:13
 
Может Вам в раздел Работа есть смысл обратиться? А то как-то нелогично - Вы хотите зарабатывать тем, что пытаетесь получить даром.
Я сам - дурнее всякого примера! ...
 
В конечном итоге все здесь зарабатывают на Excel ), это ведь не компьютерная игра для развлечения.  
Изменено: Darky - 19.03.2016 22:24:19
 
Darky, код следует оформлять соответствующим тегом. Ищите такую кнопку и исправьте своё сообщение. Спасибо!
 
Цитата
Darky написал:
В конечном итоге все сдесь зарабатывают на Excel
Откуда такой вывод? ) Зарабатывают не здесь, а в платном разделе ))
 
Извините конечно, может ктото и занимается изучением Excel для развлечения и в целях самообразования, но согласитесь, таких очень мало. Excel офисная програма, а в офисах работают ))
 
Всё верно - работают. А некоторые хотят облегчить себе условия этой самой работы - ищут различные способы: формулы, макросы...
Кто-то находит в бесплатном разделе, кто-то, если очень нужно, заказывает в платном.
Цитата
Юрий М написал:
код следует оформлять соответствующим тегом. Ищите такую кнопку и исправьте своё сообщение.
 
Цитата
Юрий М написал:
Darky, код следует оформлять соответствующим тегом. Ищите такую кнопку и исправьте своё сообщение. Спасибо!

Прикрепленные файлы
Тег VBA.jpg (19.2 КБ)
Спасибо за подсказку, уже исправил )
 
Darky, ещё одна подсказка: не нужно цитировать всё подряд. Цитируйте только то, на чём хотите сделать акцент.
 
Цитата
Юрий М написал:
Всё верно - работают. А некоторые хотят облегчить себе условия этой самой работы - ищут различные способы: формулы, макросы...
Кто-то находит в бесплатном разделе, кто-то, если очень нужно, заказывает в платном.
У меня не обширные познания в Excel но мне кажется тут можно обойтись несколькими строчками кода. Да и если бы была возможность заплатить без сомнений заплатил бы. 95% занимающихся форекс проигрывают ))
 
Вы не из тех 5%? )
 
Цитата
Юрий М написал:
5%?
Как видите ) это ведь бесплатный раздел )
 
Если Вы из той группы, что 95%, то какой смысл автоматизировать свой заведомо проигрыш? ))
 
Никогда бы не подумал, что для написания кода нужно предварительно рассказать всю свою жизнь в подробностях )
 
Цитата
Darky написал:
но мне кажется тут можно обойтись несколькими строчками кода.
Ну-ну,глубоко ошибаетесь.
Подсказка.читаете файл истории и получаете динамику,можете рассчитать любой таймфрейм.
Файлы истории структурированы и читаются блоками.
 
Цитата
Doober написал:
Подсказка.читаете файл истории и получаете динамику,можете рассчитать любой таймфрейм.
Файлы истории структурированы и читаются блоками.
Вы имеете в виду готовую историю с терминала?
 
Цитата
Darky написал:
Никогда бы не подумал, что для написания кода нужно предварительно рассказать всю свою жизнь в подробностях
Я подробности всей жизни не просил: только хотел узнать принадлежность к одной из групп ))
Объясню почему: если Вы из 95%, то нет смысла автоматизировать вообще. Если из 5% (те, что успешные), то Вы на этом зарабатываете.
Понятно о чём я? ))
 
Цитата
Darky написал:
Никогда бы не подумал, что для написания кода нужно
Так напишите, кто не дает? Но Вам учиться влом, охота сразу зарабатывать. И денег жалко. А здесь не стол халявных заказов, мы тут помогаем именно учиться.
P.S. Зачем Вы все подряд цитируете?
Я сам - дурнее всякого примера! ...
 
Цитата
kuklp написал: Вам учиться влом
Я большую часть своей жизни учусь. И мне не в лом учиться. Вот только вижу вы сидите в разделе бесплатном ) вам кажется в платный стоит заглянуть. Без обид.
 
Из 19 сообщений ни строчки кода...  
 
Цитата
Юрий М написал:
если Вы из 95%, то нет смысла автоматизировать вообще
Есть желание попасть в группу 5%
 
Цитата
Darky написал: Из 19 сообщений ни строчки кода...
:D просто функция вам сильно много должна... да и пост #15 вы не упускайте из виду...
Цитата
Darky написал: Функция должна найти все значения в пределах каждой минуты, найти максимальное и минимальное значение BID в пределах каждой минумы и записать соответственно в поля High и Low, найти первое и последнее значение каждой минуты и соответственно записать в поля Open и Close значения ячейки Bid
действительно, ещё ни одной строчки (попытки) кода с вашей стороны... составьте алгоритм, как ей это делать... и по-тиху пишите её - конкретные вопросы xl-ного характера задавайте - здесь много людей, которые могут помочь, но не сделать всё за вас...
Цитата
Darky написал: Я большую часть своей жизни учусь. И мне не в лом учиться.
+ ... Поиском (вверху страницы) можно воспользоваться (DDE) - подобного рода задачи решались не раз - пусть не биды/аски считали, но много идей по форуму об отборе той или иной инфо из массива данных, из словаря, из коллекции... из чего угодно... - можно прикручивать для обработки данных, приходящих по DDE...
P.S.
Выборка из динамически обновляемого списка
Событие для ячееек с DDE-запросом  
Изменено: JeyCi - 20.03.2016 07:45:16
чтобы не гадать на кофейной гуще, кто вам отвечает и после этого не совершать кучу ошибок - обратитесь к собеседнику на ВЫ - ответ на ваш вопрос получите - а остальное вас не касается (п.п.п. на форумах)
 
Цитата
Юрий М написал: если Вы из 95%, то нет смысла автоматизировать вообще. Если из 5% (те, что успешные), то Вы на этом зарабатываете.
Юрий М, не факт... если человек ещё только изучает рынок, знакомится с ним... автоматизировать расчёты, чтобы понаблюдать выводы может и надо... даже если до заработка, как до Луны, и не понятно в том ли направлении и на каких потерях по ходу и дойдёт ли и когда... но успехов ему и светлых идей, а не готовых кодов, т.к. мало ли, что ещё потом захочет... а всё ещё не будет уметь делать сам  :( ...
ТС, вы, главное - начните  ;)  ... не усложнять себе жизнь (19 постов ждать)
Изменено: JeyCi - 20.03.2016 07:45:53
чтобы не гадать на кофейной гуще, кто вам отвечает и после этого не совершать кучу ошибок - обратитесь к собеседнику на ВЫ - ответ на ваш вопрос получите - а остальное вас не касается (п.п.п. на форумах)
 
кстати, может и MT не надо эксплуатировать через DDE... примеры кодов Web Services For Financial Data http://investexcel.net/financial-web-services-kb/ - (и другие по данной тематике на данном ресурсе)
в любом случае:
Цитата
Darky написал: Задача: Создание тиковой истории котировок с возможность выбора нужного тайм фрейма.
- очень комплексная... конкретика ваших затруднений не понятна...

Цитата
Darky написал: Что имеется:
не у всех имеется MT4... поэтому всё что написано далее в #1 не имеет место быть
Цитата
Darky написал: Нужно:
ПРАВИЛА ФОРУМА
Цитата
   2.6. Один вопрос - одна тема. Не следует в открываемой теме обозначать и задавать сразу несколько вопросов.    
    2.7. Если вам нужен не совет по самостоятельному решению задачи, а чтобы все сделали за вас - добро пожаловать в ветку Работа. Там, скорее всего, найдутся специалисты, которые разберутся с вашей проблемой быстро, качественно и за разумную плату.    
Изменено: JeyCi - 20.03.2016 10:06:36
чтобы не гадать на кофейной гуще, кто вам отвечает и после этого не совершать кучу ошибок - обратитесь к собеседнику на ВЫ - ответ на ваш вопрос получите - а остальное вас не касается (п.п.п. на форумах)
 
JeyCi, Большое спасибо за советы и ссылки, Я наверное неправильно создал тему. Я никогда в жизни не создавал темы ) это первая, так как все что я делал до того мог сделать сам или находил в интернете. Идея была чтоб вместе создали такую полезную штуку, и всем кому надо могли пользоваться, Я не хотел готового решения.
Дело в том что я очень слабо знаком с VBA.
Цитата
JeyCi написал:
через DDE
Через DDE файл получает данные от моего брокера с МТ4, но функций которые можно передать по этому протоколу очень мало.
Есть идея, когда будет чтото дельное выложу.
Еще раз большое человеческое спасибо.
Изменено: Darky - 20.03.2016 11:04:10
 
Цитата
Darky написал: Идея была чтоб вместе создали такую полезную штуку

Скрытый текст

- торговать, котировки прошлого в настоящем вы всё равно не сможете, чтобы попасть в 5%...
см. специализированные форумы по трейдингу
Изменено: JeyCi - 20.03.2016 11:42:45
чтобы не гадать на кофейной гуще, кто вам отвечает и после этого не совершать кучу ошибок - обратитесь к собеседнику на ВЫ - ответ на ваш вопрос получите - а остальное вас не касается (п.п.п. на форумах)
 
JeyCi, Есть стратегия. Фильтрация динамического списка нужна для подачи сигнала. C++ не владею иначе сделал бы прямо в МТ. Плюс хочу использовать для разработки дальнейших наработок. Макрос в теме записывает все изменения на листе, которые приходят по DDE. Мне только нужен способ фильтрации всего массива по определенным критериям. К примеру фильтрация массива по маске, Тип того.
 
Попробую выложить логику в словах... если получится ), а знающие люди может напишут языком VB. И так:
Если значение в ячейка A1 = "М1" то
проверить первую ячейку с временем по маске HH:MM:SS, подождать пака изменится значение **:MM:** и записать на листе к примеру "M1" значение всей строки
Если запись есть тобиш строчка не пустая начать отслеживать MAX и MIN значений BID
При появлении следующей записи (значение ММ снова изменилось) записать в соответствующие ячейки отслеженные значения MAX и MIN и продолжить по новой
 
нерационально... имхо... постоянно сканить на min/max - они постоянно могут меняться... да и оперативная память будет пахать, как сумасшедшая при большой волатильности - помнить *mm* да ещё и разбираться min/max на КАЖДОЙ записи... (а она может понадобиться ещё для каких приложений)...
лучше:
при появлении каждой новой *mm* кидать её строку куда надо и брать её саму в переменную и сравнивать с ней каждую новую запись... как только сменилась *mm* - найти  min/maх в записях за уже закрытую минуту - и выставить, например, их куда надо... всё равно не может быть нормальных торговых условий, если каждая новая минута будет появляться с интервалом в 5 мин - это низколиквидный рынок - его торговать нет смысла (не заработаете, если цена будет стоять колом)... на нормальном рынке смена минут не заставит себя долго ждать...
p.s.
с dde не работала, да и времени нет, да и MT4 не у всех есть для подобных экспериментов...
разбирайтесь по порядку:
1) как увидеть новую строку, пришедшую по dde
2) сравнить с вашей *mm*
3) записать в первую или (далее) следующую после последней заполненной строки
4) начать собирать массив/коллекцию (можно по ходу)
5) как только, т.е. "если" не совпадает *mm*, то
6) достать из массива min и max
7) новую строку с новой *mm* кинуть куда надо... запомнить в переменную *mm*... и собирать новый массив... чтобы потом из него снова выбирать min/max... вобщем, запихнуть все действия в цикл...
как вариант алгоритма
(но все незнакомые темы в рамках него - придётся ковырять на форуме, если не хотите в раздел Работа - а хотите сделать сами)... успехов...
Изменено: JeyCi - 20.03.2016 16:55:24
чтобы не гадать на кофейной гуще, кто вам отвечает и после этого не совершать кучу ошибок - обратитесь к собеседнику на ВЫ - ответ на ваш вопрос получите - а остальное вас не касается (п.п.п. на форумах)
 
JeyCi, Большое спасибо за пояснения. Буду разбираться.
Страницы: 1 2 След.
Читают тему
Наверх