[UYARI, KONU KAPALI!] Forumu kirletmemek için herhangi bir acemi sorusu. Profesyonel, kaçırmayın. Sensiz hiçbir yerde. - sayfa 672

 

Birisi yarım yıl önce EXCEL'de çalışmak için bir CSV dosyasına zikzak değerleri (zaman ve kurs) yazdıran bir komut dosyası yayınladı. Şimdi bulamıyorum. Belki biri gitti?

 
Richie :

Birisi yarım yıl önce EXCEL'de çalışmak için bir CSV dosyasına zikzak değerleri (zaman ve kurs) yazdıran bir komut dosyası yayınladı. Şimdi bulamıyorum. Belki biri gitti?

Burada ve burada tartışıldı ve ayrıca bu gösterge .

 

ToLik_SRGV , teşekkürler, o konuları okudum. Bir senaryo vardı. Görünüşe göre konu veya gönderi kayboldu.

 
Richie :

ToLik_SRGV , teşekkürler, o konuları okudum. Bir senaryo vardı. Görünüşe göre konu veya gönderi kayboldu.


Sergey bazen kendi başına bir komut dosyası yazmak, aramaktan daha kolaydır :)))

 //+------------------------------------------------------------------+
//|                                               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 parametresi, yalnızca son ZigZag noktasının mı (varsayılan) yoksa tüm geçmişin mi kaydedileceğini belirler.

not
Daha sonra arama yapmamak için kod tabanına atın yoksa gerekli değil mi?

 
ToLik_SRGV : Bazen Sergey için bir komut dosyası yazmak arama yapmaktan daha kolaydır :))) isAllZigZagDate parametresi, yalnızca son ZigZag noktasının mı (varsayılan olarak) yoksa tüm geçmişin mi yazılacağını belirler.


Anatoly'e teşekkürler. Bu doğru, kendin bulacağından daha hızlı yazacaksın. Senaryo için teşekkürler. Elbette, onu kod tabanına da atmak daha iyidir, belki başka birinin buna ihtiyacı olabilir. Ve sonra dallar kaybolur :) Ben de şimdi kendim yazdım, daha doğrusu "eskiden toplandı":

 #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 );
}
Dosyalar:
savezz.mq4  1 kb
 
Danışmanım , bilgileri ayrı bir gösterge penceresinde görüntüler. Zaman çerçevesini değiştirirken, bu penceredeki verilerin yeni bir onay işaretinin gelmesiyle değil, hemen güncellendiğinden nasıl emin olabilirim?
 
artmedia70 :
Danışmanım, bilgileri ayrı bir gösterge penceresinde görüntüler. Yeni bir kene gelişiyle değil, zaman çerçevesini değiştirirken penceredeki veriler hemen güncellenir mi?


init () içindeki gerekli verileri güncellemek için bir çağrı yazın

Not: hafta sonu boyunca tırnak boşaltıcısının tam kodunu init'e yazdım, bu yüzden kusursuz ve keneler olmadan çalıştı - yüklemeyi başlangıçta döngüye aldı ve veri aldı

 
artmedia70 :
Danışmanım, bilgileri ayrı bir gösterge penceresinde görüntüler. Yeni bir kene gelişiyle değil, zaman çerçevesini değiştirirken penceredeki veriler hemen güncellenir mi?

WindowRedraw() işlevini kullanma;

 
IgorM :


init () içindeki gerekli verileri güncellemek için bir çağrı yazın

Not: hafta sonu boyunca tırnak boşaltıcısının tam kodunu init'e yazdım, bu yüzden kusursuz ve keneler olmadan çalıştı - yüklemeyi başlangıçta döngüye aldı ve veri aldı

Onlar. danışmanın init() içindeki gösterge penceresindeki bilgileri görüntülemek için işleve bir çağrı eklemem gerekir mi?
 
ToLik_SRGV :

WindowRedraw() işlevini kullanma;

Bu işleve boş gösterge penceresinde sahibim. Ancak veriler yalnızca yeni bir onay işaretiyle güncellenir.

 #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 );
}