[警告关闭!]任何新手问题,为了不给论坛添乱。专业人士,不要走过。没有你,哪里都不能去。 - 页 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的点(默认)或所有历史。


谢谢你,安纳托利。这就对了,自己写比找人快。谢谢你的剧本。当然最好也能把代码库扔进去,也许还需要别人。否则,树枝就会消失 :)。我也写了我的,或者说是 "由原来的东西组装而成。

#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
 
我的EA在一个单独的指标窗口中显示信息。我怎样才能使这个窗口中的数据在TF发生变化时立即更新,而不是随着新tick的到来而更新?
 
artmedia70:
我的EA在一个单独的指标窗口中显示信息。如何做到在改变TF时,窗口中的数据会立即更新,而不是随着新刻度的到来而更新?


在init()中编写一个刷新必要数据的调用。

ZS:周末我在init中写了一个完整的报价卸载器的代码,它在没有ticks的情况下工作得很好--它只是在启动时循环卸载并接收数据。

 
artmedia70:
我的EA在一个单独的指标窗口中显示信息。我怎样才能使窗口中的数据在TF发生变化时立即更新,而不是随着新刻度的到来而更新?

使用WindowRedraw()函数。

 
IgorM:


在init()中写一个调用来更新所需的数据

HH:周末我在init中写了一个完整的报价卸载器的代码,它在没有ticks的情况下工作得很好--它只是在启动时循环卸载并接收数据。

也就是说,我需要在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);
}
原因: