Me gustaría preguntar a Igor y a todos los que escriben regularmente en este hilo. He navegado por la rama y no he encontrado la función que determina el ángulo de la tendencia. ¿Tienen una función que determine el ángulo de la tendencia en una vela de 15 minutos a 6 o más velas?
mazepa писал(а)>> Me gustaría preguntar a Igor y a todos los que escriben regularmente en este hilo. Busqué en la rama y no encontré la función que determina el ángulo de la tendencia. ¿Tienen una función que determine el ángulo de la tendencia en una vela de 15 minutos a 6 o más velas?
Podemos hablar no del ángulo, sino de la tasa de variación del precio
¡Saludos! Gracias por vuestro trabajo, estáis haciendo un buen trabajo.
Estoy haciendo un indicador pero la función EquationDirect a veces calcula mal el punto de cruce :(
He calculado los puntos de las líneas en mi gráfico y los he adjuntado en un indicador de prueba para mayor claridad. La función no calcula correctamente la intersección con un desplazamiento, es decir, en algún ángulo la fórmula de la función no es la adecuada y hay que corregirla de alguna manera, así que cuando ocurra los cálculos se harán con una fórmula diferente IMHO
#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);}
no es por la función EquationDirect, el cálculo es correcto, es por un error del terminal, la línea se dibuja con un desplazamiento
por eso tuve que determinar primero el punto de cruce con Time[0] y luego trazar una línea de tendencia desde el punto inicial hasta el punto de cruce con Time[0], en este caso todo funciona bien
el tiempo más a la derecha en el gráfico es necesario para posicionar el icono del interruptor de la señal del indicador (cuando se cambia la escala del gráfico), es decir, si se mueve el icono del interruptor más allá del tiempo más a la derecha, es decir, que aún no se ha alcanzado, el icono cambia (la señal para colocar una orden se activa o desactiva, significa que se puede prohibir o permitir que el EA opere cambiando la señal)
El tiempo de la izquierda se determina de la siguiente manera: obtenemos la barra más externa visible en el gráfico
WindowFirstVisibleBar() y obtener el tiempo Time[WindowFirstVisibleBar()]
No necesitas añadir nada... Ya está en la línea.
¡Muchas gracias!
Tu hilo es un tesoro en internet, no me canso de ver lo que he encontrado.
No necesitas añadir nada... Ya está en la línea.
Me gustaría preguntar a Igor y a todos los que escriben regularmente en este hilo. He navegado por la rama y no he encontrado la función que determina el ángulo de la tendencia. ¿Tienen una función que determine el ángulo de la tendencia en una vela de 15 minutos a 6 o más velas?¿hay alguna función que le permita apretar (el gatillo)
perfil
plantilla
???
Me gustaría preguntar a Igor y a todos los que escriben regularmente en este hilo. Busqué en la rama y no encontré la función que determina el ángulo de la tendencia. ¿Tienen una función que determine el ángulo de la tendencia en una vela de 15 minutos a 6 o más velas?
Podemos hablar no del ángulo, sino de la tasa de variación del precio
¡Saludos! Gracias por vuestro trabajo, estáis haciendo un buen trabajo.
Estoy haciendo un indicador pero la función EquationDirect a veces calcula mal el punto de cruce :(
He calculado los puntos de las líneas en mi gráfico y los he adjuntado en un indicador de prueba para mayor claridad. La función no calcula correctamente la intersección con un desplazamiento, es decir, en algún ángulo la fórmula de la función no es la adecuada y hay que corregirla de alguna manera, así que cuando ocurra los cálculos se harán con una fórmula diferente IMHO
captura de pantalla
añadido a través de opera, no añadido en explorer
¿Cómo puedo determinar la hora de finalización (de la izquierda) que es visible en el gráfico?
HoraCorriente()
HoraCorriente()
Esto parece estar a la derecha.
Ya me lo he imaginado.
no es por la función EquationDirect, el cálculo es correcto, es por un error del terminal, la línea se dibuja con un desplazamiento
por eso tuve que determinar primero el punto de cruce con Time[0] y luego trazar una línea de tendencia desde el punto inicial hasta el punto de cruce con Time[0], en este caso todo funciona bien
el tiempo más a la derecha en el gráfico es necesario para posicionar el icono del interruptor de la señal del indicador (cuando se cambia la escala del gráfico), es decir, si se mueve el icono del interruptor más allá del tiempo más a la derecha, es decir, que aún no se ha alcanzado, el icono cambia (la señal para colocar una orden se activa o desactiva, significa que se puede prohibir o permitir que el EA opere cambiando la señal)
El tiempo de la izquierda se determina de la siguiente manera: obtenemos la barra más externa visible en el gráfico
WindowFirstVisibleBar() y obtener el tiempo Time[WindowFirstVisibleBar()]