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

 
Ivan Butko #:

Амм... секундочку

сначала ChartTimePriceToXY +/- пиксели

затем назад ChartXYToTimePrice

 
Tretyakov Rostyslav #:

сначала ChartTimePriceToXY +/- пиксели

затем назад ChartXYToTimePrice

Большое спасибо, буду пробовать

 
Ivan Butko #:

1. Почему при смене ТФ не прорисовываются (или не обновляют свои значения на графике) графические объекты?


2. Как сделать так, чтобы графический объект выравнивался над свечкой также ровно при смене масштаба (или переключения ТФ), как это делает какой-нибудь индикатор Фрактал. При смене масштаба графический объект либо наседает на график, либо улетает в небо

double point = 1/Point;
 for(int i=1; i<=BarCount; i++)
     {
      ots+=(int)((High[i]-Low[i])*point/4);
     }
   ots=ots/BarCount;
   Alert("ots ",ots*4);
   if(ots==0)ots=2;

У меня такой костыль.))) Более менее, не пиксели конечно, но в меру удобно. И с пикселями заморочек нет. Это в ОнИнит расчет. На 500 или 300 барах. Сравнение с нулем это для тиковых графиков.

 
ANDREY #:

Всем доброго времени суток!
Вопрос по mql4 по отложенным ордерам. Например, текущая цена  Bid = 1.3000 я выставил Sell Limit. И приказал ему открыться по цене  Bid 1.3030. То есть , существует только одно условие преобразования  моего Sell Limit в рыночный - достижение ценой  значения 1.3030 .
ВОПРОС 1  Позволяет ли  mql4  запрограммировать  второе(третье ...десятое) условие преобразования моего   Sell Limit в рыночный. В моем случае, мне нужно преобразовать мой Sell Limit в рыночный если цена Bid  достигнет нужного уровня 1.3030 (первое условие) и если при этом цена Bid сначала дойдет до уровня 1.3031, или немного(максимум на 5 п.) выше (второе условие).По сути мне нужно что бы цена сначала дошла до  1.3031 (или немного выше) и опустилась на 1 или несколько  пунктов и после этого преобразовать  мой  Sell Limit в рыночный. Выставить отложенный ордер с уровня 13031(или немного выше) я не могу так как расстояние слишком мало .

Если это возможно то при помощи какой функции или языковой конструкции? ВОПРОС 2 Если в  mql4 запрограммировать то что мне нужно невозможно, то возможно ли это в  mql5 и при помощи какой функции или языковой конструкции? 

Всем спасибо за помощь.

Отложеный не получится. Маленькое расстояние.  Без отложенного. Кодом. Если Bid = 1.3000

if(Bid = 1.3000) flag=true;
if (flag)
 if(Bid>1.3031)
  if(Bid<1.3036) flag_1=true;
if(flag_1)
 if(Bid<1.3036)
OrderSend(....)
 

Всем здравствуйте!

MQL5.

Подскажите пожалуйста как обработать события подокна графика.

Функция  OnChartEvent() на события с объектами, находящимися в подокне почему-то не реагирует.

 
Vitaliy Davydov #:

Всем здравствуйте!

MQL5.

Подскажите пожалуйста как обработать события подокна графика.

Функция  OnChartEvent() на события с объектами, находящимися в подокне почему-то не реагирует.

Неправда. Я только-что проверил. Всё реагирует.

 
Alexey Viktorov #:

Неправда. Я только-что проверил. Всё реагирует.

А я только что проверил - не реагирует.

Или вы думаете, я от скуки сюда пишу, развлекаюсь так?

Ошибаетесь.


Если я создаю объект в основном окне, то чарт ивент работает. 

Объект перемещается мышью, кнопки тоже на клик мышью реагируют нормально.

Если же я, не меняя ничего, просто создаю тот же объект в подокне, то он перестает перемещаться, события нажатий кнопок отсутствуют.

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

Поэтому и задал вопрос здесь.

 
Прошу прощения что влез, когда у одного работает, а второй волосы на голове рвет, у кого проблема в коде, явно ведь не у того которого работает все?
 
Vitaliy Davydov #:

А я только что проверил - не реагирует.


Если же я, не меняя ничего, просто создаю тот же объект в подокне, 


Это сильно смущает...

Покажите ту часть кода - так будет легче и быстрее

 
Tretyakov Rostyslav #:

Это сильно смущает...

Покажите ту часть кода - так будет легче и быстрее

прописываю  объект - свою панель

class CControlsTS : public CWndContainer

-------

теперь в индикаторе уже 

CControlsTS *pts1;

int OnInit()

  {

....

 pts1=new CControlsTS; // 

pts1.Create(ChartID(),"CControlsTS",panel_wind,x1,y1,x2,y2);

....

  return(INIT_SUCCEEDED);

  };

----------------

переменная  panel_wind в зависимости от выбора пользователя в инпутах может принимать значение либо "0" - основной график,

либо либо номер подокна графика через  panel_wind = ChartWindowFind() .

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


ну а он ивент прописан стандартно

в коде индикатора:

void OnChartEvent(const int id,

                  const long &lparam,

                  const double &dparam,

                  const string &sparam)

  {

   pts1.OnEvent(id,lparam,dparam,sparam);

  };

и в самом классе:

EVENT_MAP_BEGIN(CControlsTS)

ON_EVENT(ON_DRAG_START,m_LifeTime,OnDialogDragStart)

ON_EVENT_PTR(ON_DRAG_PROCESS,m_drag_object,OnDialogDragProcess)

ON_EVENT_PTR(ON_DRAG_END,m_drag_object,OnDialogDragEnd)

ON_NAMED_EVENT(ON_CLICK,m_ButtonUp,UpButtonClick)

ON_NAMED_EVENT(ON_CLICK,m_ButtonDown,DownButtonClick)

EVENT_MAP_END(CWndContainer)


Фишка в том, что в основном окне панелька мышью перемещается, а в подокне нет.

И события кнопочек не срабатывают в подокне.

Причина обращения: