Обращаюсь к Игорю и всем кто пишет регулярно в эту ветку. Я просмотрел ветку и не нашел функцию которая определяет угол тренда.Есть ли у вас функция которая будет определять угол тренда на 15 минутке на 6 или более свечах?Если есть выложите пожалуйста.
mazepa писал(а)>> Обращаюсь к Игорю и всем кто пишет регулярно в эту ветку. Я просмотрел ветку и не нашел функцию которая определяет угол тренда.Есть ли у вас функция которая будет определять угол тренда на 15 минутке на 6 или более свечах?Если есть выложите пожалуйста.
Можно говорить не о угле, а скорости изменения цены
Приветсвую! Спасибо за ваш труд, хорошее дело делаете.
Делаю индикатор но функция EquationDirect бывает расчитывает точку пересечения линий не правильно :(
Просчитал точки линии, которые у меня на графике и вставил их в тестовый индикатор для наглядности. Функция расчитывает пересечение не верно со смещением, то есть при каком-то угле формула в функции не подходит и её нужно как-то откорректировать, чтобы когда происходило такое расчёты делались бы по другой формуле ИМХО
#define CPR "DECIDE"#define mName "Signal"#property indicator_chart_windowexternint SignalBars=30;// кол-во баров для сигналаexternint TrendBars=300;// кол-во баров для т. линийexterncolor CostMaxColor=FireBrick;// цвет максимальной ценыexterncolor CostMinColor=SteelBlue;// цвет минимальной ценыexterncolor VLineColor=DarkSlateGray;// цвет минимальной ценыexterncolor TrendColor=Gray;// цвет трендовых линийexterncolor OrderColor=Green;// цвет сигнала ордераexterncolor LabelColor=Navy;// цвет меток// Инициализация - функция начальных установокint init(){if(!IsDemo())return(0);if(SignalBars<30)SignalBars=30;}// ДеИнициализация - функция завершения работыint deinit(){ObjectDelete("UpTrend");ObjectDelete("DownTrend");ObjectDelete("MaxCost");ObjectDelete("MinCost");ObjectDelete("SignOrder");ObjectDelete("Trend");ObjectDelete("Volume");}// СТАРТ - основная функция обработкиint start(){int bar;double val,upb,t1,t2,h1,h2;
val=173;
bar=iHighest(NULL,0,MODE_HIGH,100,0);
t1=Time[0]-273600;
h1=High[bar];
t2=t1-518400;
h2=High[bar]-val*Point;
SetTLine(TrendColor,"DownTrend",t2,h2,t1,h1,True,STYLE_SOLID,2);
upb=EquationDirect(t1,h1,t2,h2,Time[0]);
SetArrow(6,DarkViolet,"UpBorder",Time[0],upb,2);
SetVLine(VLineColor,"VLine",Time[0],STYLE_SOLID);}// --- ВСПОМОГАТЕЛЬНЫЕ ФУНКЦИИ ---// вертикальная временная линияvoid SetVLine(color cl,string nm="",datetime t1=0,int st=0,int wd=1){// Параметры:// cl - цвет линии// nm - наименование ("" - время открытия текущего бара)// t1 - время (0 - время открытия текущего бара)// st - стиль линии (0 - простая линия)// wd - ширина линии (1 - по умолчанию)if(nm=="")nm=DoubleToStr(Time[0],0);if(t1<=0)t1=Time[0];if(ObjectFind(nm)<0)ObjectCreate(nm,OBJ_VLINE,0,0,0);ObjectSet(nm,OBJPROP_TIME1,t1);ObjectSet(nm,OBJPROP_COLOR,cl);ObjectSet(nm,OBJPROP_STYLE,st);ObjectSet(nm,OBJPROP_WIDTH,wd);}// установка трендовой линииvoid SetTLine(color cl,string nm="",datetime t1=0,double p1=0,datetime t2=0,double p2=0,bool ry=False,int st=0,int wd=1){// Параметры:// cl - цвет линии// nm - наименование ( "" - время открытия текущего бара)// t1 - время открытия бара ( 0 - Time[10]// p1 - ценовой уровень ( 0 - Low[10])// t2 - время открытия бара ( 0 - текущий бар)// p2 - ценовой уровень ( 0 - Bid)// ry - луч (False - по умолчанию)// st - стиль линии ( 0 - простая линия)// wd - ширина линии ( 1 - по умолчанию)if(nm=="")nm=DoubleToStr(Time[0],0);if(t1<=0)t1=Time[10];if(t2<=0)t2=Time[0];if(p1<=0)p1=Low[10];if(p2<=0)p2=Bid;if(ObjectFind(nm)<0)ObjectCreate(nm,OBJ_TREND,0,0,0,0,0);ObjectSet(nm,OBJPROP_TIME1,t1);ObjectSet(nm,OBJPROP_PRICE1,p1);ObjectSet(nm,OBJPROP_TIME2,t2);ObjectSet(nm,OBJPROP_PRICE2,p2);ObjectSet(nm,OBJPROP_COLOR,cl);ObjectSet(nm,OBJPROP_RAY,ry);ObjectSet(nm,OBJPROP_STYLE,st);ObjectSet(nm,OBJPROP_WIDTH,wd);}// вычисление точки пересеченияdouble EquationDirect(double x1,double y1,double x2,double y2,double x){// Параметры:// x1,y1 - координаты первой точки,// x2,y2 - координаты второй точки,// x - значение, для которого вычислить Yif(x2==x1)return(y1);elsereturn(NormalizeDouble((y2-y1)/(x2-x1)*(x-x1)+y1,Digits));}// установка значькаvoid SetArrow(int cd,color cl,string nm="",datetime t1=0,double p1=0,int sz=0){// Параметры:// cd - код значка// cl - цвет значка// nm - наименование ("" - время открытия текущего бара)// t1 - время открытия бара (0 - текущий бар)// p1 - ценовой уровень (0 - Bid)// sz - размер значка (0 - по умолчанию)if(nm=="")nm=DoubleToStr(Time[0],0);if(t1<=0)t1=Time[0];if(p1<=0)p1=Bid;if(ObjectFind(nm)<0)ObjectCreate(nm,OBJ_ARROW,0,0,0);ObjectSet(nm,OBJPROP_TIME1,t1);ObjectSet(nm,OBJPROP_PRICE1,p1);ObjectSet(nm,OBJPROP_ARROWCODE,cd);ObjectSet(nm,OBJPROP_COLOR,cl);ObjectSet(nm,OBJPROP_WIDTH,sz);}
по тому что точка пересечения бывает со смещением это не из-за функции EquationDirect, расчёт ведётся правильно, это из-за какого-то бага в терминале, линия рисуется со смещением
поэтому пришлось сначала определять точку пересечения с Time[0] и затем рисовать трендовую линию от начальной точки до точки пересечения с Time[0], в таком случае всё работает отлично
крайнее правое время на графике мне нужно для позиционирования значька перключателя(при изменении масштаба графика) сигнала индикатора, то есть если перенести значёк переключателя за крайнее правое время, то есть ещё не наступившее значёк переключается(включается или выключается сигнал для выставления ордера, то есть можно переключением сигнала разрешать или запрещать советнику торговать)
а крайнее левое время определяется так: получаем крайний бар который виден на графике
WindowFirstVisibleBar() и получаем по нему время Time[WindowFirstVisibleBar()]
Для авторизации и пользования сайтом MQL5.com необходимо разрешить использование файлов Сookie.
Пожалуйста, включите в вашем браузере данную настройку, иначе вы не сможете авторизоваться.
Вы вошли в аккаунт. Двухфакторная аутентификация отключена. Настройте её заново и отсканируйте новый QR-код или продолжите с отключённой двухфакторной аутентификацией.
Не нужно ничего добавлять... Уже есть в строке
Большое спасибо !
Ваша ветка клад в интернете.Читаю не нарадуюсь что нашел.
Не нужно ничего добавлять... Уже есть в строке
Обращаюсь к Игорю и всем кто пишет регулярно в эту ветку. Я просмотрел ветку и не нашел функцию которая определяет угол тренда.Есть ли у вас функция которая будет определять угол тренда на 15 минутке на 6 или более свечах?Если есть выложите пожалуйста.а есть функции, которые позволяют вытаскивать (запускать)
профиль
шаблон
???
Обращаюсь к Игорю и всем кто пишет регулярно в эту ветку. Я просмотрел ветку и не нашел функцию которая определяет угол тренда.Есть ли у вас функция которая будет определять угол тренда на 15 минутке на 6 или более свечах?Если есть выложите пожалуйста.
Можно говорить не о угле, а скорости изменения цены
Приветсвую! Спасибо за ваш труд, хорошее дело делаете.
Делаю индикатор но функция EquationDirect бывает расчитывает точку пересечения линий не правильно :(
Просчитал точки линии, которые у меня на графике и вставил их в тестовый индикатор для наглядности. Функция расчитывает пересечение не верно со смещением, то есть при каком-то угле формула в функции не подходит и её нужно как-то откорректировать, чтобы когда происходило такое расчёты делались бы по другой формуле ИМХО
скрин
добавил через оперу, в эксплорее не добавляется
как можно определить крайнее время(с лево), которое видно на графике?
TimeCurrent()
TimeCurrent()
Это, кажется, справа.
уже разобрался
по тому что точка пересечения бывает со смещением это не из-за функции EquationDirect, расчёт ведётся правильно, это из-за какого-то бага в терминале, линия рисуется со смещением
поэтому пришлось сначала определять точку пересечения с Time[0] и затем рисовать трендовую линию от начальной точки до точки пересечения с Time[0], в таком случае всё работает отлично
крайнее правое время на графике мне нужно для позиционирования значька перключателя(при изменении масштаба графика) сигнала индикатора, то есть если перенести значёк переключателя за крайнее правое время, то есть ещё не наступившее значёк переключается(включается или выключается сигнал для выставления ордера, то есть можно переключением сигнала разрешать или запрещать советнику торговать)
а крайнее левое время определяется так: получаем крайний бар который виден на графике
WindowFirstVisibleBar() и получаем по нему время Time[WindowFirstVisibleBar()]