Любые вопросы новичков по MQL4 и MQL5, помощь и обсуждение по алгоритмам и кодам - страница 2415

 
Grigori.S.B #:

Вопрос по MQL5/MT5.
Есть индикатор, который рисует некую гистограмму. Каким образом можно отобразить текущее значение линией 
и числом на шкале справа как на рисунке?

Только так: линия - OBJ_TREND, значение - OBJ_LABEL ???
Или можно какими-то опциями индикаторных буферов?

OBJ_HLINE и значение(метка) само напишется

 
Maxim Kuznetsov #:

OBJ_HLINE и значение(метка) само напишется

Спасибо.
Единственный минус - это то что линия будет на весь график, т.е. перечеркнет гистограмму слева.

 
Grigori.S.B #:

Спасибо.
Единственный минус - это то что линия будет на весь график, т.е. перечеркнет гистограмму слева.

Если цвет линии clrNONE - линия не рисуется, но фон метки будет чёрный.

 
Grigori.S.B #:

Спасибо.
Единственный минус - это то что линия будет на весь график, т.е. перечеркнет гистограмму слева.

Есть же объекты Левая и Правая ценовые метки. 
Хотя, нет, не подойдëт
 
Artyom Trishkin #:
Есть же объекты Левая и Правая ценовые метки. 
Хотя, нет, не подойдëт

Спасибо, но ценовая метка за пределы графика вправо не уходит.
Мне бы ее с правой вертикальной шкалой совместить.


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

Ну ладно, не осваивать же канвас для борьбы с этим недугом. )))

Maxim Kuznetsov
Maxim Kuznetsov
  • 2024.06.07
  • www.mql5.com
Профиль трейдера
 
Grigori.S.B #:
Ну ладно, не осваивать же канвас для борьбы с этим недугом. )))

Канвас там не сможет нарисовать.

Ещё пунктиром можно сделать.

 
trader6_1 #:

Канвас там не сможет нарисовать.

Сможет, если ценовую шкалу и шкалу индикатора тоже на нём сделать)))

 
Grigori.S.B #:

Спасибо, но ценовая метка за пределы графика вправо не уходит.
Мне бы ее с правой вертикальной шкалой совместить.


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

Ну ладно, не осваивать же канвас для борьбы с этим недугом. )))

судя по скриншоту:

ещё можно в свойствах индикатора добавить уровень (то есть задать свойство кол-во уровней=1 и настроить этот уровень)

это даже логичнее чем рисовать доп.линию объектом

 

Всем привет! Подскажите , направьте, поделитесь. ТС находит времена разворотов рынка. Их четыре даты. При наступлении этого времени необходимо по критерию "трех бойцов" с "машкой" ( к примеру) открыть ордер (B или S) и дальше вести этот ордер, ---стопы, триалы, безубытки и т.д.... ( эта реализация кода страдает, и все вроде пишут одно и тоже, но разбираясь, кто в лес кто по дрова). И самое главное как засунуть эти ВРЕМЕНА в одно условие IF. Т.к. придется для каждого ВРЕМЕНИ прописывать индикатор, открытие (B иS)  ит.д. , что собственно у меня и реализовано. Но это куча дублирующих строк и утяжеление кода. Чтоб понятно и наглядно вот что накидал.


if (TimeCurrent() == blok_1_time_1_1) 
  {if(iClose(Symbol(), PERIOD_H1, 0) < iClose(Symbol(), PERIOD_H1, 1) && iClose(Symbol(), PERIOD_H1, 1) < iClose(Symbol(), PERIOD_H1, 2))
     {int ticket_a_13_1 =  OrderSendX(Symbol(), OP_BUY,  Lots, Ask, Slippage, 0, 0, comment, Magic, 0, Lime);  ModifyOrder();Trailing();}
    else {ticket_a_68_1 =  OrderSendY(Symbol(), OP_SELL, Lots, Bid, Slippage, 0, 0, comment, Magic, 0, Pink);  ModifyOrder();Trailing();} 
     }//Закрывающая скобка если
     
  if (TimeCurrent() == blok_1_time_1_2) 
 {if(iClose(Symbol(), PERIOD_H1, 0) < iClose(Symbol(), PERIOD_H1, 1) && iClose(Symbol(), PERIOD_H1, 1) < iClose(Symbol(), PERIOD_H1, 2))
     {int ticket_a_14_1 = OrderSendX(Symbol(), OP_BUY,  Lots, Ask, Slippage, 0, 0, comment, Magic, 0, Lime);  ModifyOrder();Trailing();}
    else {ticket_a_67_1 = OrderSendY(Symbol(), OP_SELL, Lots, Bid, Slippage, 0, 0, comment, Magic, 0, Pink);  ModifyOrder();Trailing();} 
     }//Закрывающая скобка если
     
  if (TimeCurrent() == blok_1_time_1_3) 
 {if(iClose(Symbol(), PERIOD_H1, 0) < iClose(Symbol(), PERIOD_H1, 1) && iClose(Symbol(), PERIOD_H1, 1) < iClose(Symbol(), PERIOD_H1, 2))
     {int ticket_a_15_1 = OrderSendX(Symbol(), OP_BUY,  Lots, Ask, Slippage, 0, 0, comment, Magic, 0, Lime);  ModifyOrder();Trailing();}
     else {ticket_a_66_1 =OrderSendY(Symbol(), OP_SELL, Lots, Bid, Slippage, 0, 0, comment, Magic, 0, Pink);  ModifyOrder();Trailing();} 
     }//Закрывающая скобка если
     
 if (TimeCurrent() == blok_1_time_1_4) 
 {if(iClose(Symbol(), PERIOD_H1, 0) < iClose(Symbol(), PERIOD_H1, 1) && iClose(Symbol(), PERIOD_H1, 1) < iClose(Symbol(), PERIOD_H1, 2))
     {int ticket_a_16_1 = OrderSendX(Symbol(), OP_BUY,  Lots, Ask, Slippage, 0, 0, comment, Magic, 0, Lime);  ModifyOrder();Trailing();}
     else {ticket_a_65_1 =OrderSendY(Symbol(), OP_SELL, Lots, Bid, Slippage, 0, 0, comment, Magic, 0, Pink);  ModifyOrder();Trailing();} 
     }//Закрывающая скобка если   
 
PHISIC1 #:

Всем привет! Подскажите , направьте, поделитесь. ТС находит времена разворотов рынка. Их четыре даты. При наступлении этого времени необходимо по критерию "трех бойцов" с "машкой" ( к примеру) открыть ордер (B или S) и дальше вести этот ордер, ---стопы, триалы, безубытки и т.д.... ( эта реализация кода страдает, и все вроде пишут одно и тоже, но разбираясь, кто в лес кто по дрова). И самое главное как засунуть эти ВРЕМЕНА в одно условие IF. Т.к. придется для каждого ВРЕМЕНИ прописывать индикатор, открытие (B иS)  ит.д. , что собственно у меня и реализовано. Но это куча дублирующих строк и утяжеление кода. Чтоб понятно и наглядно вот что накидал.


int ticket=-1;
if((TimeCurrent() == blok_1_time_1_1)||(TimeCurrent() == blok_1_time_1_2)||(TimeCurrent() == blok_1_time_1_3)||(TimeCurrent() == blok_1_time_1_4))
  {
   if(iClose(Symbol(), PERIOD_H1, 0) < iClose(Symbol(), PERIOD_H1, 1) && iClose(Symbol(), PERIOD_H1, 1) < iClose(Symbol(), PERIOD_H1, 2))
     {
      ticket =  OrderSendX(Symbol(), OP_BUY,  Lots, Ask, Slippage, 0, 0, comment, Magic, 0, Lime);  ModifyOrder();Trailing();
     }
    else
   if(iClose(Symbol(), PERIOD_H1, 0) > iClose(Symbol(), PERIOD_H1, 1) && iClose(Symbol(), PERIOD_H1, 1) > iClose(Symbol(), PERIOD_H1, 2))
     {
      ticket =  OrderSendY(Symbol(), OP_SELL, Lots, Bid, Slippage, 0, 0, comment, Magic, 0, Pink);  ModifyOrder();Trailing();
     } 
  }