Cualquier pregunta de novato, para no saturar el foro. Profesionales, no pasen de largo. En ninguna parte sin ti - 6. - página 817

 
evillive:

Puedes leer la ayuda, está todo ahí, con ejemplos.


Gracias
 

Tuve una idea para dibujar un indicador a partir de los datos del archivo.

Tomé un ejemplo del libro de texto. He rehecho el guión para adaptarlo a mis necesidades:

int start()                            // Спец. функция start
  {
//--------------------------------------------------------------- 2 --
   int Handle,                         // Файловый описатель
       shift,Text;                            // Стиль вертикальной линии
   string File_Name="News.csv",        // Имя файла
          Obj_Name,                    // Bмя объекта
          Instr,                       // Название валюты
          One,Two,                     // 1я и 2я чать названия инстр.
          Str_DtTm;                    // Дата и время события(строка)
   datetime Dat_DtTm;                  // Дата и время события(дата)
//--------------------------------------------------------------- 3 --
   Handle=FileOpen(File_Name,FILE_CSV|FILE_READ,";");// Открытие файла
   if(Handle<0)                        // Неудача при открытии файла
     {
      if(GetLastError()==4103)         // Если файла не существует,..
         Alert("Нет файла с именем ",File_Name);//.. извещаем трейдера 
      else                             // При любой другой ошибке..
         Alert("Ошибка при открытии файла ",File_Name);//..такое сообщ
      PlaySound("Bzrrr.wav");          // Звуковое сопровождение
      return(0);                          // Выход из start()      
     }
//--------------------------------------------------------------- 4 --
   while(FileIsEnding(Handle)==false)// До тех пор, пока файловый ..
     {                                // ..указатель не в конце файла
      //--------------------------------------------------------- 5 --
      Str_DtTm =FileReadString(Handle);// Дата и время события(дата)
      Text     =FileReadString(Handle);// Текст описания события
      //--------------------------------------------------------- 6 --
      Dat_DtTm =StrToTime(Str_DtTm);   // Преобразование типа данных
      //--------------------------------------------------------- 7 --
      shift=iBarShift(NULL,0,Dat_DtTm);
      Alert("Время=",TimeToString(Time[shift]),"Text=",Text); 
      if(FileIsEnding(Handle)==true)   // Файловый указатель в конце
      break;                        // Выход из чтения и рисования
     }
//--------------------------------------------------------------- 8 --
   FileClose( Handle );                // Закрываем файл
   return(0);                             // Выход из start()
  }
//--------------------------------------------------------------- 9 --

La línea de"Alerta" puede ser eliminada.

La lógica es obtener la fecha en el indicador y compararla con el archivo y asignar el valor al buffer en caso de coincidencia.

Pero creo que si empezamos a buscar cada barra desde el principio del archivo, donde ya se tienen en cuenta los datos, será bastante caro.

La pregunta es cómo fijar las líneas de los archivos procesados en el indicador e iniciar la búsqueda después de ellas.

 
Forexman77:

Hay un archivo grande con fechas de esta forma "20141231". Para convertir la cadena en formatode fecha, se necesitan puntos"AAAA.MM.DD" entre el año, el mes y el número.

¿Cómo se puede hacer esto?

string sdt="20141231"
string dt=StringSubstr(sdt,0,4)+"."+StringSubstr(sdt,4,2)+"."+StringSubstr(sdt,6,2)
 
vicmos:

Gracias, ya lo he solucionado. Convertido el archivo donde originalmente estaba separado por comas. Cambié las comas por puntos y luego añadí una segunda columna, todo con "uniCSVed".

Ahora sabré cómo hacerlo de forma programada.

Ahora me enfrento a otra tarea titánica: ¿cómo cumplir el indicador con estos datos? He hecho un script y funciona correctamente.

Pero en el indicador, para no tener frenos, necesito de alguna manera recordar la línea en la que en la última iteración de los datos se obtuvo.

 
Forexman77:

Gracias, ya lo he solucionado. Convertido el archivo donde originalmente estaba separado por comas. Cambié las comas por puntos y luego añadí una segunda columna, todo con "uniCSVed".

Ahora sabré cómo hacerlo de forma programada.

Ahora me enfrento a otra tarea titánica: ¿cómo cumplir el indicador con estos datos? He hecho un script y funciona correctamente.

Pero en el indicador, para no tener frenos, necesito de alguna manera recordar la línea en la que en la última iteración de los datos se obtuvo.

Probablemente, es posible con FileTell(Devuelve la posición actual del punterodel archivo abierto correspondiente) y FileSeek(Mueve la posición del puntero del archivo en un número especificado de bytes relativamente a la posición especificada).
 
evillive:
Probablemente sea posible con FileTell (Devuelve la posición actual delpuntero delarchivo abierto correspondiente) y FileSeek (Mueve la posición del puntero del archivo en el número especificado de bytes respecto a la posición especificada).

Gracias. También presté atención a estas funciones. También existeFileIsLineEnding. Pensaré más en cómo hacerlo.

 
lexdemon:
¿Cómo se define Ticket_first_order?

Asigna el valor de OrderTicket() a una variable. Por ejemplo: int Ticket= OrderTicket(). Y luego usar este valor en OrderSelect.

OrderSelect(Ticket,SELECT_BY_TICKET); .

Podemos hacerlo de otra manera. No vamos a definir el ticket, sólo buscamos el orden probando (SELECT_BY_POS).

Lo conseguiremos:

 string Symb=Symbol();

for(i=0;i<=OrdersTotal() ;i++)

   if(OrderSelect(i,SELECT_BY_POS)==true)

 {

   if(OrderSymbol()!=Symb)continue;

   if(OrderType()==OP_BUY)

     {

   break;

     }

   }

}

 

  if(OrderOpenPrice()+10*Point<=Ask)

 OrderSend(Symbol(),OP_BUY,Lot,Ask,10,Ask-SL*Point,Ask+TP*Point,NULL,Magic,0,Green);

 

 
CJIeCaPb:

Asigna el valor de OrderTicket() a una variable. Por ejemplo: int Ticket= OrderTicket(). Y luego usar este valor en OrderSelect.

OrderSelect(Ticket,SELECT_BY_TICKET); .

Podemos hacerlo de otra manera. No definamos una entrada, sino que simplemente busquemos el orden probando (SELECT_BY_POS).

Se solucionará:

El método de fuerza bruta está más cerca de la verdad
 

Como este es un tema para preguntas de principiantes, voy a preguntar la mía...

1. ¿Existe una API de software para descargar los presupuestos? Lo ideal sería una solicitud de get/post.

2. Si no existe un acceso amplio, cuáles son las plataformas más fáciles de analizar y que pueden proporcionar acceso en tiempo real a las cotizaciones una vez por segundo.

3. Se puede escribir la automatización de cualquier cosa, por supuesto. Pero me gustaría saber qué idiomas y herramientas son los más convenientes y populares.

 
Por ejemplo, aquí https://iqoption.com/us/options/turbo (si alguien está conectado allí) es un muy buen gráfico en tiempo real. Lo ideal sería parsearlo, pero FireBug no muestra dónde va el script para obtener las comillas. Hay un punto en el gráfico cada segundo.