MQL5の初心者の質問です。プロは素通りしない。 - ページ 3

削除済み  

多分、モデレーターに助けを求めて、スレッドから最初の2つの投稿を削除するよう依頼する時だと思います( Yedelkin氏が気分を害さないことを願っています。私の質問に答えてくれた彼に感謝します)。Yedelkin氏が気を悪くされないように、この投稿を「MT5の改善に関するマニアの願い」とか、そのようなトピックに独断で改名してほしいものです...。このトピックの名前を何か別のものに変えてみる、そのままにしておく。

もしかしたら、何かいいことがあるかも?聞いてもらえるかもしれない)。

 

はhstファイルを読もうとしたが、FileReadStringは ヒエログリフを出力した。

どうすれば戦えるのか?

5 "EURUSD "のヘッダーµl4を書きます "(C)opyright 2003, MetaQuotes Software Corp.見ています。

セリフ以外は全部わかるんだけど、なんでこうなんだろう?

送信者 5

#define AMOUNT_OHLCV 5 
static double OLHCV[AMOUNT_OHLCV];

//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
void  OnStart()  {

  int Tmp[15];
  for(int t=0;t<ArraySize(Tmp);t++)
      Tmp[t]=0;
  string Symbol_Create  = "EURDDD";     
  string FileName = Symbol_Create + "1.hst";
  int handle = FileOpen(FileName, FILE_BIN|FILE_WRITE);
   
  string s="";
  s=s+"FileWriteInteger "+FileWriteInteger(handle, 400,4)+"\n";            
  s=s+"FileWriteString "+FileWriteString(handle, "(C)opyright 2003, MetaQuotes Software Corp.",32)+"\n"; 
  s=s+"FileWriteString "+FileWriteString(handle, Symbol_Create, 6)+"\n"; //Symbol      
  s=s+"FileWriteInteger "+FileWriteInteger(handle, 1,4)+"\n";   //Period        
  s=s+"FileWriteInteger "+FileWriteInteger(handle, 4,4)+"\n";  //Digits           
  s=s+"FileWriteArray "+FileWriteArray(handle, Tmp, 0, 15)+"\n";           
  Comment(s);


   MqlRates EURUSD[];
   int bars=CopyRates("EURUSD",1,0,Bars("EURUSD",1),EURUSD);
   ArraySetAsSeries(EURUSD,true);
   
   for(int i=bars-1;i>=0;i--){
        OLHCV[0] = EURUSD[i].open;
        OLHCV[1] = EURUSD[i].low;
        OLHCV[2] = EURUSD[i].high;
        OLHCV[3] = EURUSD[i].close;
        OLHCV[4] = EURUSD[i].real_volume;
        
        double Tmph = OLHCV[ArrayMaximum(OLHCV,0, AMOUNT_OHLCV - 1)];
        OLHCV[1] = OLHCV[ArrayMinimum(OLHCV, 0, AMOUNT_OHLCV - 1)];
        OLHCV[2] = Tmph;
        FileWriteInteger(handle,EURUSD[i].time,4);  
        FileWriteArray(handle, OLHCV, 0, AMOUNT_OHLCV);
    }
  FileFlush(handle);
  FileClose(handle);
return;
}

レシーバー4

int start(){
  int Tmp[15];
  for(int t=0;t<ArraySize(Tmp);t++)
      Tmp[t]=0;
  string FileName = "EURDDD1.hst",s="";
  int handle = FileOpenHistory(FileName, FILE_BIN|FILE_WRITE|FILE_READ);

  s= s+FileReadInteger(handle,4)+"\n";            
  s= s+FileReadString(handle,64)+"\n"; 
  s= s+FileReadString(handle,12)+"\n";     
  s= s+FileReadInteger(handle,4)+"\n";           
  s= s+FileReadInteger(handle,4)+"\n";             
  s= s+FileReadArray(handle, Tmp, 0, 15)+"\n";  

  for(int i=20/*(FileSize(handle)-148)/44*/;i>=0;i--){
         s= s+TimeToStr(FileReadInteger(handle,4))+"\n";             
         s= s+FileReadDouble(handle,8)+"\n";             
         s= s+FileReadDouble(handle,8)+"\n";             
         s= s+FileReadDouble(handle,8)+"\n";             
         s= s+FileReadDouble(handle,8)+"\n";             
         s= s+FileReadDouble(handle,8)+"\n";            
         s= s+"-----------------------------------------"+"\n";
  }
  Comment(s);
  return;
}
削除済み  
costy_:

FileReadStringは象形文字をあきらめました。

そして、本当に象形文字なのか...。 アウトソーシングの結果、あるいは金正日を偲ぶイースターエッグ)
 
Figar0:
しかも、本当に象形文字で...。 アウトソーシングの結果、あるいは金正日を偲ぶイースターエッグ)
アウトローライフとチョンシムキン :(
削除済み  

MT5の皆様へ MT5ターミナルで、同じ時間間隔のバー(主に分足)の本数が 異なる場合があることがわかりました。

バー形成中に価格変動がなかった場合、バーは全く描画されない、つまりスキップされることは理解しています。

ショックです。確認したい。

それは本当なのか、そうでないのか。

 
Edic:

MT5の皆様へ MT5ターミナルで、同じ時間間隔のバー(主に分足)の本数が 異なる場合があることがわかりました。

バー形成中に価格変動がなかった場合、バーは全く描画されない、つまりスキップされることは理解しています。

ショックです。確認したい。

それは本当なのか、そうでないのか。

バー形成のタイムフレーム中にティックがなかった場合、バーは描画されません。
 

特定のタイプ(例:OBJ_HLINE)のすべてのグラフィカル・オブジェクトを処理するにはどうすればよいですか?

ObjectsTotalを使えば、チャート上にあるこのタイプのオブジェクトの数を知ることができますが、オブジェクト名があらかじめわからない場合、同じforを使ってどのように列挙すればいいのでしょうか。

具体的には、グラフのすべての水平 線を列挙し、その値を配列に取得する必要があります。

感謝

 
Olegts:

特定のタイプ(例:OBJ_HLINE)のすべてのグラフィカル・オブジェクトを処理するにはどうすればよいですか?

ObjectsTotalを使えば、チャート上にあるこのタイプのオブジェクトの数を知ることができますが、オブジェクト名があらかじめわからない場合、同じforを使ってどのように列挙すればいいのでしょうか。

具体的には、グラフのすべての水平 線を列挙し、その値を配列に取得する必要があります。

感謝

ObjectsTotal "の後に"ObjectName " を使用する。
 
barabashkakvn:
ObjectsTotal "の後に"ObjectName " を使用する。
了解です、ありがとうございます)
削除済み  
barabashkakvn:
バーのタイムフレームにティックがなかった場合、バーは構築されません。
ありがとうございました)