Una estrategia de seguimiento de la tendencia. - página 12

 
JLY:

¿Y cómo elimino los iconos si la línea ya no existe?

ObjectDelete(0,"имя значка"+name);
если у значка нет имени, то в данном случае
ObjectDelete(0,name);

Necesita el cálculo del tiempo en barras

Hazlo en los bares.

se conoce el tiempo, es decir, el tiempo[9] era de 9 compases.

Sólo escribí el principio,

Entonces haz lo que quieras.

 
pako:

El cálculo del tiempo es necesario en los bares

hacerlo en los bares.

Tienes el tiempo conocido, es decir, el tiempo[9] era de 9 compases.

Sólo escribí el principio,

Entonces haz lo que quieras.

Gracias, sólo que no había necesidad de crear una línea (sólo establecer los parámetros), y así todo funciona.

En 4, se calculó el tiempo en barras a través de iBarShift. He utilizado esta fórmula:

datetime time01=time1NEW;datetime time02=time2NEW;
int shift01=iBarShift(0,0,time01);int shift02=iBarShift(0,0,time02);//перевод из скунд в бары
int timeCHANGE=shift01-shift02;//разница между 1-й и 2-й точкой линии
int timeBAR=(shift02-timeCHANGE);//прибавить разницу ко 2-й точке
int timeBARc=Time[timeBAR];//Перевод из баров в секунды

La quinta no tiene esta función, y no sé cómo usar Copy*...

 
JLY:

Gracias, pero no había necesidad de crear una línea (sólo establecer los parámetros), pero funciona.

En la 4ª, el tiempo en compases se contó a través de iBarShift. Esta es la fórmula:

La quinta no tiene esta función, y todavía no sé cómo utilizar la función Copy*...

iBarShift analógico en 5

int iBarShift(string symbol,
                  int tf,
                  datetime time,
                  bool exact=false)
  {
   if(time<0) return(-1);
   ENUM_TIMEFRAMES timeframe=TFMigrate(tf);
   datetime Arr[],time1;
   CopyTime(symbol,timeframe,0,1,Arr);
   time1=Arr[0];
   if(CopyTime(symbol,timeframe,time,time1,Arr)>0)
     {
      if(ArraySize(Arr)>2) return(ArraySize(Arr)-1);
      if(time<time1) return(1);
      else return(0);
     }
   else return(-1);
  }
 
En MQL5 las constantes de los periodos han cambiado (se han añadido los nuevos periodos M2, M3, M4, M6, M10, M12, H2, H3, H6, H8, H12), puedes utilizar la siguiente función para convertir los periodos de MQL4:
ENUM_TIMEFRAMES TFMigrate(int tf)
  {
   switch(tf)
     {
      case 0: return(PERIOD_CURRENT);
      case 1: return(PERIOD_M1);
      case 5: return(PERIOD_M5);
      case 15: return(PERIOD_M15);
      case 30: return(PERIOD_M30);
      case 60: return(PERIOD_H1);
      case 240: return(PERIOD_H4);
      case 1440: return(PERIOD_D1);
      case 10080: return(PERIOD_W1);
      case 43200: return(PERIOD_MN1);
      
      case 2: return(PERIOD_M2);
      case 3: return(PERIOD_M3);
      case 4: return(PERIOD_M4);      
      case 6: return(PERIOD_M6);
      case 10: return(PERIOD_M10);
      case 12: return(PERIOD_M12);
      case 16385: return(PERIOD_H1);
      case 16386: return(PERIOD_H2);
      case 16387: return(PERIOD_H3);
      case 16388: return(PERIOD_H4);
      case 16390: return(PERIOD_H6);
      case 16392: return(PERIOD_H8);
      case 16396: return(PERIOD_H12);
      case 16408: return(PERIOD_D1);
      case 32769: return(PERIOD_W1);
      case 49153: return(PERIOD_MN1);      
      default: return(PERIOD_CURRENT);
     }
  }
 
JLY:

He hecho el dibujo por segundos, hay huecos en el fin de semana, lo que significa que todavía hay que contar por barras.

int  PeriodSeconds(
   ENUM_TIMEFRAMES  period=PERIOD_CURRENT      // период графика
   );
Devuelve el número de segundos del periodo.
 
pako:

Muchas gracias. El cambio de barra cuenta.

Sólo queda traducir la barra resultante en segundos. En la 4, era el Tiempo[bar].

En el 5, lo estoy haciendo así según la regla, pero no funciona:

datetime Time[];
int count=1; 
ArraySetAsSeries(Time,true);
int timeBARsec=CopyTime(_Symbol,_Period,timeBAR,count,Time);//Перевод из баров в секунды
 
JLY:

Muchas gracias. El cambio de barra cuenta.

Sólo queda traducir la barra resultante en segundos. En la 4, era el Tiempo[bar].

En el 5º, lo hago por la regla, pero no consigo que funcione:

Si he entendido bien la pregunta.

    datetime Time[]; 
    ArraySetAsSeries(Time,true);
    CopyTime(Symbol(),PERIOD_CURRENT,0,100,Time);
    long timeBARsec = Time[2];//Перевод из баров в секунды, в данном случае Time[бар] бар = 2

    Comment("timeBARsec = ",StringToTime(Time[2]));
 
pako:

si he entendido bien la pregunta

Sí, está funcionando) Muchas gracias)

Si no hay "fin" es cero y no se puede ver.

Archivos adjuntos:
TimeEnd.mq5  5 kb
 

1. Hizo la precisión de la hora para el indicador y la hora en la descripción del icono (incluir la descripción en las propiedades del gráfico).

2. ¿Sería mejor poner los iconos en un buffer? ¿Sólo que cómo hacerlo, cómo combinar el tiempo y el precio en el mismo búfer?

3. Si se dibuja la línea y todavía no hay ningún icono (la barra no ha aparecido), entonces da un error (en la pestaña "Expertos") y se detiene el trabajo con los otros iconos.

2013.09.22 00:10:36 FlatExecution (EURUSD,D1) array out of range in 'FlatExecution.mq5' (124,30)

Es decir, la matriz está fuera de rango... El error está en esta línea:

long timeBARsec=Time[timeBAR];

¿Cómo puedo hacer que mi indicador no se paralice por este error? ¿Cómo puedo cambiar el indicador para no paralizar el funcionamiento de este error?

Algoritmo de negociación: Entrada por icono de tiempo, parada por línea de entrada, salida por icono de línea de entrada.

5. Regla de trazado de líneas: de cada fractal a todos los siguientes, de arriba a abajo y de abajo a arriba. Elimine las líneas que están tocadas por el precio y no las dibuje.


Archivos adjuntos:
 

El problema del error se ha resuelto.

El icono se dibuja ahora en la apertura de la barra de señales.

Si la línea se ejecuta, toma una apariencia diferente, se le dibuja una línea y pierde el rayo. Si la línea no se ejecuta, es amarilla.

Si la línea sobre la que se va a realizar la parada disminuye más allá del segundo punto, se puede hacer una parada después del segundo punto. De hecho, el tope también se puede mover a lo largo de esta línea, si se calcula de manera diferente.

El dibujo sigue siendo el mismo, según los fractales.

Algoritmo. El signo no siempre significa una compra o venta inequívoca. Sin embargo, creo que las noticias influyen de alguna manera. De hecho, las pruebas no se han llevado a cabo porque no hay un dibujo automático por fractales y correcciones de este dibujo (eliminación de las líneas afectadas).

Archivos adjuntos:
Razón de la queja: