- Новый контент
- Книга Masterforex-V
-
Академия
- Как стать слушателем Академии
- ⇒ ТС Masterforex-V - Интенсивный Курс Онлайн
- ⇒ Факультет Форекс Скальпинга Magister
- ⇒ Факультет СРЕДНЕсрочной торговли и паттернов ГОСТ
- ⇒ Кафедра ДФВА
- ⇒ Кафедра Опционной Торговли
- ⇒ Факультет биржевой торговли "Futures Trade and Stock Exchange"
- ⇒ Факультет торговли объёмом"
- ⇒ Факультет Инвестиций
- ⇒ ФАКУЛЬТЕТ Пробой Флета, Автоматизация, Автотрейдинг
- ⇒ Кафедра Спектрального Анализа FOREX и ИНДЕКСОВ валют
- ⇒ Система раннего прогнозирования в ТС МФ на основе модернизации АО и WPR
- ⇒ Кафедра FMA_Sar
- ⇒ Кафедра синергетического объемно-волнового анализа (СОВА)
- ⇒Кафедра бинарных опционов
- Как продлить доступ в закрытую часть Академии?
- Форумы
- Галерея
- Блоги
- Скачать
- Контакты
- Личный кабинет
- Больше
Инвестиционные фонды NordFx: профессиональное управление и прозрачность
|
Хитрости и трюки MQL
Автор темы:
Liv
, июн 05 2007 01:26
31 ответов в этой теме
#1
Опубликовано 05 Июнь 2007 - 01:26
Здесь будут собираться все хитрости и трюки этого простого языка. Приглашаю всех делиться своими знаниями.
Удачи!
#2
Опубликовано 05 Июнь 2007 - 01:54
Иногда в стратегии выбает необходимо определить пересечение двух индикаторов.
В сложных случаях код, подобный этому, работает не четко:
Теже переплетенные SMA сущее наказание для бокового рынка. Стратегия становится непредсказуемой.
Предлагаю такой выход из положения:
Исправления и предложения приветствуются.
Скоро появится усовершенствованная версия функции.
В сложных случаях код, подобный этому, работает не четко:
MQL
//aV1 - один индикатор
//aV2 - другой индикатор
[color=blue;font-weight:bold]if[/color]( aV1[pos] > aV2[pos] && aV1[pos + 1] < aV2[pos + 1] )
{
// ......
}
//aV2 - другой индикатор
[color=blue;font-weight:bold]if[/color]( aV1[pos] > aV2[pos] && aV1[pos + 1] < aV2[pos + 1] )
{
// ......
}
Теже переплетенные SMA сущее наказание для бокового рынка. Стратегия становится непредсказуемой.
Предлагаю такой выход из положения:
MQL
[color=blue;font-weight:bold]int[/color] isCross([color=blue;font-weight:bold]double[/color] aV1[], [color=blue;font-weight:bold]double[/color] aV2[], [color=blue;font-weight:bold]int[/color] aSh[color=blue;font-weight:bold]if[/color]t, [color=blue;font-weight:bold]int[/color] aMinD[color=blue;font-weight:bold]if[/color], [color=blue;font-weight:bold]int[/color] aLimit[color=red;]Bars[/color])
{
// 0 - не пересекается
// 1 - aV1 пересекает aV2 снизу вверх
// -1 - aV1 пересекает aV2 сверху вниз
// aMinD[color=blue;font-weight:bold]if[/color] - минимальное расхождение в пунктах, которое не считается переплетением
// aLimit[color=red;]Bars[/color] - как глубоко в историю искать факт пересечения
[color=blue;font-weight:bold]int[/color] i;
[color=blue;font-weight:bold]if[/color] (aV1[aSh[color=blue;font-weight:bold]if[/color]t] > aV2[aSh[color=blue;font-weight:bold]if[/color]t]) //aV1 больше, ищем пересечение снизу вверх
{
[color=blue;font-weight:bold]for[/color]( i=0; i<aLimit[color=red;]Bars[/color]; i++)
{
[color=blue;font-weight:bold]if[/color]( aV2[i + aSh[color=blue;font-weight:bold]if[/color]t] - aV1[i + aSh[color=blue;font-weight:bold]if[/color]t] >= aMinD[color=blue;font-weight:bold]if[/color]*Po[color=blue;font-weight:bold]int[/color] ) //превысили минимальное расхождение
[color=blue;font-weight:bold]return[/color] (1);
}
}
[color=blue;font-weight:bold]if[/color] (aV1[aSh[color=blue;font-weight:bold]if[/color]t] < aV2[aSh[color=blue;font-weight:bold]if[/color]t]) //aV1 меньше, ищем пересечение сверху вниз
{
[color=blue;font-weight:bold]for[/color]( i=0; i<aLimit[color=red;]Bars[/color]; i++)
{
[color=blue;font-weight:bold]if[/color]( aV1[i + aSh[color=blue;font-weight:bold]if[/color]t] - aV2[i + aSh[color=blue;font-weight:bold]if[/color]t] >= aMinD[color=blue;font-weight:bold]if[/color]*Po[color=blue;font-weight:bold]int[/color] ) //превысили минимальное расхождение
[color=blue;font-weight:bold]return[/color] (-1);
}
}
//если мы здесь, значит кривые совпадают
//aV1 == aV2
[color=blue;font-weight:bold]return[/color] (0);
}
{
// 0 - не пересекается
// 1 - aV1 пересекает aV2 снизу вверх
// -1 - aV1 пересекает aV2 сверху вниз
// aMinD[color=blue;font-weight:bold]if[/color] - минимальное расхождение в пунктах, которое не считается переплетением
// aLimit[color=red;]Bars[/color] - как глубоко в историю искать факт пересечения
[color=blue;font-weight:bold]int[/color] i;
[color=blue;font-weight:bold]if[/color] (aV1[aSh[color=blue;font-weight:bold]if[/color]t] > aV2[aSh[color=blue;font-weight:bold]if[/color]t]) //aV1 больше, ищем пересечение снизу вверх
{
[color=blue;font-weight:bold]for[/color]( i=0; i<aLimit[color=red;]Bars[/color]; i++)
{
[color=blue;font-weight:bold]if[/color]( aV2[i + aSh[color=blue;font-weight:bold]if[/color]t] - aV1[i + aSh[color=blue;font-weight:bold]if[/color]t] >= aMinD[color=blue;font-weight:bold]if[/color]*Po[color=blue;font-weight:bold]int[/color] ) //превысили минимальное расхождение
[color=blue;font-weight:bold]return[/color] (1);
}
}
[color=blue;font-weight:bold]if[/color] (aV1[aSh[color=blue;font-weight:bold]if[/color]t] < aV2[aSh[color=blue;font-weight:bold]if[/color]t]) //aV1 меньше, ищем пересечение сверху вниз
{
[color=blue;font-weight:bold]for[/color]( i=0; i<aLimit[color=red;]Bars[/color]; i++)
{
[color=blue;font-weight:bold]if[/color]( aV1[i + aSh[color=blue;font-weight:bold]if[/color]t] - aV2[i + aSh[color=blue;font-weight:bold]if[/color]t] >= aMinD[color=blue;font-weight:bold]if[/color]*Po[color=blue;font-weight:bold]int[/color] ) //превысили минимальное расхождение
[color=blue;font-weight:bold]return[/color] (-1);
}
}
//если мы здесь, значит кривые совпадают
//aV1 == aV2
[color=blue;font-weight:bold]return[/color] (0);
}
Исправления и предложения приветствуются.
Скоро появится усовершенствованная версия функции.
Сообщение изменено: MAMOHT, 05 Июнь 2007 - 02:24 .
Александр. ICQ: 250-84-85-80
#3
Опубликовано 01 Август 2007 - 11:47
Для контроля пересечений надо брать прямоугольник с координатами контролируемых линий, которые его пересекают, и исследовать возможные комбинации прохода линий. Комбинаций не так уж и много.
Кафедра Спектрального Анализа FOREX и ИНДЕКСОВ валют.
Skype: zhunko
Skype: zhunko
#4
Опубликовано 14 Октябрь 2007 - 02:11
Про контроль пересечений (например мувингов).
Для контроля пересечения используется одновременно нескольких условий, соответственно в цикле "while..." или "for..." обрабатываем нужный диапазон баров, в условие - "if" побарно считаем пересечения, объеденяя каждое из этих трех условий логическим ИЛИ - "||":
1) на текушем бару значения индикаторов равны.
2) на предыдущем баре значение индикатора 1 больше значения индикатора 2 И - "&&" на текущем баре значение индикатора 1 меньше значение индикатора 2 (пересечение сверху).
3) на предыдущем баре значение индикатора 2 больше значения индикатора 1 И - "&&" на текущем баре значение индикатора 2 меньше значение индикатора 1 (пересечение снизу).
Для контроля пересечения используется одновременно нескольких условий, соответственно в цикле "while..." или "for..." обрабатываем нужный диапазон баров, в условие - "if" побарно считаем пересечения, объеденяя каждое из этих трех условий логическим ИЛИ - "||":
1) на текушем бару значения индикаторов равны.
2) на предыдущем баре значение индикатора 1 больше значения индикатора 2 И - "&&" на текущем баре значение индикатора 1 меньше значение индикатора 2 (пересечение сверху).
3) на предыдущем баре значение индикатора 2 больше значения индикатора 1 И - "&&" на текущем баре значение индикатора 2 меньше значение индикатора 1 (пересечение снизу).
И не думать - как приземлится, а у птиц свободе учиться - лететь, оставив - все то что жаль... (A-MЕГА)
#5
Опубликовано 26 Декабрь 2007 - 03:19
Всем привет, если есть у кого книга: MQL4. Полное руководство по языку программирования MetaQuotes Language 4.pdf, поделитесь плиз, буду очень благодарен.
#6
Опубликовано 26 Декабрь 2007 - 10:27
Почему справка МетаЭдитора не подходит?Всем привет, если есть у кого книга: MQL4. Полное руководство по языку программирования MetaQuotes Language 4.pdf, поделитесь плиз, буду очень благодарен.
Кафедра Спектрального Анализа FOREX и ИНДЕКСОВ валют.
Skype: zhunko
Skype: zhunko
#7
Опубликовано 27 Декабрь 2007 - 05:00
Почему справка МетаЭдитора не подходит?
Под этим руководством я понимаю полное описание языка с примерами и с разжевыванием, короче для начинающих, а в справке все очень поверхностно, общее описание, поэтому понять как работает все в комплексе, не зная других языков программирования для меня проблематично.
Конечно, можно за основу взять какой-нибудь похожий индюк и поковырять его, но это все не то, считаю, что нужно изнутри знать язык.
#8
Опубликовано 27 Декабрь 2007 - 05:10
Только на собственном опыте. Подход при, котором изучаешь творения других, не так уж плох.Под этим руководством я понимаю полное описание языка с примерами и с разжевыванием, короче для начинающих, а в справке все очень поверхностно, общее описание, поэтому понять как работает все в комплексе, не зная других языков программирования для меня проблематично.
Конечно, можно за основу взять какой-нибудь похожий индюк и поковырять его, но это все не то, считаю, что нужно изнутри знать язык.
По F1 доступна справка по всем функциям. Там есть примеры и основы языка.
Кафедра Спектрального Анализа FOREX и ИНДЕКСОВ валют.
Skype: zhunko
Skype: zhunko
#9
Опубликовано 29 Декабрь 2007 - 07:31
Вадим правильно тебе про опыт сказал.Под этим руководством я понимаю полное описание языка с примерами и с разжевыванием, короче для начинающих, а в справке все очень поверхностно, общее описание, поэтому понять как работает все в комплексе, не зная других языков программирования для меня проблематично.
Конечно, можно за основу взять какой-нибудь похожий индюк и поковырять его, но это все не то, считаю, что нужно изнутри знать язык.
а если хочешь "разжёвывания" - сходи на mql4.com - там найдёшь много интересного. сходи на сайт Ведихина. сходи на форум альпари - там есть ссылки на "статьи" разной степени "разжёванности" Rosh'а, есть ветки как раз для тех, кто не имеет опыта никакого в программировании.. хотя, честно говоря, мне сложно оценить их реальную ценность для неподготовленного человека..
#10
Опубликовано 29 Декабрь 2007 - 05:49
Вадим правильно тебе про опыт сказал.
а если хочешь "разжёвывания" - сходи на mql4.com - там найдёшь много интересного. сходи на сайт Ведихина. сходи на форум альпари - там есть ссылки на "статьи" разной степени "разжёванности" Rosh'а, есть ветки как раз для тех, кто не имеет опыта никакого в программировании.. хотя, честно говоря, мне сложно оценить их реальную ценность для неподготовленного человека..
Ну и что же тут правильного? подход сходи туда, затем туда и еще вот туда, считаю неправильным, по той причине, что для того, чтобы разбираться в какой-либо области, нужно ее изучить комплексно, начиная с азов(основы), а уже потом, когда имеется определенная база знаний, можно и лазить по вышеназванным сайтам, набирать опыт. ИМХО.
А так наша беседа получается в деструктивном ключе, я задал конкретный вопрос о конкретной книге, которая для меня и не только для меня может быть полезной, если вам не нравится вопрос - игнорируйте его или попросите модераторов стереть его, я ведь возражать не буду, а советовать куда мне сходить со своим вопросом и какую справку посмотреть я не просил. сайты, указанные вами я и без вас знаю.
#11
Опубликовано 30 Декабрь 2007 - 05:39
ну что ж, я тебе сказал где всё именно "разжёвано", но.. ты прав! оставайся правым - я рад, что ты умнее меня.Ну и что же тут правильного? подход сходи туда, затем туда и еще вот туда, считаю неправильным, по той причине, что для того, чтобы разбираться в какой-либо области, нужно ее изучить комплексно, начиная с азов(основы),
#12
Опубликовано 02 Январь 2008 - 10:39
Для того, чтобы научиться писать скрипты на MQL4 достаточно того, что написано на этом форуме плюс справка в MetaEditor. Язык очень простой, не объектный, линейно-процедурное программирование является самой удобной формой для написания программ. Но для этого нужно учиться, самому писать.... а иначе будет не обучение, а просто списывание - так ничего нового не изобретёшь!
Удачи!
#13
Опубликовано 10 Январь 2008 - 06:20
возможно ли реализовать отправку СМС при определенном событии на MQL/MQL4?
Сообщение изменено: rang, 10 Январь 2008 - 06:22 .
#14
Опубликовано 10 Январь 2008 - 06:39
На прямую нельзя.возможно ли реализовать отправку СМС при определенном событии на MQL/MQL4?
В кривую можно.
Отправляешь на почту из МТ4 письмо.
И если твой провайдер мобильной связи поддерживает SMS из почты, то можно получить от туда сообщение.
Кафедра Спектрального Анализа FOREX и ИНДЕКСОВ валют.
Skype: zhunko
Skype: zhunko
#15
Опубликовано 11 Январь 2008 - 02:08
ок, спасибо
пока реализовал идею на perl
пока реализовал идею на perl
Посетителей, читающих эту тему: 0
0 пользователей, 0 гостей, 0 анонимных пользователей