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

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


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

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

@MikR0ReR  Не нужно так громко писать.

Я Вас чем-то, обидел или оскорбил?

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

Если знаете, как привязать (ANCHOR_POINT), то подскажите.

Буду очень благодарен.

 

Причем тут MQL5???

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

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

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

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

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

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

Перейти

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

Перейти

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

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

ANCHOR_POINT не относится к ChartXYToTimePrice

Спасибо.

Значит здесь надо по другому задавать координаты ???

//--- Clicking on the fifth rectangle
   if(id==CHARTEVENT_OBJECT_CLICK) 
     {
      string clickedChartObject=sparam;
      if(clickedChartObject==obj_name[5]) 
        {
         string name="name_"+IntegerToString(MathRand()+100,0,' ');

         y=100;x=5;
         ChartXYToTimePrice(0,x,y,window,dt_1,price_1);
         ChartXYToTimePrice(0,x+250,y,window,dt_2,price_2);
         ChartXYToTimePrice(0,x,y+20,window,dt_3,price_3);

         ChannelCreate(0,name,0,dt_1,price_1,dt_2,price_2,dt_3,price_3,1,clrRed,STYLE_SOLID,1,InpBackRect,true,false,false,InpHidden_OBJ,0);
        }
     }

 

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

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

Я не телепат. Мы, не телепаты! Я тоже не программист.

Я не знаю чего вам надо. Код не всегда полезен. Поэтому лучше текстом объяснить, что вы хотите и результат который в итоге получается. А код всего лишь дополнение.

 

Причем тут MQL5??? Вы дали справку на MQL5.

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

Обучение языку MQL4 под MetaTrader 4 Опубликовано
2 минуты назад, MikR0ReR сказал:

Вы дали справку на MQL5

Это автоматическая ссылка и т.к. функция одинакова и в MQL4 и в MQL5, то и ссылка на новый справочник.

6 минут назад, MikR0ReR сказал:

Поэтому лучше текстом объяснить

индикатор по вызову создает в левом верхнем углу объект в данном случае (OBJ_CHANNEL)

строится на основании координат преобразованных функцией (ChartXYToTimePrice)

как задать условие создания объекта в другом углу?

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

Обучение языку MQL4 под MetaTrader 4 Опубликовано
  • @MakarFX Равноудаленный канал он же (OBJ_CHANNEL) не имеет привязки к углам. Каналу требуются 3 точки для построения, к углу это не относится.
  • Кто писал этот код, решил высчитать эти точки через ChartXYToTimePrice. Вот ChartXYToTimePrice привязывается к углу и он жестко закреплен к верхнему левому, без изменений.
  • В место ChartXYToTimePrice тогда используй ChartGetInteger с CHART_WIDTH_IN_PIXELS или CHART_HEIGHT_IN_PIXELS. Узнав ширину и высоту графика, не сложно будет высчитать точки построения OBJ_CHANNEL.
Ссылка на сообщение
Поделиться на другие сайты

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

как задать условие создания объекта в другом углу?

@MakarFX  в MQL есть 2 типа графических объектов = с привязкой к графику цены (цена и время) и с привязкой к экрану ( угол и пиксели), см. OBJ_LABEL и OBJ_TEXT.

Ваш канал ценовой - с привязкой к графику цены, а как иначе? он в месте с графиком уходит влево, поэтому к экрану его привязать можно, но сложно и на закрытии бара его позицию нужно корректировать - оно Вам надо? и зачем?

@MikR0ReR  Вам об этом и кричал несколько постов назад

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

Обучение языку MQL4 под MetaTrader 4 Опубликовано
В 30.01.2020 в 23:39, 0ll сказал:

Да, именно так - нужно опрашивать функцию, получать результат и выстраивать торговую логику.

Мне кажется, что здесь работает индикатор EnvelopesOnArray, а не сам "стандартный" Envelopes, поскольку у него и параметры другие:

2020-02-02_2.jpg

2020-02-02_1.jpg

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

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

Мне кажется, что здесь работает индикатор EnvelopesOnArray, а не сам "стандартный" Envelopes

Таки- да, Envelopes применён к массиву значений АТР. Вы на каком ТФ торгуете советником? Сглаженная граница АТР, имхо, на долгосроке может работать, на коротких ТФ со сделками внутри дня, нужно другой анализ АТР делать, с учётом внутри-суточных изменений активности.

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

Обучение языку MQL4 под MetaTrader 4 Опубликовано
7 минут назад, 0ll сказал:

Таки- да, Envelopes применён к массиву значений АТР. Вы на каком ТФ торгуете советником? Сглаженная граница АТР, имхо, на долгосроке может работать, на коротких ТФ со сделками внутри дня, нужно другой анализ АТР делать, с учётом внутри-суточных изменений активности.

Вообще-то мой скальпер работает на минутках, пришлось подшаманить и ввести условия открытия сделок под 5-минутный тайм-фрейм, как написано в коде фильтра волатильности.

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

Обучение языку MQL4 под MetaTrader 4 Опубликовано
13 минут назад, mischkus сказал:

Вообще-то мой скальпер работает на минутках

Я делал расчёт среднего значения каждой М1 свечи за 10 дней и потом график средней волатильности в течении суток. На этом можно сделать фильтр.

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

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

Приветствую. Ребята, подскажите, кто знает. Пишу советник на двухстороннем Мартине. Как корректно восстановить работу совы после разрыва Интернета или при приостановки и последующим включении совы? Где об этом инфу можно узнать?

Заданы значения глобальных переменных bool. В процессе работы эти переменные меняются с true на false в зависимости от открытых ордеров в сетке. При разрыве связи с интернетом сова начнет работу со значений глобальных переменных или последних присвоенных значений ?

И еще. Если Magic поставлю ноль, будет ли сова воспринимать открытые вручную ордера, как свои?

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

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

При разрыве связи с интернетом сова начнет работу со значений глобальных переменных или последних присвоенных значений ?

В ините совы ищи свои переменные и если есть - значит был сбой, читай что в них записано.

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

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

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

Всем Привет!!! Подскажите пожалуйста, как получить сигналы индикатора. Я пытался это сделать через iCustom, но не вышло, а почему не понимаю. 

Profit Sunrise-.mq4 TEST-Profit Sunrise-.mq4

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

Обучение языку MQL4 под MetaTrader 4 Опубликовано
  • @molot_1 Сам код получения данных из индикатора правильный!
  • Загвоздка в том, что ты пытаешься использовать советник. А советник работает от прихода новых тиков. А новые тики не приходят по выходным.

Выход из этой ситуации. взять инструмент который торгуется по выходным, на пример BTCUSD биткоин, ну или что там торгуется еще. Так же можно использовать тестер стратегий. Можно писать не советник, а скрипт или индикатор для тестов на реальном графике.

  • Что мешает производить тесты в тестере стратегий, так это строки ... Они запрещают работать индикатору в тестере. Убрав их, все будет работать в тестере стратегий.
if (IsTesting() == FALSE) {
}

 

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

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

@molot_1 fcplmfcplmfcplm True. Теперь на реальном графике не будет работать.

if (IsTesting() == FALSE) {                             удали вот эту строку

}                                                                    удали вот этот символ, предпоследний с низу, т.е предпоследнюю скобку.

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

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

Здравствуйте!

Сочинил простую функцию:

double bar_up(ENUM_TIMEFRAMES tf_bs_,int barometer_period_)
  {
  
   double res=0;
//****************

   for(int i=barometer_period_-1; i<=1; i--)
     {
      if(iClose(NULL,tf_bs_,i)>iOpen(NULL,tf_bs_,i))
        {
         res+=iClose(NULL,tf_bs_,i)-iOpen(NULL,tf_bs_,i);

        }
     }

   return res;
  }
От данной функции думал получать суммарный размер тел белых (закрытие выше открытия) свечей за указанный период barometer_period_, но что-то не так. Прошу помощи, если кто в силах, подскажите, что в данной функции не так...

Спасибо!

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

Обучение языку MQL4 под MetaTrader 4 Опубликовано
1 час назад, Владимир Стариков сказал:

подскажите, что в данной функции не так...

Я скобки здесь ставлю - return (res); а так всё нормально, вызов функции ещё покажите.

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

Обучение языку MQL4 под MetaTrader 4 Опубликовано
44 минуты назад, 0ll сказал:

Я скобки здесь ставлю - return (res); а так всё нормально, вызов функции ещё покажите.

Спасибо! просто я в коммент вогнал функцию (скрин). А на экране при тесте 0 (другой скрин). Поэтому и возникают сомнения.

8765432.PNG

1234567.PNG

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

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

@Владимир Стариков  в цикле условие завершения поправьте  for(int i = barometer_period_-1; i >= 1;  i--)

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

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

Добрый день,

на днях начал сам писать советника. За основу взял советника из 3-го урока курса молодого бойца здесь на сайте. Всё получилось, теперь хочу модифицировать его под свою стратегию.

Вопрос: как можно сделать, чтобы ордера открывались на закрытии текущей свечи (либо на открытии следующей) над/под средней, а не сразу при пересечении средней ценой?

В справке MQL4 заблудился, ничего не смог найти. Буду благодарен, если укажете направление, где искать :)

 

 

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

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

Вопрос: как можно сделать, чтобы ордера открывались на закрытии текущей свечи (либо на открытии следующей) над/под средней, а не сразу при пересечении средней ценой?

double MA_price = iMA(....); // значение МА на [1] свече
doudle O_pr = Open[1]; // цена открытия 1-го бара
doudle C_pr = Close[1];// цена закрытия 1-го бара

if(isNewBar())
{
	if(C_pr > MA_price && O_pr < MA_price) OrderSend(...); // открываем в БАЙ
	else if(C_pr < MA_price && O_pr > MA_price) OrderSend(...); // открываем в СЕЛЛ
}

isNewBar()- функция проверки открытия нового бара. Можно писком найти в этой ветке

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

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

Спасибо! Заработало

только лучше так:

if(isNewBar())
{
    double MA_price = iMA(....); // значение МА на [1] свече
	doudle O_pr = Open[1]; // цена открытия 1-го бара
	doudle C_pr = Close[1];// цена закрытия 1-го бара
	if(C_pr > MA_price && O_pr < MA_price) OrderSend(...); // открываем в БАЙ
	else if(C_pr < MA_price && O_pr > MA_price) OrderSend(...); // открываем в СЕЛЛ
}

чтобы не проверять на каждом тике

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

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

Добрый день всем участникам форума! Нужен мануал по написанию кликера для МТ4 для открытия сделок на бинарных опционах! Есть неплохой индикатор, хочу автоматизировать процесс! Кто знает помогите, все получится выложу все наработки в открытом коде! Спасибо заранее!!!!!

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

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

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

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

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

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

Войти

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

Войти

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


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

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