Jump to content
Programmer

Общие вопросы по языку MQL

Recommended Posts

Programmer

Здесь приветствуются общие вопросы по синтаксису и структуре языка программрования MQL4.

Share this post


Link to post
Share on other sites
taurus

...

2- создайте batch-файл и назовите его compile.bat (или любым другим именем)...

 

Где и как создать этот файл? Спасибо.


"Чем больше я узнаю, тем меньше я знаю"

Share this post


Link to post
Share on other sites
Programmer

Создаёте обычный текстовый файл *.txt и меняете его расширение на *.bat .

Редактировать текстовым редактором.

Share this post


Link to post
Share on other sites
carter

У меня такой вопросик, я учился по учебнику Сергея Ковалева, и весь его (скажем так) прошёл. Но как продолжить себя "совершенствовать", может есть какие-то книги еще? Чтобы было поподробнее. Или что-то в этом роде???


Деньги не пахнут.....если их нет

Share this post


Link to post
Share on other sites
allogin
Здесь приветствуются общие вопросы по синтаксису и структуре языка программрования MQL4.

Тогда один из общих вопросов: Раньше, когда была одна валюта депозита - $, для расчёта возможного колл-ва открытых позиций брался AccountBalance(), делился на Bid, и с учётом плеча и размера лота заложенного в эксперте, находилось искомое. Теперь с возможностью открытия депозитов в евре и рублях, для этих депозитов схема не сработает. Подскажете, как справиться с этой напастью? Или AccountBalance() выдаёт размер депозита открытого в любой валюте в пересчёте на $?

Спасибо.


сакрамат

Share this post


Link to post
Share on other sites
Programmer

To carter:

 

Учебник Сергея Ковалёва - очень хорошое пособие. Если Вы его прошли и полностью поняли, то Вам осталось совершенствоваться на практике.

С точки зрения именно приобретения новых знаний - попробуйте изучить visual C++ (после MQL4 это не составит особго труда). Затем - программирование под windows на C++ с помощью MFC.

Share this post


Link to post
Share on other sites
Programmer

To allogin:

 

AccountBalance() выдаёт размер депозита в валюте депозита.

Используйте функцию AccountCurrency() и тек. курс для пересчёта.

Share this post


Link to post
Share on other sites
djday

Спасибо Programer за курс.

Далёк от программирования, но приходится изучать.

Жду когда дойдём до изучения простой скользящей средней и построение прямой с одной координатой и углом.

Надеюсь, когда-нибудь эти темы будут освещены в курсе.

Share this post


Link to post
Share on other sites
Programmer

To djday:

 

:) Рад, что он Вам помогает.

 

Эти темы будут освещены обязательно, но не скоро. Если Вам нужно что-то конкретное напишите в ветке пожелания, я Вам выложу код.

Share this post


Link to post
Share on other sites
taurus

Такой вопросик... из книги С. Ковалева:

....................................

Побитовые операции

Побитовые операции выполняются только с целыми числами. К побитовым операциям относятся следующие:

Дополнение значения переменной до единицы. Значение выражения содержит 1 во всех разрядах, в которых значения переменной содержат 0, и 0 во всех разрядах, в которых значения переменной содержат 1.

b = ~n;

.......................................

b = ~n; вероятно b = ~n - выражение, b -переменная, ~n - значение переменной?

Не могу въехать, почему так, как выделено курсивом...

Если можно, поясните. Спасибо.


"Чем больше я узнаю, тем меньше я знаю"

Share this post


Link to post
Share on other sites
Programmer

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

To taurus:

 

Я так понимаю, Вы изучаете побитовые операции чисто для расширения кругозора?

Потому что на практике в MQL4 они никогда не используются. Даже при программировании на C/C++, по моему опыту, они используются только для реализации очень специфических задач.

Share this post


Link to post
Share on other sites
taurus

Спасибо, вы очень прозрачно объяснили... теперь все стало понятно...

я уже заметил, что в MQL4 эти операции не используются, но когда не разобрался, то сидит как гвоздик и мучает... теперь стало намного легче...:smile:


"Чем больше я узнаю, тем меньше я знаю"

Share this post


Link to post
Share on other sites
Изя Кацман

Где-то в нете прочитал, что разрабатывается (уже вроде даже на подходе) mt5. Там будет дебугер и язык приобретет сходство с С++. По крайней мере простенькие классы будут присутствовать. Так ли это?

Share this post


Link to post
Share on other sites
taurus
Где-то в нете прочитал, что разрабатывается (уже вроде даже на подходе) mt5. Там будет дебугер и язык приобретет сходство с С++. По крайней мере простенькие классы будут присутствовать. Так ли это?

У Метаквосов на сайте уже давно есть инфа...


"Чем больше я узнаю, тем меньше я знаю"

Share this post


Link to post
Share on other sites
Programmer

http://forum.mql4.com/ru/11729

 

Нас ждёт блестящее будущее!

Carter, однозначно начинайте изучать C++ ; )

Share this post


Link to post
Share on other sites
taurus

Урок 3 - Типы данных в MQL4

Ключевое слово char используется для создания переменной типа Character.

Например:

Код:

int chrA = 'A';

int chrB = '$';

а можно объявить так?

char = 'A';

и почему ключевое слово char, а в коде chr ???

Спасибо.


"Чем больше я узнаю, тем меньше я знаю"

Share this post


Link to post
Share on other sites
Programmer

To taurus:

 

Спасибо за замечание. Я просто перепутал с C.

В MQL4 нет ключевого слова char, вместо этого все символьные переменные хранятся в кодовом виде (ASCII) в переменных типа int.

 

В коде стоит "chrA" - для упрощения понимания при чтении. Просто чтобы визуально запомнить, что хоть эта переменная и имеет тип integer, в ней хранится символ.

Share this post


Link to post
Share on other sites
EfDim

Господа! Подскажите, какая функция в MQL4 сообщает от том что сработал стоп-лосс или тейкпрофит.

Share this post


Link to post
Share on other sites
~~SOM~~
Господа! Подскажите, какая функция в MQL4 сообщает от том что сработал стоп-лосс или тейкпрофит.

Значение переменной Ask или Bid в зависимости от направления открытой позиции :).

Share this post


Link to post
Share on other sites
Programmer

To EfDim:

 

Именно так. А точнее:

Через OrderSelect() в режиме MODE_HISTORY находите свой ордер, а потом сравниваете OrderClosePrice() с OrderStopLoss() и OrderTakeProfit().

Share this post


Link to post
Share on other sites
Dedushka
To EfDim:

 

Именно так. А точнее:

Через OrderSelect() в режиме MODE_HISTORY находите свой ордер, а потом сравниваете OrderClosePrice() с OrderStopLoss() и OrderTakeProfit().

 

А если там в истории тысячи ордеров - прокручивать все на каждом тике? Как ограничить глубину просмотра истории в советнике?


В бой идут одни старики. (с)

Share this post


Link to post
Share on other sites
Roger
А если там в истории тысячи ордеров - прокручивать все на каждом тике? Как ограничить глубину просмотра истории в советнике?

Не смущай преподавателя:gun:

Ты ведь прекрасно знаешь, каждый новый закрытый ордер становится в конец истории. Просматривай только последние 5,10,15, ну в общем сколько тебе надо.

Share this post


Link to post
Share on other sites
Programmer

To Dedushka:

 

Верно Roger говорит. Да и потом, если Вы хотите узнать информацию о закрытии какого-то определённого ордера, то у Вас, вероятно, есть его ticket. А по ticket'у ордер находится мгновенно (причём не забывайте, что в режиме SelectByTicket функция OrderSelect() игнорирует параметр pool).

Share this post


Link to post
Share on other sites
Dedushka
Не смущай преподавателя:gun:

Ты ведь прекрасно знаешь, каждый новый закрытый ордер становится в конец истории. Просматривай только последние 5,10,15, ну в общем сколько тебе надо.

 

Уважаемый, ты хочешь сказать, что

OrderSelect(0, SELECT_BY_POS, MODE_HISTORY)

сразу даст мне последний закрытый ордер?

Или наоборот, первый? Как они вообще отсортированы? По возрастанию или убыванию номеров тикетов или времени срабатывания. А если я отсортирую историю в терминале по прибыли, например, то какой ордер я получу теперь послав запрос

OrderSelect(0, SELECT_BY_POS, MODE_HISTORY). Учитывая, что я хочу увидеть последний закрытый ордер, выставленный конкретным советником, а не вообще.

 

Как видишь, я не шучу, тут много ньюансов, внутренняя механика мне неизвестна, потому и спрашиваю Программера.

 

ЗЫ. Мне кое-что подсказали в другой ветке, попробую... А все, что я выше написал, скорее всего мне же и надо на досуге проверить - эксперимент покажет, что там с сортировкой.

Edited by Dedushka

В бой идут одни старики. (с)

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

  • Recently Browsing   0 members

    No registered users viewing this page.

×