Programmer 33 Posted August 1, 2008 Здесь приветствуются общие вопросы по синтаксису и структуре языка программрования MQL4. Share this post Link to post Share on other sites
taurus 23 Posted August 2, 2008 ... 2- создайте batch-файл и назовите его compile.bat (или любым другим именем)... Где и как создать этот файл? Спасибо. "Чем больше я узнаю, тем меньше я знаю" Share this post Link to post Share on other sites
Programmer 33 Posted August 2, 2008 Создаёте обычный текстовый файл *.txt и меняете его расширение на *.bat . Редактировать текстовым редактором. Share this post Link to post Share on other sites
carter 0 Posted August 3, 2008 У меня такой вопросик, я учился по учебнику Сергея Ковалева, и весь его (скажем так) прошёл. Но как продолжить себя "совершенствовать", может есть какие-то книги еще? Чтобы было поподробнее. Или что-то в этом роде??? Деньги не пахнут.....если их нет Share this post Link to post Share on other sites
allogin 2 Posted August 3, 2008 Здесь приветствуются общие вопросы по синтаксису и структуре языка программрования MQL4. Тогда один из общих вопросов: Раньше, когда была одна валюта депозита - $, для расчёта возможного колл-ва открытых позиций брался AccountBalance(), делился на Bid, и с учётом плеча и размера лота заложенного в эксперте, находилось искомое. Теперь с возможностью открытия депозитов в евре и рублях, для этих депозитов схема не сработает. Подскажете, как справиться с этой напастью? Или AccountBalance() выдаёт размер депозита открытого в любой валюте в пересчёте на $? Спасибо. сакрамат Share this post Link to post Share on other sites
Programmer 33 Posted August 4, 2008 To carter: Учебник Сергея Ковалёва - очень хорошое пособие. Если Вы его прошли и полностью поняли, то Вам осталось совершенствоваться на практике. С точки зрения именно приобретения новых знаний - попробуйте изучить visual C++ (после MQL4 это не составит особго труда). Затем - программирование под windows на C++ с помощью MFC. Share this post Link to post Share on other sites
Programmer 33 Posted August 4, 2008 To allogin: AccountBalance() выдаёт размер депозита в валюте депозита. Используйте функцию AccountCurrency() и тек. курс для пересчёта. Share this post Link to post Share on other sites
djday 0 Posted August 4, 2008 Спасибо Programer за курс. Далёк от программирования, но приходится изучать. Жду когда дойдём до изучения простой скользящей средней и построение прямой с одной координатой и углом. Надеюсь, когда-нибудь эти темы будут освещены в курсе. Share this post Link to post Share on other sites
Programmer 33 Posted August 4, 2008 To djday: Рад, что он Вам помогает. Эти темы будут освещены обязательно, но не скоро. Если Вам нужно что-то конкретное напишите в ветке пожелания, я Вам выложу код. Share this post Link to post Share on other sites
taurus 23 Posted August 4, 2008 Такой вопросик... из книги С. Ковалева: .................................... Побитовые операции Побитовые операции выполняются только с целыми числами. К побитовым операциям относятся следующие: Дополнение значения переменной до единицы. Значение выражения содержит 1 во всех разрядах, в которых значения переменной содержат 0, и 0 во всех разрядах, в которых значения переменной содержат 1. b = ~n; ....................................... b = ~n; вероятно b = ~n - выражение, b -переменная, ~n - значение переменной? Не могу въехать, почему так, как выделено курсивом... Если можно, поясните. Спасибо. "Чем больше я узнаю, тем меньше я знаю" Share this post Link to post Share on other sites
Programmer 33 Posted August 4, 2008 To taurus: Есть переменная n. Пусть, для определённости, её значение в двоичной форме имеет вид: 00001010001. Оператор b=~n; означает: применить к переменной n операцию ~ и присвоить полученное значение переменной b. Операция ~ меняет в двоичной записи переменной все 1 на 0, а все 0 на 1. Таким образом, в значение переменной b в двоичной форме будет иметь вид: 11110101110. Share this post Link to post Share on other sites
Programmer 33 Posted August 4, 2008 To taurus: Я так понимаю, Вы изучаете побитовые операции чисто для расширения кругозора? Потому что на практике в MQL4 они никогда не используются. Даже при программировании на C/C++, по моему опыту, они используются только для реализации очень специфических задач. Share this post Link to post Share on other sites
taurus 23 Posted August 4, 2008 Спасибо, вы очень прозрачно объяснили... теперь все стало понятно... я уже заметил, что в MQL4 эти операции не используются, но когда не разобрался, то сидит как гвоздик и мучает... теперь стало намного легче...:smile: "Чем больше я узнаю, тем меньше я знаю" Share this post Link to post Share on other sites
Изя Кацман 215 Posted August 5, 2008 Где-то в нете прочитал, что разрабатывается (уже вроде даже на подходе) mt5. Там будет дебугер и язык приобретет сходство с С++. По крайней мере простенькие классы будут присутствовать. Так ли это? Share this post Link to post Share on other sites
taurus 23 Posted August 5, 2008 Где-то в нете прочитал, что разрабатывается (уже вроде даже на подходе) mt5. Там будет дебугер и язык приобретет сходство с С++. По крайней мере простенькие классы будут присутствовать. Так ли это? У Метаквосов на сайте уже давно есть инфа... "Чем больше я узнаю, тем меньше я знаю" Share this post Link to post Share on other sites
Programmer 33 Posted August 5, 2008 http://forum.mql4.com/ru/11729 Нас ждёт блестящее будущее! Carter, однозначно начинайте изучать C++ ; ) Share this post Link to post Share on other sites
taurus 23 Posted August 5, 2008 Урок 3 - Типы данных в MQL4 Ключевое слово char используется для создания переменной типа Character. Например: Код: int chrA = 'A'; int chrB = '$'; а можно объявить так? char = 'A'; и почему ключевое слово char, а в коде chr ??? Спасибо. "Чем больше я узнаю, тем меньше я знаю" Share this post Link to post Share on other sites
Programmer 33 Posted August 5, 2008 To taurus: Спасибо за замечание. Я просто перепутал с C. В MQL4 нет ключевого слова char, вместо этого все символьные переменные хранятся в кодовом виде (ASCII) в переменных типа int. В коде стоит "chrA" - для упрощения понимания при чтении. Просто чтобы визуально запомнить, что хоть эта переменная и имеет тип integer, в ней хранится символ. Share this post Link to post Share on other sites
EfDim 0 Posted August 6, 2008 Господа! Подскажите, какая функция в MQL4 сообщает от том что сработал стоп-лосс или тейкпрофит. Share this post Link to post Share on other sites
~~SOM~~ 1 Posted August 6, 2008 Господа! Подскажите, какая функция в MQL4 сообщает от том что сработал стоп-лосс или тейкпрофит. Значение переменной Ask или Bid в зависимости от направления открытой позиции . Share this post Link to post Share on other sites
Programmer 33 Posted August 6, 2008 To EfDim: Именно так. А точнее: Через OrderSelect() в режиме MODE_HISTORY находите свой ордер, а потом сравниваете OrderClosePrice() с OrderStopLoss() и OrderTakeProfit(). Share this post Link to post Share on other sites
Dedushka 1,575 Posted August 6, 2008 To EfDim: Именно так. А точнее: Через OrderSelect() в режиме MODE_HISTORY находите свой ордер, а потом сравниваете OrderClosePrice() с OrderStopLoss() и OrderTakeProfit(). А если там в истории тысячи ордеров - прокручивать все на каждом тике? Как ограничить глубину просмотра истории в советнике? В бой идут одни старики. (с) Share this post Link to post Share on other sites
Roger 18 Posted August 7, 2008 А если там в истории тысячи ордеров - прокручивать все на каждом тике? Как ограничить глубину просмотра истории в советнике? Не смущай преподавателя Ты ведь прекрасно знаешь, каждый новый закрытый ордер становится в конец истории. Просматривай только последние 5,10,15, ну в общем сколько тебе надо. Share this post Link to post Share on other sites
Programmer 33 Posted August 7, 2008 To Dedushka: Верно Roger говорит. Да и потом, если Вы хотите узнать информацию о закрытии какого-то определённого ордера, то у Вас, вероятно, есть его ticket. А по ticket'у ордер находится мгновенно (причём не забывайте, что в режиме SelectByTicket функция OrderSelect() игнорирует параметр pool). Share this post Link to post Share on other sites
Dedushka 1,575 Posted August 7, 2008 (edited) Не смущай преподавателяТы ведь прекрасно знаешь, каждый новый закрытый ордер становится в конец истории. Просматривай только последние 5,10,15, ну в общем сколько тебе надо. Уважаемый, ты хочешь сказать, что OrderSelect(0, SELECT_BY_POS, MODE_HISTORY) сразу даст мне последний закрытый ордер? Или наоборот, первый? Как они вообще отсортированы? По возрастанию или убыванию номеров тикетов или времени срабатывания. А если я отсортирую историю в терминале по прибыли, например, то какой ордер я получу теперь послав запрос OrderSelect(0, SELECT_BY_POS, MODE_HISTORY). Учитывая, что я хочу увидеть последний закрытый ордер, выставленный конкретным советником, а не вообще. Как видишь, я не шучу, тут много ньюансов, внутренняя механика мне неизвестна, потому и спрашиваю Программера. ЗЫ. Мне кое-что подсказали в другой ветке, попробую... А все, что я выше написал, скорее всего мне же и надо на досуге проверить - эксперимент покажет, что там с сортировкой. Edited August 7, 2008 by Dedushka В бой идут одни старики. (с) Share this post Link to post Share on other sites