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

От xbms, 13 апреля, 2013 в Уголок Программиста

#5876

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

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

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

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

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

 

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

Изменено 31 января, 2020 пользователем MakarFX

#5877

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

#5878
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);
        }
     }

 

#5879

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

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

 

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

#5880
2 минуты назад, MikR0ReR сказал:

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

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

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

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

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

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

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

#5881
  • @MakarFX Равноудаленный канал он же (OBJ_CHANNEL) не имеет привязки к углам. Каналу требуются 3 точки для построения, к углу это не относится.
  • Кто писал этот код, решил высчитать эти точки через ChartXYToTimePrice. Вот ChartXYToTimePrice привязывается к углу и он жестко закреплен к верхнему левому, без изменений.
  • В место ChartXYToTimePrice тогда используй ChartGetInteger с CHART_WIDTH_IN_PIXELS или CHART_HEIGHT_IN_PIXELS. Узнав ширину и высоту графика, не сложно будет высчитать точки построения OBJ_CHANNEL.
#5882
1 час назад, MakarFX сказал:

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

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

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

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

#5883

@MikR0ReR 

@0ll 

Спасибо за разъяснения и помощь.

Для себя вопрос решил так

#5884
В 30.01.2020 в 23:39, 0ll сказал:

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

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

2020-02-02_2.jpg

2020-02-02_1.jpg

#5885
1 час назад, mischkus сказал:

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

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

Изменено 2 февраля, 2020 пользователем 0ll

#5886
7 минут назад, 0ll сказал:

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

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

#5887
13 минут назад, mischkus сказал:

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

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

#5888

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

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

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

Изменено 8 февраля, 2020 пользователем batmanuyga

#5889
14 часов назад, batmanuyga сказал:

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

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

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

#5890

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

Profit Sunrise-.mq45 скач. TEST-Profit Sunrise-.mq48 скач.

Изменено 16 февраля, 2020 пользователем molot_1

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

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

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

 

#5892

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

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

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

Изменено 16 февраля, 2020 пользователем MikR0ReR

#5893

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

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

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_, но что-то не так. Прошу помощи, если кто в силах, подскажите, что в данной функции не так...

Спасибо!

#5894
1 час назад, Владимир Стариков сказал:

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

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

#5895
44 минуты назад, 0ll сказал:

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

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

8765432.PNG

1234567.PNG

#5896

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

#5897

Добрый день,

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

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

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

 

 

#5898
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()- функция проверки открытия нового бара. Можно писком найти в этой ветке

#5899
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(...); // открываем в СЕЛЛ
}

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

#5900

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

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

Перейти к списку тем
Форум · 2.0.20260627.0025