Jump to content

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


Recommended Posts

Programmer

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

Link to post
Share on other sites
  • Replies 7.6k
  • Created
  • Last Reply

Top Posters In This Topic

  • AntFX

    577

  • sergey1294

    569

  • Ugar68

    517

  • Programmer

    419

Top Posters In This Topic

Popular Posts

Ну, в данном случае мне стоило бы сразу соблюдать простейшие приёмы защитного программирования, то есть проверять, не равна ли нулю переменная, оказавшаяся под знаком деления. Ведь она "чужая", то ест

На счёт проверок, это правильно. Я больше очень практикую, то же нарывался. Но в моём случае у меня советник открывал ордер минимальным лотом вместо нормального, когда замечал, доливаться было поздно.

Основной советник выставляет "сигнальный" отложенный ордер далеко от текущей цены и каждую например, минуту модифицирует у него время экспирации: это может быть текущее время плюс 1 час, или плюс 1 су

Posted Images

taurus

...

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

 

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


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

Link to post
Share on other sites
Programmer

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

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

Link to post
Share on other sites
carter

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


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

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

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

Спасибо.


сакрамат

Link to post
Share on other sites
Programmer

To carter:

 

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

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

Link to post
Share on other sites
Programmer

To allogin:

 

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

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

Link to post
Share on other sites
djday

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

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

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

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

Link to post
Share on other sites
Programmer

To djday:

 

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

 

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

Link to post
Share on other sites
taurus

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

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

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

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

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

b = ~n;

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

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

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

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


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

Link to post
Share on other sites
Programmer

To taurus:

 

Есть переменная n. Пусть, для определённости, её значение в двоичной форме имеет вид: 00001010001. Оператор b=~n; означает: применить к переменной n операцию ~ и присвоить полученное значение переменной b. Операция ~ меняет в двоичной записи переменной все 1 на 0, а все 0 на 1.

Таким образом, в значение переменной b в двоичной форме будет иметь вид: 11110101110.

Link to post
Share on other sites
Programmer

To taurus:

 

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

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

Link to post
Share on other sites
taurus

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

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


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

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

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

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

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


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

Link to post
Share on other sites
Programmer

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

 

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

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

Link to post
Share on other sites
taurus

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

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

Например:

Код:

int chrA = 'A';

int chrB = '$';

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

char = 'A';

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

Спасибо.


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

Link to post
Share on other sites
Programmer

To taurus:

 

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

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

 

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

Link to post
Share on other sites
EfDim

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

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

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

Link to post
Share on other sites
Programmer

To EfDim:

 

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

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

Link to post
Share on other sites
Dedushka
To EfDim:

 

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

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

 

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


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

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

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

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

Link to post
Share on other sites
Programmer

To Dedushka:

 

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

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

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

Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

  • Recently Browsing   0 members

    No registered users viewing this page.


×
×
  • Create New...