Перейти к содержанию

Обучение языку MQL4 под MetaTrader 4


Рекомендуемые сообщения

  • Ответов 6,8k
  • Создано
  • Последний ответ

Популярные авторы

Популярные авторы

Популярные посты

Смотрим видео-уроки, изучаем MQL:       Скачать видеокурс «MQL программирование. Как самому написать форекс советник/ индикатор/ скрипт»   P.S. Тема про Обучение MQ

Перейти

Циклы цикл for Иногда необходимо повторять одно и то же действие несколько раз подряд. Для этого используют циклы. К примеру, мы хотим проанализировать последние 10 баров и выяснить наименьшую цен

Перейти

Речь идет о том, что не будет значимых нововведений. А только баги периодически будут править. А вот все новое мол - в МТ5. Когда они вживую сказали то же самое на конференции в Москве, я уточнил: "То

Перейти
Обучение языку MQL4 под MetaTrader 4 Опубликовано


Благодарю за помощь. C верхними тенями порядок, а вот нижние неверно находит.

Спойлер



Извините, был невнимательным

AverageRange_mod1.mq4

  • Лайк 2
Ссылка на сообщение
Поделиться на другие сайты

Обучение языку MQL4 под MetaTrader 4 Опубликовано

Добрый день подскажите по 3 уроку, написал советник, не могу открыть отложенный стоп ордер, не закрывая другой. То есть открывается ордер на продажу по двум индикаторам, цена идет вверх, хочу не закрывать этот ордер по стоп лоссу а открыть стоп ордер локирующий на покупку, и закрыть оба ордера уже тогда, когда они достигнут средней линии индикатора TMA_Fair. А у меня получается так, открывается ордер к примеру на продажу, цена идет в другую сторону, достигает байстопа, и селл и байстоп закрываются, открывается опять селл.

Auto_robot_po_TMA_Fair_Stop.mq4

Ссылка на сообщение
Поделиться на другие сайты

Обучение языку MQL4 под MetaTrader 4 Опубликовано

Всем привет нужен совет.
//-------------------------------------------
цикл подсчета торговых ордеров
//-
int kolpos=0;



for(int pos=0; pos {
if(OrderSelect(pos,SELECT_BY_POS, MODE_TRADES))
{

if(OrderSymbol()==Symbol()
&& OrderMagicNumber()==Magic)
{kolpos++;}
//-- и посчитал его

}
}
//--------------------------------------------------
-этот цикл считает отложенные ордера и рыночные ордера.
Что нужно добавить в код чтобы цикл считал только рыночные ордера, а отложенные не подсчитывал ?

Ссылка на сообщение
Поделиться на другие сайты

Обучение языку MQL4 под MetaTrader 4 Опубликовано

Приветствую всех участников форума.
Программирование на MQL4 начал изучать недавно, процесс идет с трудом, но сейчас не об этом.
Хотелось бы воспользоваться консультацией специалистов. Есть ли способ научить советник, торгующий бинарными опционами, перед открытием позиции узнавать процент вознаграждения за сделку? Спасибо.

Ссылка на сообщение
Поделиться на другие сайты

Обучение языку MQL4 под MetaTrader 4 Опубликовано

Что нужно добавить в код чтобы цикл считал только рыночные ордера, а отложенные не подсчитывал ?

В условие выбора ордеров добавьте новое условие:
if(OrderSymbol()==Symbol()
&& OrderMagicNumber()==Magic
&& OrderType() )

Roman 13 Нужно искать фрактал против входа и потом корректировать СЛ на этот уровень +-отступ. Фракталы бывают разной длины, верхние нижние.
  • Лайк 2
Ссылка на сообщение
Поделиться на другие сайты

Обучение языку MQL4 под MetaTrader 4 Опубликовано

Т.е. при открытии позиции на продажу , стоп лос будет равен sl = iFractals(NULL,0,MODE_UPPER,1);

Нет. Индикатор пишет цену фрактала в соответствующий буфер только когда находит, т.е. надо искать в цикле от 1 последнее значение фрактала и только потом присваивать его СЛ.
Ссылка на сообщение
Поделиться на другие сайты

Обучение языку MQL4 под MetaTrader 4 Опубликовано

Т.е. при открытии позиции на продажу , стоп лос будет равен sl = iFractals(NULL,0,MODE_UPPER,1);
Нет. Индикатор пишет цену фрактала в соответствующий буфер только когда находит, т.е. надо искать в цикле от 1 последнее значение фрактала и только потом присваивать его СЛ.



Хорошо, а как это выглядит в коде ?
Ссылка на сообщение
Поделиться на другие сайты

Обучение языку MQL4 под MetaTrader 4 Опубликовано
Roman 13 есть гугл и с помощью его я нашёл то, что Вам нужно:
Пример от Кима (в конце 6 страницы)

Ссылка на сообщение
Поделиться на другие сайты

Обучение языку MQL4 под MetaTrader 4 Опубликовано

Добрый день. Кто может добавить в этот индикатор VWAP_close Линии Канала?

Вот формула Линий Канала VWAPCH (по сути это будет VWAP_Болинджер):

Вычисляем «Стандартное Отклонение»:

StdDev = √((SUM ((CLOSE-VWAP )*2,N)/N))


Вычисляем «Линии Канала VWAPCH» :

Верхняя Линия TL = VWAP + (D * StdDev)
Нижняя Линия BL = VWAP - (D * StdDev),

где «D» - Число стандартных отклонений StdDev

Пример визуального представления на Скрине + сам Индикатор

ТС_3.png
vwap_close.mq4

Ссылка на сообщение
Поделиться на другие сайты

Обучение языку MQL4 под MetaTrader 4 Опубликовано

Здравствуйте! Есть торговая система, по которой очень тяжело торговать руками. Суть системы очень простая, но требуется очень много действий мышкой и расчетов. Суть системы в следующем:
В определенное время на X расстояние от цены выставляются разнонаправленные сетки ордеров( скажем 5 на buy и 5 на sell) с короткими TP.
Если цена идет и начинает активировать сетку ордеров на Бай, то нижняя сетка следует за верхней на X расстояние.
Далее самая сложная часть:
Если цена идет в одну сторону, скажем вверх, то сетка просто траллит. Ниже постараюсь написать, на сколько могу, понятнее)) ~x(
Скажем цена шла в сторону Бай сетки и несколько ордеров закрыла по ТП, а потом активировала еще один ордер,развернулась и прошла вниз Х пунктов и активировала ордер из нижней сетки.
Это значит, что сова так же траллит цена двумя сетками, но тот ордер на бай, который в убытке, закрывается за счет прибыльных ордеров по нижней сетке. Нужно сделать чтобы сова всегда закрывала один убыточный ордер за счет прибыльных ордеров.
Вот как то так вкратце. Если кто будет готов взяться помочь, то обсудим подробнее. Прибыльность стратегии скорее всего вызывает вопросы.
Основной заработок будет идти на ребейтах и когда цена будет хорошо двигаться в одном направление.

Ссылка на сообщение
Поделиться на другие сайты

Обучение языку MQL4 под MetaTrader 4 Опубликовано

Видел похожую сову на другом форуме, одна из реализаций "Русской системы". комментировать не буду, но на самом деле не всё так просто...

Ссылка на сообщение
Поделиться на другие сайты

Обучение языку MQL4 под MetaTrader 4 Опубликовано

Доброго времени суток!
Объясните новичку, почему так (на скрине вопрос).

Спойлер


Изменено пользователем falvaspav
Ссылка на сообщение
Поделиться на другие сайты

Обучение языку MQL4 под MetaTrader 4 Опубликовано

Ребят помогите решить проблему с масивом. Хотелось чтобы торговля велась когда ATR находится выше Moving Average если ниже торговлю запретить набросал масив но не могу понять что не работает

Цитата

int MaOnATR()
{
int i;
int limit;
int counted_bars = IndicatorCounted();
double ATRBuffer[], MAofATRBuffer[];

if(counted_bars
if(counted_bars>0) counted_bars--;
limit=Bars-counted_bars;

for(i=0; i {
ATRBuffer=iATR(Symbol(), NULL, Atr_period, i);
MAofATRBuffer=iMAOnArray(ATRBuffer, 0, Ma_period_3, Ma_shift_3, Ma_method_3, i);
if ((ATRBuffer[i+1] - MAofATRBuffer[i+1]) * (ATRBuffer - MAofATRBuffer) {
return(-1);
}
if ((ATRBuffer[i+1] - MAofATRBuffer[i+1]) * (ATRBuffer - MAofATRBuffer) > 0)
{
return(1);
}
}
return(0);
}




Ссылка на сообщение
Поделиться на другие сайты

Обучение языку MQL4 под MetaTrader 4 Опубликовано
BadWolf АТР это средний размер баров, средняя от АТР = АТР от большего количества баров. Возьмите 2 АТР поменьше и побольше и сравнивайте между собой и будет счастье без массивов.
По сути: if ((ATRBuffer[i+1] - MAofATRBuffer[i+1]) * (ATRBuffer - MAofATRBuffer) - нет индексов массива в правой половине
Ссылка на сообщение
Поделиться на другие сайты

Обучение языку MQL4 под MetaTrader 4 Опубликовано

Создал тему по советнику, по интересной стратегии, но есть проблема и требует вмешательства настоящего программиста. Предполагаю что будет три варианта:
- ни кто не захочет помочь
- перепишут и усовершенствуют написанную мной сову
- напишут сову заново

Сова и стратегия здесь:
http://tlap.com/forum/arkhiv/25/interesnyy-sovetnik-rastvormoe-nazvanie/16567/new;topicseen#new

Помогших запишем или в соавторы или в разработавших новую сову по стратегии.


Вот советник:

Rastvor.mq4

Изменено пользователем boovood
Ссылка на сообщение
Поделиться на другие сайты

Обучение языку MQL4 под MetaTrader 4 Опубликовано

Очередная неваляшка, она же качели, перевёртыш и т.д.
Ссылка 1
Ссылка 2
Ссылка 3
Ссылка 4
http://tlap.com/forum/laboratoriya-profitfx/24/sovetnik-pendulummethod-nevalyashka-nam-nuzhno-dvizhenie-tseny-v-kakuyu-storonu-ne-vazhno/12903/
Ссылка 5

Сливает во флёте, говорите надо усовершенствовать? - напишите как.

  • Лайк 1
Ссылка на сообщение
Поделиться на другие сайты

Обучение языку MQL4 под MetaTrader 4 Опубликовано

Прошу починить индикатор по коррекциям фибо, он ну очень удобный)
Проблема в том что терминал зависает сразу как только кинешь на график, не помогает ни перезагрузка терминала, ни компьютера, только удаление самого индикатора из терминала.

И было бы круто улучшить индикатор фибо спираль. Надо что бы можно было расставить неограниченное число спиралей (или хотя бы десяток) на один график и они не удалялись автоматически при переходе на другой тф. Сейчас так сделать нельзя((

Надеюсь за это кто нибудь возьмется.

Fibonacci_All_TF.mq4
FX5_FiboSpiral_v1_0.mq4

Изменено пользователем shout
Ссылка на сообщение
Поделиться на другие сайты

Обучение языку MQL4 под MetaTrader 4 Опубликовано

Добрый вечер.
Продолжение темы по ТЗ Старика отсюда:
http://tlap.com/forum/laboratoriya-profitfx/24/open-source-sovetnik-forex-setka-trader-mod-i-eaqj-setka/2738/?do=findComment&comment=366858
Старик, хотел бы подтвердить- правильно ли я понял ТЗ.
Набор собираемых данных:
-Количество баров
-Средняя волатильность
-Среднее тело
-Средняя верх. Тень
-Средняя нижн. Тень
-Макс. Свеча
-Макс. Тело свечи
-Макс. верхняя тень
-Макс. Нижняя тень

Данный набор считается отдельно для:
- весь период (все свечи, только БАЙ, только СЕЛЛ);
- по дням недели(все свечи, только БАЙ, только СЕЛЛ);
-по временным промежуткам(все свечи, только БАЙ, только СЕЛЛ).
Во вложении макет представления данных.


Накидал черновой вариант.
Основная цель- проверить корректность расчетов. Пока вывод информации сделал частичным через Comment.
Прошу проверить арифметику.
Работает как оригинал- индикатор. В конце проекта переделаю на скрипт.

Visual.png
AverageStatistic_1.0.mq4

Изменено пользователем usver73
  • Лайк 3
Ссылка на сообщение
Поделиться на другие сайты

Обучение языку MQL4 под MetaTrader 4 Опубликовано

Почти добил..
Описание настроек(как всегда- выдраны из кода :)) )

Спойлер



datetime BeginDateCalc = D'2017.01.01'; // Начало исследуемого периода
datetime EndDateCalc = D'2017.12.31 23:59:59';// Конец исследуемого периода
string aa1="ИНТРАДЕЙ ПЕРИОДЫ";
int IDbegin0 =0;//Интрадей начало 1-го периода
int IDlenth0 =0;//Интрадей продолжительность 1-го периода
int IDbegin1 =0;//Интрадей начало 2-го периода
int IDlenth1 =0;//Интрадей продолжительность 2-го периода
int IDbegin2 =0;//Интрадей начало 3-го периода
int IDlenth2 =0;//Интрадей продолжительность 3-го периода
int IDbegin3 =0;//Интрадей начало 4-го периода
int IDlenth3 =0;//Интрадей продолжительность 4-го периода

extern string aa3="-----------------------";
bool SetChart =false;//Очищать чарт и устанавливать цвета

//------------------------------------------------------------------+
// входные параметры инфопанели
//------------------------------------------------------------------+
string aa6="НАСТРОЙКИ ИНФОРМАЦИОННОЙ ПАНЕЛИ";//
int ShiftCol = 320; //ширина между столбцами
int ShiftRow = 200; //высота между строк
int StartShift = 20; // смещение от края
int FontSize = 9; //Размер шрифта
color BackColor = clrWhiteSmoke; //Цвет фона
color FontColor = clrDarkBlue; //Цвет шрифта


Комментарии будут краткими:
Интрадей периоды- четыре периода, задаваемые Началом (час) и Продолжительностью(час). Например, Начало в 2, продолжительность 3. Исследуется период с 2:00:00 до 4:59:59.
SetChart - если ТРУ, то чарт, на который брошен индюк (или скрипт) будет отформатирован:
убрана сетка, периоды, линии цен, ВСЕ объекты!, цвета фона и шрифта. Сделано для облегчения восприятия- информации много...
Последняя группа- настройка положения инфопанели на чарте и ее основные параметры.
Что не сделано:
1. блок Интрадей требует многофакторной проверки корректности введенных параметров. Пока проверяется длина периода- д.б. >0.
2. Также требуется расширять логику рисования Интрадей- периодов: сейчас если период не задан, то отображеются 0-е значения и окончание периода может отображаться криво(например, старт в 21, продолжительность 10. Окончание отобразится - в 31 час ;))
Хотя ковырять не охота- в конце концов не так уж лишняя информация и мешается...
3. Не дописан код вывода в файл. Но это дело техники, завтра доделаю.
На обсуждение:
1. таблица довольно много занимает места на экране- на буках может не влезть. Может переделать на сетку 4 х 3 ?
2. Можно прикрутить цикл по всем инструментам из обзора рынка. Тогда можно статистику по всем парам в один файл загнать...

п.с. Во вложении с суфф. ind - индикатор, с суфф. scr- скрипт.
п.п.с. И самое главное! Проверьте кто-нибудь корректность данных!
Я ,конечно, проверял (на больших ТФ), но глаз все равно "замылен" .

AverageStatistic_1.1scr.mq4
AverageStatistic_1.1ind.mq4
ps.png

Изменено пользователем usver73
  • Лайк 7
Ссылка на сообщение
Поделиться на другие сайты

Обучение языку MQL4 под MetaTrader 4 Опубликовано
usver73, очень хорошо! =d>

Предложения есть следующие:

1) SetChart что-то очень жестокое - после применения скрипта на нескольких парах терминал пересобирать надо будет.
И/или профиль сохранять надо и потом восстанавливать. Народ напрочь запутается по любому, будет забывать и будет ругань.
намного проще делать фон под шрифтом при выводе инфы.
Гляньте как организован вывод в скрипте AccountInfo - выводится непрозрачное окошко с текстом поверх всего, глянули, закрыли и забыли, ничего не затирается/обнуляется.

2) интрадейную инфу стоит выводить только по одному внутридневному интервалу (в часах) - но той же структуры, что и сводную инфу за весь период в днях.
То есть сводная таблица за период дата/дата и эта же инфа с разбивкой по дням недели понедельник/пятница.
И интрадейный блок (выбранные часы) - сводная и эта же инфа с разбивкой по дням недели.
На самом деле интродейные выборки будут использоваться не так уж и часто - и, если кому-то будет нужно проанализировать несколько часовых интервалов, то несколько раз вызовет скрипт.
В принципе, если интродейный интервал в часах не будет задан - можно и таблицы незаполненные не визуализировать.

3) имхо, достаточно выводить 12 таблиц. можно/лучше 4 строки по 3 столбца.
сводная, пн, вт - за период
среда, чт, пт - за период
сводная, пн, вт - интрадей
среда, чт, пт - интрадей

Нормально?
  • Лайк 1
Ссылка на сообщение
Поделиться на другие сайты

Для публикации сообщений создайте учётную запись или авторизуйтесь

Вы должны быть пользователем, чтобы оставить комментарий

Создать учетную запись

Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!

Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.

Войти

  • Специальное предложение


  • Рекомендуемые брокеры

  • ×
    ×
    • Создать...