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

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

это что-то не работает:

//+------------------------------------------------------------------+
//| Функция получает значение масштаба графика в пунктах на бар.     |
//+------------------------------------------------------------------+
double ChartPointsPerBarGet(const long chart_ID=0)
  {
//--- подготовим переменную для получения результата
   double result=EMPTY_VALUE;
//--- сбросим значение ошибки
   ResetLastError();
//--- получим значение свойства
   if(!ChartGetDouble(chart_ID,CHART_POINTS_PER_BAR,0,result))
     {
      //--- выведем сообщение об ошибке в журнал "Эксперты"
      Print(__FUNCTION__+", Error Code = ",GetLastError());
     }
//--- вернем значение свойства графика
   return(result);
  }
скрипт:
Файлы:
6maxvt1.mq4  3 kb
 
multiplicator:
а есть объект круг? или только эллипс?
Например код 108, 161, 162, 163 тута.
 
Alexey Viktorov:
Например код 108, 161, 162, 163 тута.
но их же нельзя увеличить.

и привязка там только по низу объекта или по верху.
 
multiplicator:
но их же нельзя увеличить.

и привязка там только по низу объекта или по верху.

Изучайте CCanvas

Документация по MQL5: Стандартная библиотека / Пользовательская графика
Документация по MQL5: Стандартная библиотека / Пользовательская графика
  • www.mql5.com
Отдельно разработаны классы для создания графических объектов и примитивов, для отрисовки различных видов диаграмм и кривых. Реализованы различные возможности отображения объектов: изменение стиля и цвета линий, заливка, работа с сериями данных на графике и т.д.
 
Artyom Trishkin:

Изучайте CCanvas

или формулы...

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

1

2

 
multiplicator:
но их же нельзя увеличить.

и привязка там только по низу объекта или по верху.

Кто сказал что нельзя?

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

Это сделано руками и недостаточно старательно. Программно можно сделать поточней.


 
Artyom Trishkin:

Изучайте CCanvas

что-то не работает

#include <Canvas\Canvas.mqh>
CCanvas can;



void OnStart()
{

int x;
int y;

int count=1;        // сколько копируем


datetime Time[];
ArraySetAsSeries(Time,true);
CopyTime(_Symbol,_Period,0,count,Time);


double Close[];        
ArraySetAsSeries(Close,true);
CopyClose(_Symbol,_Period,0,count,Close);


ChartTimePriceToXY(0,0,Time[0],Close[0],x,y);
  
   
can.FillCircle(x,y,100,ColorToARGB(Red));
   
}
 

короче, сделал индюк на эллипсах.

но накладываются эти эллипсы друг на друга как-то так некрасиво...

можно избежать этого эффекта накладывания,  чтобы все эти объекты сливались в одно?



для м1:

Файлы:
 

А теперь мне надо по верхней грани эллипсов и по нижней провести 2 красных линии (как я это изобразил на рисунке).



Кто-то знает как это можно сделать?

 
multiplicator:

А теперь мне надо по верхней грани эллипсов и по нижней провести 2 красных линии (как я это изобразил на рисунке).



Кто-то знает как это можно сделать?

А зачем это вообще нужно, в плане промежуточные точки между барами - чисто для эстетики?

Я бы создал буфер (для верха и низа канала) на каждый бар, в который помещал бы экстремумы от всех окружностей на баре, окно там для проверки, судя по рисунку максимум 10 баров, потом уже строил бы этот индикатор, понятно, что последние бары могут перерисовываться.

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