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

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


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

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

Решил посмотреть урок про iCustom и написал по буферам. И во время проверки обнаружил, что значения одинаковые и пустые, хотя индикатор сигналит.


Похоже надо немного переделать сам индикатор, чтобы можно было корректно брать значения из буфера. Но моих познаний в mql тут недостаточно. Задайте свой вопрос еще раз для всех. Мне по такой же проблеме помог SilverKZ.
  • Лайк 1
Ссылка на сообщение
Поделиться на другие сайты

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

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

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

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

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

Перейти

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

Перейти

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

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

Задаю вопрос для всех)
Ребята, кто может помочь подправить индикатор? Ситуацию описывал выше, но повторюсь. Индикатор почему-то прописывает в обоих буферах нулевые значения одновременно, но сигналит исправно. Не могу поэтому загнать его в робота. Гляньте, кому не трудно.


Добавлено: 01-05-2017 08:14:00

Вопрос вдогонку.
Есть функция OrderProfit(), но не нашел функции OrderLoss(). Как же тогда узнать убыток ордера?
Все, разобрался. Сделал без функции.

Binary_Indicator.mq4

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

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


Задаю вопрос для всех)
Ребята, кто может помочь подправить индикатор? Ситуацию описывал выше, но повторюсь. Индикатор почему-то прописывает в обоих буферах нулевые значения одновременно, но сигналит исправно. Не могу поэтому загнать его в робота. Гляньте, кому не трудно.


Добавлено: 01-05-2017 08:14:00

Вопрос вдогонку.
Есть функция OrderProfit(), но не нашел функции OrderLoss(). Как же тогда узнать убыток ордера?
Все, разобрался. Сделал без функции.


Все он, индикатор, нормально прописывает в своих буферах и нормально сосчитывается через iCustom.
На счет второго вопроса: а как Вы думаете, если OrderProfit() имеет знак "минус" - это что?

Binary_Indicator.png

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

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


У меня он по такому коду дает такие числа:



Все верно, Вы же смотрите на первый бар - а на нем есть в данный момент сигнал от индикатора? Верно, нет, вот и дождитесь его и показания, снятые через iCustom, изменятся.
  • Лайк 2
Ссылка на сообщение
Поделиться на другие сайты

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

Если кому интересно, то в этом гайде довольно неплохо описано как обращаться и получать данные индикаторов без использования iCustom:

https://www.mql5.com/ru/articles/19

и сами исходники(mql4,5,cpp):



Добавлено: 01-05-2017 17:47:41

Разьясните плз, чет не совсем понял код индикатора binary_indicator:

в нем есть код расчета значений для выходных буферов

G_ibuf_76[Li_4] = Low[Li_4] - 1.3 * Ld_132;
G_ibuf_76[Li_4] - сам буфер номеру бара
Low[Li_4] - наименьшее значение по номеру бара
Ld_132 всегда 1 или 0, т.к ,берет ток true false
и того - буфер(бар)=наименьшее(бара) - 1.3 * 1 или 0
второй такой же только хай+1.3......
а что мы таким образом считаем?

19_ru.zip

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

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

Привет. Добавьте пожалуйста обновление по тикам в индикатор. Проходит время и зеленые и красные линии убегают, а нужно как белые линии. Например удалил с графика, а на новом тике должна опять появиться.

-Active_VolumeProfile.mq4

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

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

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

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

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

Так если ничего не меняется (т.к расчитывается на данный момент), то зачем в конце расчетов
WindowRedraw()?

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

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

Думаю это для перерасчета объема, в том числе недельного и месячного.
Изначально были горизонтальные линии, для удобства я переписал в obj_trend,добавил шифт.
Линии которые показывают объем за месяц, прошлый месяц, неделю и прошлую неделю.
Работают как надо, а другие спустя время, уходят влево.

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

Обучение языку MQL4 под MetaTrader 4 Опубликовано
Не помогло, тоже самое что я делал.
Спасибо за упорство, может реализовать также через bool , как и белая линия?


Добавлено: 01-05-2017 20:10:50

До конца рисует, из за шифта. Поствьте на минуте шифт 120!
Ссылка на сообщение
Поделиться на другие сайты

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

Чет я не врубаюсь, у меня на м1 - каждый бар - прорисовываются заново линии,,,,может дело не в этом??

USDCHFM1.png

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

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

В код нужно просто добавить


void OnTick(){
WindowRedraw();
}


А Time[0] считается в секундах, SHIFT и является в коде задержкой для перерисовки
Ссылка на сообщение
Поделиться на другие сайты

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

Ладно, а что делает

Li_120 = iBarShift(NULL, 0, iTime(NULL, PERIOD_W1, 0)) + 1; //плюс 1 зачем?
Li_124 = iBarShift(NULL, 0, iTime(NULL, PERIOD_W1, 1)); //это и есть вродь смещение на 1

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

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

Это расчет самого индикатора, а я добавил во внешние переменные шифт на ObjectCreate и сменил OBJ_HLINE на OBJ_TREND. Как я понял вот эту часть кода надо заставить обновляться по тикам

Спойлер

void f0_9(double Ad_0, color Ai_8, int Ai_12) {
string Ls_16 = "LineH" + "_" + DoubleToStr(Ad_0, Digits);
ObjectDelete(Ls_16);
ObjectCreate(Ls_16, OBJ_TREND, 0, 0, Ad_0, 0, 0, 0, 0);
ObjectSet(Ls_16, OBJPROP_TIME1, Time[0]+SHIFT);
ObjectSet(Ls_16, OBJPROP_TIME2, Time[50]);
ObjectSet(Ls_16, OBJPROP_PRICE1, Ad_0);
ObjectSet(Ls_16, OBJPROP_PRICE2, Ad_0);
ObjectSet(Ls_16, OBJPROP_COLOR, Ai_8);
ObjectSet(Ls_16, OBJPROP_STYLE, STYLE_DOT);
ObjectSet (Ls_16,OBJPROP_BACK,Draw_as_Background);
ObjectSetText(Ls_16, "Линия", 8, "Arial", Ai_8);
}




Добавлено: 02-05-2017 10:18:52

РЕШЕНО. Обновляю индикатором Symphonie Autorefresh_v3.0 Изменено пользователем Strong-Tezis
Ссылка на сообщение
Поделиться на другие сайты

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

Добрый день.
А есть ли какая нибудь функция, которая б считала кол во сигналов от индикатора?Например: восходящий тренд- 3 сигнала было, разрешается открывать ордер на Sell и в обратном направлении так же?
Проблема заключается в том, что после взятия TP или б/у, робот открывает опять ордер, но уже не в начале uptr или dntr! Помогите пожалуйста написать условие избегающее этого.

Slope_+бу.mq4

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

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

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

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

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

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

Войти

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

Войти

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


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

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