[경고, 주제 닫힘!] 포럼을 어지럽히지 않도록 모든 초보자 질문. 프로, 놓치지 마세요. 당신 없이는 어디에도 없습니다. - 페이지 672

 

반년 전에 누군가 지그재그 값(시간과 코스)을 CSV 파일에 출력하여 엑셀에서 작동시키는 스크립트를 게시했습니다. 지금은 찾을 수 없습니다. 누군가가 떠났을까?

 
Richie :

반년 전에 누군가 지그재그 값(시간과 코스)을 CSV 파일에 출력하여 엑셀에서 작동시키는 스크립트를 게시했습니다. 지금은 찾을 수 없습니다. 누군가가 떠났을까?

여기여기 , 그리고 이 지표 에 대해 논의했습니다 .

 

ToLik_SRGV , 감사합니다. 그 스레드를 읽었습니다. 대본이 있었습니다. 분명히 스레드 또는 게시물이 사라졌습니다.

 
Richie :

ToLik_SRGV , 감사합니다. 그 스레드를 읽었습니다. 대본이 있었습니다. 분명히 스레드 또는 게시물이 사라졌습니다.


Sergey 때로는 검색하는 것보다 스크립트를 직접 작성하는 것이 더 쉽습니다. :)))

 //+------------------------------------------------------------------+
//|                                               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 매개변수는 마지막 지그재그 지점(기본값)만 기록할지 전체 기록을 기록할지 결정합니다.

추신
나중에 검색하지 않도록 코드베이스를 입력하거나 필요하지 않습니까?

 
ToLik_SRGV : 때로는 Sergey가 검색하는 것보다 스크립트를 작성하는 것이 더 쉽습니다. :)) isAllZigZagDate 매개변수는 마지막 ZigZag 지점(기본값)만 쓸지 아니면 전체 히스토리를 쓸지 결정합니다.


아나톨리 감사합니다. 맞습니다, 당신은 당신이 찾는 것보다 더 빨리 자신을 쓸 것입니다. 스크립트 주셔서 감사합니다. 물론 코드베이스에 넣는 것이 더 낫습니다. 다른 사람이 필요할 수도 있습니다. 그리고 나서 가지가 사라집니다. 저는 또한 지금, 더 정확하게는 "이전에서 수집한 것"으로 제 자신을 썼습니다.

 #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()에서 필요한 데이터를 업데이트하는 호출을 작성합니다.

추신: 주말 동안 init에 따옴표 언로더의 전체 코드를 작성하여 틱 없이 완벽하게 작동했습니다. 시작 시 업로드를 반복하고 데이터를 수신했습니다.

 
artmedia70 :
내 조언자는 별도의 표시기 창에 정보를 표시합니다. 새 틱이 도착하지 않고 기간을 변경할 때 창의 데이터를 즉시 업데이트하는 방법은 무엇입니까?

WindowRedraw() 함수를 사용하여;

 
IgorM :


init()에서 필요한 데이터를 업데이트하는 호출을 작성합니다.

추신: 주말 동안 init에 따옴표 언로더의 전체 코드를 작성하여 틱 없이 완벽하게 작동했습니다. 시작 시 업로드를 반복하고 데이터를 수신했습니다.

저것들. EA의 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 );
}