[警告は閉鎖されました!】フォーラムを乱雑にしないために、どんな初心者の質問でも。プロフェッショナルは、通り過ぎないでください。あなたなしでは、どこにも行けない。 - ページ 672

 

半年前、ある人がEXCELで作業するために、ジグザグの値(時間とレート)をCSVファイルに出力するスクリプトを投稿しました。今、私はそれを見つけることができません。もしかしたら、誰かが持っているかも?

 
Richie:

半年前、ある人がEXCELで作業するために、ジグザグの値(時間とレート)をCSVファイルに出力するスクリプトを投稿しました。今、私はそれを見つけることができません。もしかしたら、誰かが持っているかも?

ここと ここ、またこのインジケーターで 議論されています。

 

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 パラメータは、最後のジグザグポイント(デフォルト)のみを書き込むか、すべての履歴を書き込むかを定義します。

追伸
後で探さなくてもいいように、コードベースに放り込んでおきましょうか。

 
ToLik_SRGV: Sergeiさん、検索するより自分でスクリプトを書いた方が簡単な場合もありますよ :)))パラメータ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が変化したときに即座に更新するようにするにはどうすればよいでしょうか。
 
artmedia70:
私のEAでは、別のインジケーターウィンドウに表示されます。TFの変更時に、新しいティックの到着ではなく、ウィンドウのデータがすぐに更新されるようにするにはどうしたらよいでしょうか。


init()で必要なデータをリフレッシュするための呼び出しを書く

ZS: 週末に、initで引用アンローダのフルコードを書きましたが、ティックなしでうまくいきました。

 
artmedia70:
私のEAでは、情報を別のインジケーターウィンドウに表示します。TFが変化したときに、新しいティックの到着ではなく、ウィンドウのデータがすぐに更新されるようにするにはどうすればよいですか?

WindowRedraw()関数を使用する。

 
IgorM:


init()で必要なデータを更新するための呼び出しを書く

HH: 週末に、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);
}