[ARCHIVO]Cualquier pregunta de novato, para no saturar el foro. Profesionales, no lo dejéis pasar. No puedo ir a ningún sitio sin ti - 5. - página 105

 

Hola a todos,

Hice un indicador, dibuja dos líneas a 45 grados, cuando se cruzan, quiero que sean horizontales.

Entonces, ¿cómo calcular la intersección?

Empaté con la baja/alta del día anterior, hasta un punto.

Para obtener dicha línea trazo desde un punto al inicio del día y en el otro lado desde el punto del rayo.

¿Cómo escribo el código para volver a calcularlo? Todavía no lo he hecho:

Вот начну искат как цена двигается-толко надо увидет ее-первая ест,но вторая 0:
price1 = NormalizeDouble(ObjectGet("Dn",OBJPROP_PRICE1),Digits);
price2 = NormalizeDouble(ObjectGet("Dn",OBJPROP_PRICE2),Digits);
Time_start - ето синяя вертикалная линия
double b3=iBarShift(Symbol(),0,Time_start);      
double b4=iBarShift(Symbol(),0,TimeCurrent());
ну и цикл поиска
for(int j = b4;j <= b3;j++){
Ну що искат,если я не вижу то,что ищу?
Застрял.
 
bond007:
.... y ¿cómo pueden averiguar esto?)
Simplemente no entiendo.... dicen que se puede operar con EAs, otros dicen que no se puede - si por ejemplo una empresa de corretaje te permite usar un EA, entonces ¿cómo?

la empresa de corretaje no puede ver el código.... sólo ven la intensidad de la colocación de la orden y los comentarios en las órdenes ... hay algunos DT en los que se prohíbe el trabajo de los EA en la terminal ... significa que cuando se pega un EA a un gráfico simplemente no comercia ... si no está permitido por la configuración del servidor el cliente dará un error xxx o algo así como 2013.01.18 22:45:03 '30xxxxx': el comercio por parte de los expertos está prohibido



es decir, no sé por qué me preocupé tanto por el código...

 
hoz:

Gracias, ahora se te abrirá el apetito :)
Bien por ti, y poco a poco de lo simple a lo complejo irás programando tu comprensión, que es necesaria para escribir cualquier programa. Buena suerte.
 
mario065:

Hola a todos,

Hice un indicador, dibuja dos líneas a 45 grados, cuando se cruzan, quiero que sean horizontales.

Entonces, ¿cómo calcular la intersección?

Empaté con la baja/alta del día anterior, hasta un punto.

Para obtener dicha línea trazo desde un punto al inicio del día y en el otro lado desde el punto del rayo.

¿Cómo escribo el código para volver a calcularlo? Todavía no lo he hecho:

Para ayudar.
 
drknn:

¿Qué quiere decir el término "gráfico logarítmico"? Por favor, dame un ejemplo. Yo, por ejemplo, sólo he conocido el concepto de escala gráfica logarítmica. El terminal MT4 ya tiene esta escala.
Me refiero a la escala logarítmica. ¿Cómo puedo encontrarla en MT? Llevo muchos años usándolo y no sé lo que hay ya.
 
mario065:

Hola a todos,

Hice un indicador, dibuja dos líneas a 45 grados, cuando se cruzan, quiero que sean horizontales.

Entonces, ¿cómo calcular la intersección?

Empaté con la baja/alta del día anterior, a través de un punto.

Para obtener dicha línea trazo desde un punto al inicio del día y en el otro lado desde el punto del rayo.

¿Cómo escribo el código para volver a calcularlo? Todavía no lo he hecho:



De Igor Kim:

Función CrossPointOfLines()

 

Alexei, Artem, gracias.

Voy a aprender las funciones de Igor Kim.

 

Así que no tengo dos puntos, sólo tengo uno.

Aquí están los sors:

//+------------------------------------------------------------------+
//|                                                     TRIANGLE.mq4 |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2013,mario"
#property link      ""

#property indicator_chart_window
extern string   TimeStart  = "Час за начало";
extern datetime Time_start = D'17.01.2013';
extern int      Days       = 1;
bool            New_Bar    = false;
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int init(){return(0);}
int deinit(){
   ObjectsDeleteAll(0,OBJ_TRENDBYANGLE);
   ObjectsDeleteAll(0,OBJ_VLINE);
   Comment("");return(0);}
//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
int start()
  { 
   datetime New_Time,time_next,time_barh,time_barl;
   time_next = Time_start + Days*86400;
   datetime new_day = iTime(Symbol(),PERIOD_D1,0);
//+------------------------------------------------------------------+
   if(New_Time != new_day)                        
           {
           New_Time = new_day;                         
           New_Bar  = true;
           }
//+------------------------------------------------------------------+ 
//Шифтвам 
   double b1=iBarShift(Symbol(),0,Time_start);      
   double b2=iBarShift(Symbol(),0,time_next);
   double min = 3,max = 0;
   for(int i = b2;i <= b1;i++){
      if(iHigh(Symbol(),0,i)>max){ max=iHigh(Symbol(),0,i);time_barh = Time[i];}
      if(iLow (Symbol(),0,i)<min){ min=iLow (Symbol(),0,i);time_barl = Time[i];}
      }
   if(New_Bar == true){ 
      ObjectsDeleteAll(0,OBJ_TRENDBYANGLE);
      ObjectsDeleteAll(0,OBJ_VLINE);
      DrawLine("Start",0,Time_start,0,Time_start,0,0,0,2,Aqua,false);
      DrawLine("Up",3,time_barh,max,0,0,315.0,0,2,DeepSkyBlue,true);
      DrawLine("Up1",3,time_barh,max,Time_start,0,315.0,0,2,DeepSkyBlue,false);
      DrawLine("Dn",3,time_barl,min,0,0,45.0,0,2,Orange,true);
      DrawLine("Dn1",3,time_barl,min,Time_start,0,45.0,0,2,Orange,false);
    }
//+------------------------------------------------------------------+
   double spead = MarketInfo(Symbol(),MODE_SPREAD);
//+------------------------------------------------------------------+ 
   Comment("\nВреме на брокера: ",TimeToStr(TimeCurrent(),TIME_SECONDS),", Локално време: "+TimeToStr(TimeLocal(),TIME_SECONDS),
           "\nТекущ спред: ",DoubleToStr(spead/10,1),
           "\n min:        ",DoubleToStr(min,Digits),
           "\n max:       ",DoubleToStr(max,Digits)
           );
   return(0);
  }
//+------------------------------------------------------------------+
void DrawLine(string name,int lines,datetime time1,double value,datetime time2,double value1,double grd,int style,int wid,color col,bool ray)
{
   ObjectCreate(name,lines,0,time1,value,time2,value1);
   ObjectSet(name,OBJPROP_ANGLE,grd);
   ObjectSet(name,OBJPROP_COLOR,col);
   ObjectSet(name,OBJPROP_STYLE,style);
   ObjectSet(name,OBJPROP_WIDTH,wid);
   ObjectSet(name,OBJPROP_RAY,ray);
}
//+------------------------------------------------------------------+
//+----------------------------------------------------------------------------+
//|  Автор    : Ким Игорь В. aka KimIV,  http://www.kimiv.ru                   |
//+----------------------------------------------------------------------------+
//|  Версия   : 12.10.2007                                                     |
//|  Описание : Вычисляет координаты точки пересечения двух прямых.            |
//|             Каждая прямая задаётся парой координат своих точек.            |
//+----------------------------------------------------------------------------+
//|  Параметры:                                                                |
//|    x - массив абсцисс              x[0], x[1] - первая прямая              |
//|                                    x[2], x[3] - вторая прямая              |
//|    y - массив ординат              y[0], y[1] - первая прямая              |
//|                                    y[0], y[1] - вторая прямая              |
//|    t - массив искомых координат    t[0]       - абсцисса                   |
//|                                    t[1]       - ордината                   |
//+----------------------------------------------------------------------------+
void CrossPointOfLines(double& x[], double& y[], double& t[]) {
  double z=(y[3]-y[2])*(x[1]-x[0])-(y[1]-y[0])*(x[3]-x[2]);
  ArrayResize(t, 2);
  ArrayInitialize(t, 0.0);

  if (z==0) Print("CrossPointOfLines(): Не удалось найти точку пересечения!");
  else {
    double xy1=x[1]*y[0]-x[0]*y[1];
    double xy2=x[3]*y[2]-x[2]*y[3];
    t[0]=NormalizeDouble((xy1*(x[3]-x[2])-xy2*(x[1]-x[0]))/z, 0);
    t[1]=(xy1*(y[3]-y[2])-xy2*(y[1]-y[0]))/z;
  }
}

El código en sí es muy sencillo, pero sólo hay un punto.

 

¿Quién sabe por qué el indicador DailyPivotPoints en el probador en modo visual muestra sólo los datos de hoy en todas las fechas?

Y si es posible, ¿qué habría que añadirle para mostrar lo que había en el historial? Gracias.

 
lenalebedeva:
Me refiero a la escala logarítmica específicamente, ¿cómo se encuentra en MT? Llevo muchos años usándolo y no sé lo que hay.

Ver

P.D.

Por ejemplo, usted mira una tendencia pasada a la baja en el gráfico y ve que hacia el borde del gráfico se desplaza aún más bajo fuera de la ventana. Usted se desplaza por el gráfico hacia el futuro y observa cómo el gráfico se desplaza automáticamente hacia arriba, liberando espacio para ver las velas del gráfico subyacente. Y lo que antes era visible en la parte superior de la ventana del gráfico se ha desplazado aún más arriba, fuera de la ventana del gráfico. Se trata de la implementación de una escala de precios logarítmica en el gráfico. Si no existiera, habría que desplazar el gráfico no sólo de derecha a izquierda, sino también de arriba a abajo. Por ello, la escala temporal es lineal y la escala de precios es logarítmica, para poder mostrar los datos en la ventana del gráfico con facilidad.

En el pasado, cuando no había ordenadores, los operadores utilizaban un gráfico milimétrico y trazaban los precios en él para predecir las tendencias y los puntos de inflexión. Por lo tanto, había dos baremos sobre el papel: el precio y el tiempo. Se trata de dos escalas lineales. ¿Se imagina lo grande que tendría que ser una hoja de papel milimetrado para contener todos los candelabros de quince minutos del último año? Seguramente sería tan grande como la pared de una habitación (si no más grande). Así, cuando se desplaza el gráfico en la pantalla, puede imaginarse este modelo: un gráfico de velas de precios se dibuja en la pared. También hay un marco rectangular (por ejemplo, rojo): es su monitor. Moverse a lo largo del gráfico no es más que mover este rectángulo rojo a lo largo de la tendencia. Pero entonces dirías que las dos escalas de tu monitor son lineales. Esto es cierto, pero sólo parcialmente - observe que al desplazar el gráfico, la vela que era grande (visualmente percibida como grande) se hace más pequeña después de un ligero desplazamiento, aunque si medimos la distancia entre sus extremos, el número de puntos sigue siendo el mismo.

Mira, aquí hay 2 capturas de pantalla del mismo gráfico. La primera captura de pantalla es sólo una captura de pantalla. La segunda es una captura de pantalla de la misma pantalla pero después de girar la rueda del ratón un clic, el gráfico se ha desplazado hacia atrás unas cuantas velas. Coge un trozo de papel, pégalo a la primera captura de pantalla y marca los precios máximos y mínimos de la vela marcados en rojo. A continuación, mueva los riesgos marcados a la misma vela en la segunda captura de pantalla. Entenderás de qué estamos hablando y qué es un desplazamiento de la escala logarítmica (que es la esencia del uso desigual de las escalas aquí).

¿Y por qué necesitas entrar en los matices de las escalas logarítmicas? ¿Qué esperaba encontrar en ellos?