[ВНИМАНИЕ, ТЕМА ЗАКРЫТА!] Любой вопрос новичка, чтоб не захламлять форум. Профи, не проходите мимо. Без вас никуда. - страница 672

 

Кто-то полгода назад выкладывал скрипт печатающий значения зиг-зага (время и курс) в файл CSV для работы в EXCEL . Теперь его найти не могу. Может у кого остался?

 
Richie:

Кто-то полгода назад выкладывал скрипт печатающий значения зиг-зага (время и курс) в файл CSV для работы в EXCEL . Теперь его найти не могу. Может у кого остался?

Обсуждалось здесь и здесь, и еще этот индикатор.

 

ToLik_SRGV, спасибо, я читал эти ветки. Был скрипт. Пропала видимо ветка или пост.

 
Richie:

ToLik_SRGV, спасибо, я читал эти ветки. Был скрипт. Пропала видимо ветка или пост.


Сергей иногда проще написать скрипт самому, чем искать :)))

//+------------------------------------------------------------------+
//|                                               ZigZag_to_File.mq4 |
//|                               Copyright © 2010, Анатолий Сергеев |
//|                                            mql.sergeev@yandex.ru |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2010, Анатолий Сергеев"
#property link      "mql.sergeev@yandex.ru"
#property show_inputs

extern int ExtDepth=12;
extern int ExtDeviation=5;
extern int ExtBackstep=3;
extern string File_name = "";
extern bool isAllZigZagDate = false;

int Handle;
//+------------------------------------------------------------------+
//| expert initialization function                                   |
//+------------------------------------------------------------------+
int init(){
   if(File_name == "")File_name = Symbol() + Period() + "_ZigZag_Date";

   Handle = FileOpen(File_name + ".csv",FILE_WRITE | FILE_CSV);
   if(Handle == -1){
      Alert("Ошибка при открытии файла ", File_name + ".csv");
   }else{
      FileWrite(Handle,"Time;Open;Close;Low;High;ZigZag Date");
   }
}
//+------------------------------------------------------------------+
//| expert start function                                            |
//+------------------------------------------------------------------+
int start(){
   double date;

   for(int shift = 0; shift <= Bars-1; shift++){
      date = iCustom(NULL, 0, "ZigZag", ExtDepth, ExtDeviation, ExtBackstep, 0, shift);
      if(date > 0){
         FileWrite(Handle,TimeToStr(Time[shift]),Open[shift],Close[shift],Low[shift],High[shift],date);
         if(!isAllZigZagDate)break;
      }else{
         continue;
      }
   }
}
//+------------------------------------------------------------------+
//| expert deinitialization function                                 |
//+------------------------------------------------------------------+
int deinit(){
   FileClose(Handle);
}
//+------------------------------------------------------------------+
//| end                                                              |
//+------------------------------------------------------------------+

Параметр isAllZigZagDate определяет записывать только последнюю точку ZigZag`а (по умолчанию) или все историю.

P.S.
Бросить в кодбазу чтобы не искать потом или не надо? 

 
ToLik_SRGV: Сергей иногда проще написать скрипт самому, чем искать :))) Параметр isAllZigZagDate определяет записывать только последнюю точку ZigZag`а (по умолчанию) или все историю.P.S. Бросить в кодбазу чтобы не искать потом или не надо?


Спасибо, Анатолий. Это верно, быстрее сам напишешь, чем найдёшь. Спасибо за скрипт. Лучше конечно в кодбазу тоже кинуть, может кому ещё нужно будет. А то, ветки пропадают :) Я вот сейчас тоже свой написал, точнее "собрал из того, что было":

#property show_inputs
extern string ext="txt";
extern int last_bar=1;
extern int bars=1000;
extern int ExtDepth=24;
extern int ExtDeviation=5;
extern int ExtBackstep=3;
extern int Kol=100;

int i,j;
double zz;

int start()
{
int h=FileOpen(Symbol()+Period()+"."+ext+"",FILE_WRITE|FILE_CSV,",");
  for(i=0,j=0;i<Bars && j<Kol;i++)
  {
    zz=iCustom(NULL,0,"ZigZag",ExtDepth,ExtDeviation,ExtBackstep,0,i);
    if(zz!=0)
    {
      FileWrite(h,TimeToStr(Time[i],TIME_DATE),TimeToStr(Time[i],TIME_MINUTES),i,zz);
      j++;   
    }
  }
FileClose(h);
return(0);
}
Файлы:
savezz.mq4  1 kb
 
У меня советник выводит информацию в отдельное окно индикатора. Как сделать, чтобы при смене ТФ данные в этом окне обновлялись сразу, а не с приходом нового тика?
 
artmedia70:
У меня советник выводит информацию в отдельное окно индикатора. Как сделать, чтобы при смене ТФ данные в окне обновлялись сразу, а не с приходом нового тика?


пропиши вызов обновления необходимых данных в init()

ЗЫ: я на выходных написал в инит полностью код выгрузчика котировок, дык он прекрасно и без тиков работал - просто по запуску зацикливал выгрузку и  получал данные

 
artmedia70:
У меня советник выводит информацию в отдельное окно индикатора. Как сделать, чтобы при смене ТФ данные в окне обновлялись сразу, а не с приходом нового тика?

С помощью функции WindowRedraw();

 
IgorM:


пропиши вызов обновления необходимых данных в init()

ЗЫ: я на выходных написал в инит полностью код выгрузчика котировок, дык он прекрасно и без тиков работал - просто по запуску зацикливал выгрузку и получал данные

Т.е. мне нужно в init() советника добавить вызов функции вывода информации в окно индикатора?
 
ToLik_SRGV:

С помощью функции WindowRedraw();

У меня в окне пустого индикатора есть данная функция. Но обновление данных происходит только по новому тику.

#property indicator_separate_window
#property indicator_minimum 1
#property indicator_maximum 10
 
bool initFinished=false;
// добавляем переменную, которая будет запоминать состояние инициализации.
// false - инициализации еще не было
// true - была
 
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int init()
{

   return(0);
}
//+------------------------------------------------------------------+
//| Custom indicator deinitialization function                       |
//+------------------------------------------------------------------+
int deinit()
{
   ObjectsDeleteAll();
   // удаляем все объекты
   
   return(0);
}
//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
int start()
{
   if(initFinished==false)
   {
      IndicatorShortName("Info");
 
      int winID=WindowFind("Info");
   
      if(winID<0)
      {
         // если номер подокна равен -1, то возникла ошибка
         Print("Чёт не могу твоего окошечка найти, пошел я отсюдова");
         return(0);
      }  
//------------------------ Тут можно рисовать ------------------------- 
 
// ----------------------- Но не нужно... ----------------

//------------------------------------------------------------------------- 
      WindowRedraw();      
            
      initFinished=true;
     
   }
   
   return(0);
}