Strannik
Алексей (деактивирован)

 
Уровень 0

  Торгую в компаниях:


Группа "Стол заказов MQL"

Рейтинг 2146



РЕКОМЕНДУЮ



Нужен скрипт.

Desktop.rar (11 Kb)Как обычно я ленивый до жути. Ну натура моя такая. :)  В общем нужна помощь, как обычно в мелочи. Нужен скрипт.

У нас два типа текстового файла. Формат файла 20151219_BUY.txt, 20151219_SELLL.txt Где первые 4 цифры, это год, вторые 2, месяц, последние 2, день. Можно любой другой формат.

Число файлов не ограничено
В нутрии любого типа файла вид (Цены, в столбик 1.07856)
Вывод инфо в левом углу. Общее количество цен в столбце в buy, тоже самое для sell. Выглядеть должно так (Buy 50, Sell 80). Выводим значения только последних двух фалов (ближайшего по дате)

Берм файлы по порядку. Все значения из любого файла, для buy рассчитываем среднее арифметическое, и выводим на экран терминала, в виде ценовой метки. Если файл был ***_BUY то метка синяя, если ***_SELL то метка красная. Ценовые метки нужно выставлять тем же числом что и имя файла. По терминальному времени 00.00 «файловым» числом. Один файл одна метка. Рассчитанная по среднему значению цен внутри файла.

Вставить переменную «Истина ложь» Если заданна «true» то выставить все ценовые метки из всех файлов, согласно, условию даты и времени, а так же типа. BUY синяя, SELL красная. Если false, то выводим только усредненное значение, для каждого файла в отдельности.

Здесь бы в самом начале вставить проверку на корректность, цен в файлах. Скажем данным числом у нас есть два файла ***_BUY и ***_SELL Проверить текущие цены для BUY на момент 00.00 времени, выше они текущего дня или ниже (Проверяем выше бара, того числа, «имя файла» или ниже). Если ниже, то удалить число из файла. Если Выше, то берем для расчета среднего арифметического, тоже самое для SELL. Если, что то было удалено, то вывести на экран, сообщение, что было удалено (количество удаленных). Но это не обязательно. Их можно и визуально проверить по меткам, если использовать «ИСТИНУ/ЛОЖЬ».
  • 0
  • Просмотров: 2606
  • 19 декабря 2015, 17:34
  • Strannik
Понравилcя материал? Не забудьте поставить плюс и поделиться в социальной сети!

Вступите в группу "Стол заказов MQL", чтобы следить за обновлениями
ПРИСОЕДИНИТЬСЯ К ГРУППЕ
присоединиться
  Предыдущая запись в группе
подправить индикатор
Следующая запись в группе  
Подправить индикатор
17 декабря 2015
20 декабря 2015

Брокер для ваших роботов, 15 лет на рынке

Комментарии (6)

+
0
Скиньте образцы текстовых файлов и нарисуйте на скрине как все должно выглядеть.
В максимально упрощенном виде могу попробовать сделать, т.к. объем работы приличный.
avatar

  35  AM2 Сообщений: 16256 - Андрей

  • 19 декабря 2015, 17:46
+
0
Одним словом, просто берем любой файл. Вычисляем среднее значение, из того, что внутри, и ставим метку на графике. С учетом, даты файла, и его направления SELL или BUY.
avatar

  0  Strannik Автор Сообщений: 685 - Алексей (деактивирован)

  • 19 декабря 2015, 18:02
+
0
По принципу, один файл одна метка. Синяя или красная, по усредненному значению, всех цен в файле.
avatar

  0  Strannik Автор Сообщений: 685 - Алексей (деактивирован)

  • 19 декабря 2015, 18:05
+
+1
Скрипт выводит в окно терминала: число элементов, их сумму и среднее. В журнал выводятся все элементы построчно.




//+------------------------------------------------------------------+
//|                                                  MiddlePrice.mq4 |
//|                                              Copyright 2015, AM2 |
//|                                      http://www.forexsystems.biz |
//+------------------------------------------------------------------+
#property copyright "Copyright 2015, AM2"
#property link      "http://www.forexsystems.biz"
#property version   "1.00"
#property strict
#property show_inputs

input string FileName="20151219_BUY.txt";

//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
void OnStart()
  {
  int count=0;
  double sum=0,mid=0;
//--- откроем файл 
   ResetLastError(); 
   int file_handle=FileOpen(FileName,FILE_READ|FILE_TXT); 
   if(file_handle!=INVALID_HANDLE) 
     { 
      PrintFormat("Файл %s открыт для чтения",FileName); 
      PrintFormat("Путь к файлу: %s\\Files\\",TerminalInfoString(TERMINAL_DATA_PATH)); 
      //--- вспомогательные переменные 
      int    str_size; 
      string str; 
      //--- прочитаем данные из файла 
      while(!FileIsEnding(file_handle)) 
        { 
         //--- узнаем сколько символов использовано для записи времени 
         str_size=FileReadInteger(file_handle,INT_VALUE); 
         //--- прочитаем строку 
         str=FileReadString(file_handle,str_size); 
         //--- распечатаем строку 
         PrintFormat(str);
         count++;
         sum+=StringToDouble(str); 
        } 
      //--- закроем файл 
      FileClose(file_handle); 
      PrintFormat("Данные прочитаны, файл %s закрыт",FileName); 
     } 
   else 
      PrintFormat("Не удалось открыть файл %s, Код ошибки = %d",FileName,GetLastError()); 
      
      mid=sum/count;
      
      Comment("\n Count: ",count,
      "\n Sum: ",sum,
      "\n Mid: ",mid);
  }
//+------------------------------------------------------------------+

avatar

  35  AM2 Сообщений: 16256 - Андрей

  • 19 декабря 2015, 22:20
+
+1
Читает файл бай и селл и выводит метки по средней цене.



//+------------------------------------------------------------------+
//|                                                  MiddlePrice.mq4 |
//|                                              Copyright 2015, AM2 |
//|                                      http://www.forexsystems.biz |
//+------------------------------------------------------------------+
#property copyright "Copyright 2015, AM2"
#property link      "http://www.forexsystems.biz"
#property version   "1.00"
#property strict
#property show_inputs

input int    Shift        = 55;                       // сдвиг метки влево
input string FileNameBuy  = "20151219_BUY.txt";       // файл бай
input string FileNameSell = "20151219_SELL.txt";      // файл селл
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
void PutLable(string name,double price,color clr)
  {
   ObjectDelete(0,name);
//---создадим ценовую метку
   ObjectCreate(0,name,OBJ_ARROW_RIGHT_PRICE,0,Time[Shift],price);
//--- установим цвет метки
   ObjectSetInteger(0,name,OBJPROP_COLOR,clr);
//--- установим стиль окаймляющей линии
   ObjectSetInteger(0,name,OBJPROP_STYLE,STYLE_SOLID);
//--- установим размер метки
   ObjectSetInteger(0,name,OBJPROP_WIDTH,1);
  }
//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
void OnStart()
  {
   int count1=0,count2=0;
   double sum1=0,mid1=0,sum2=0,mid2=0;
//--- откроем файл 
   ResetLastError();
   int file_handle=FileOpen(FileNameBuy,FILE_READ|FILE_TXT);
   if(file_handle!=INVALID_HANDLE)
     {
      PrintFormat("Файл %s открыт для чтения",FileNameBuy);
      PrintFormat("Путь к файлу: %s\\Files\\",TerminalInfoString(TERMINAL_DATA_PATH));
      //--- вспомогательные переменные 
      int    str_size;
      string str;
      //--- прочитаем данные из файла 
      while(!FileIsEnding(file_handle))
        {
         //--- узнаем сколько символов использовано для записи времени 
         str_size=FileReadInteger(file_handle,INT_VALUE);
         //--- прочитаем строку 
         str=FileReadString(file_handle,str_size);
         //--- распечатаем строку 
         PrintFormat(str);
         count1++;
         sum1+=StringToDouble(str);
        }
      //--- закроем файл 
      FileClose(file_handle);
      PrintFormat("Данные прочитаны, файл %s закрыт",FileNameBuy);
     }
   else
      PrintFormat("Не удалось открыть файл %s, Код ошибки = %d",FileNameBuy,GetLastError());

//--- откроем файл 
   ResetLastError();
   int file_handle2=FileOpen(FileNameSell,FILE_READ|FILE_TXT);
   if(file_handle2!=INVALID_HANDLE)
     {
      PrintFormat("Файл %s открыт для чтения",FileNameSell);
      PrintFormat("Путь к файлу: %s\\Files\\",TerminalInfoString(TERMINAL_DATA_PATH));
      //--- вспомогательные переменные 
      int    str_size;
      string str;
      //--- прочитаем данные из файла 
      while(!FileIsEnding(file_handle2))
        {
         //--- узнаем сколько символов использовано для записи времени 
         str_size=FileReadInteger(file_handle2,INT_VALUE);
         //--- прочитаем строку 
         str=FileReadString(file_handle2,str_size);
         //--- распечатаем строку 
         PrintFormat(str);
         count2++;
         sum2+=StringToDouble(str);
        }
      //--- закроем файл 
      FileClose(file_handle2);
      PrintFormat("Данные прочитаны, файл %s закрыт",FileNameSell);
     }
   else
      PrintFormat("Не удалось открыть файл %s, Код ошибки = %d",FileNameSell,GetLastError());

   mid1=sum1/count1;
   mid2=sum2/count2;

   PutLable("Labale"+FileNameBuy,mid1,Blue);
   PutLable("Labale"+FileNameSell,mid2,Red);

   Comment("\n CountBuy: ",count1,
           "\n SumBuy: ",DoubleToString(sum1,Digits),
           "\n MidBuy: ",DoubleToString(mid1,Digits),
           "\n CountSell: ",count2,
           "\n SumSell: ",DoubleToString(sum2,Digits),
           "\n MidSell: ",DoubleToString(mid2,Digits));
  }
//+------------------------------------------------------------------+
avatar

  35  AM2 Сообщений: 16256 - Андрей

  • 19 декабря 2015, 23:58
+
0
Спасибо. За помощь. Очень благодарен. Если смогу чем либо помочь, пишите.
avatar

  0  Strannik Автор Сообщений: 685 - Алексей (деактивирован)

  • 21 декабря 2015, 14:12

Зарегистрируйтесь или авторизуйтесь, чтобы оставить комментарий