- Индикатор
- Мультитаймфреймовые индикаторы
- Поворотные индикаторы
Всем привет. Может ли кто-нибудь сделать индикатор для отрисовки параболы по двум точкам. Чтобы можно было работать как с фигурами в MT4, т.е. перетаскивать, растягивать и т.д. Готов закинуть небольшую денежку на телефон.
Чтоб задать параболу, необходимо три точки)) или точка и прямая. Но параметра все равно три, меньше не выйдет, как ни крути.
Чтоб задать параболу, необходимо три точки)) или точка и прямая. Но параметра все равно три, меньше не выйдет, как ни крути.
Скорее всего человек имел в виду параболу, которая строится с двух точек, что образуют вектор.
Начало вектора является нулевой точкой параболы, вторая же точка не принадлежит параболе ( она внутри, в центре параболы), угол вектора указывает на наклон относительно стандартного положения.
Но при данном условии должен еще быть коэффициент, который заранее вбит в настойки, отвечающий за степень сжатия или распущенности параболы.
Всем привет. Может ли кто-нибудь сделать индикатор для отрисовки параболы по двум точкам. Чтобы можно было работать как с фигурами в MT4, т.е. перетаскивать, растягивать и т.д. Готов закинуть небольшую денежку на телефон.
Это вряд ли. Камень преткновения я подчеркнул.
Можно попробовать соорудить такую фигню из индикатора (в буфер заливать саму кривую параболы + поддержка пары-тройки экранных объектов для якорных точек) но только пока что в MT5. Когда в четвёрке сделают пользовательскую обработку событий мыши, тогда и в четвёрке возможно будет сделать.
И мелкой копейкой на телефон не отделаешься - работка довольно хитроумная, кто попало и не сделает вовсе. А за квалификацированную работу и платить надо соответственно.
Это вряд ли. Камень преткновения я подчеркнул.
Можно попробовать соорудить такую фигню из индикатора (в буфер заливать саму кривую параболы + поддержка пары-тройки экранных объектов для якорных точек) но только пока что в MT5. Когда в четвёрке сделают пользовательскую обработку событий мыши, тогда и в четвёрке возможно будет сделать.
И мелкой копейкой на телефон не отделаешься - работка довольно хитроумная, кто попало и не сделает вовсе. А за квалификацированную работу и платить надо соответственно.
Можно в виде зацикленноо скрипта сделать. Можно и как индикатор - базовую линию пертащил, по ближайшему тику произойдет перерасчет.
Мышиные события как минимум нужно обрабатывать. В четвёрке без DLL никак.
О! Ес, точно, можно привязаться к парочке экранных объектов.
Под двуумя точками я имел в виду: вершину параболы и одну точку на левой ветке параболы. Правая ветка должна отрисовываться автоматически - симметрично левой.
Третье условие все равно необходимо. Видимо, в качестве него подразумевается, что ось параболы строго вертикальна. Ну тогда нет ничего проще.
#property indicator_separate_window #property indicator_buffers 1 #property indicator_color1 Red //координаты вершины extern double x0=0; extern double y0=0; //координаты точки на ветви extern double x1=-1; extern double y1=1; //левая и правая границы графика по оси х extern double boundary_l=-3; extern double boundary_h=3; //шаг сетки по оси x extern double grid_step_x=0.1; double Graph[]; int init() { SetIndexStyle(0,DRAW_LINE); SetIndexBuffer(0,Graph); } bool done=false; int start() { if (done) return(0); if(boundary_h<=boundary_l) return(0); if(grid_step_x<=0) return(0); if(x1==0||y1==y0) return(0); // уравнение параболы y = A*(x-x0)^2+y0, неизвестно только А, его и найдем: double A = (y1-y0)/((x1-x0)*(x1-x0)); int i; double xc; int idx0=-1,idx1=-1; for(i=0, xc=boundary_h; xc>=boundary_l ; xc-=grid_step_x, i++) { Graph[i] = A * (xc-x0)*(xc-x0) + y0; if(idx0<0 && xc<=x0) idx0=i; if(idx1<0 && xc<=x1) idx1=i; } ObjectDelete("Вершина"); ObjectCreate("Вершина",OBJ_ARROW,WindowFind(WindowExpertName()), Time[idx0], y0); ObjectSet("Вершина", OBJPROP_ARROWCODE,SYMBOL_LEFTPRICE); ObjectSet("Вершина", OBJPROP_COLOR, Gold); ObjectDelete("Точка"); ObjectCreate("Точка",OBJ_ARROW,WindowFind(WindowExpertName()), Time[idx1], y1); ObjectSet("Точка", OBJPROP_ARROWCODE,SYMBOL_LEFTPRICE); ObjectSet("Точка", OBJPROP_COLOR, Lime); done=true; }
осталось приделать реакцию на перетаскивание меток.
:)
До фига чего осталось. Во первых реакцию. А дальше:
2. нужно определиться с реакцией при перетаскивании левой метки вправо (правее центра), в частности как реагировать если они оказались на одной вертикали.
3. буфер не должен быть ограничен по длине, по крайней мере в пределах видимости. Значит его нужно ещё и в будущее выдвигать.
4...
5.......
и т.п.
![MQL5 - Язык торговых стратегий для клиентского терминала MetaTrader 5](https://c.mql5.com/i/registerlandings/logo-2.png)
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования