エラー、バグ、質問 - ページ 1442

 
Yousufkhodja Sultonov:
設定で1000を指定しているにもかかわらず、テスターがオープンポジションの 数を100に制限している状況を打開する方法を教えてください。
これは端末の制限ではなく、ブローカーの制限であり、100以上の注文を出すブローカーでデモ口座を開くことはできません。
 

CopyRates() について、よく考えて読んでみてください。

備考

1.要求されたデータ間隔がサーバで利用可能なデータから完全に外れている場合、この関数は -1 を返す。要求されたデータがTERMINAL_MAXBARS(チャート上のバーの最大量)の外にある場合、この関数は-1も返します。

2.インジケータにデータを要求する際、要求されたタイムシリーズがまだ構築されていないか、サーバからダウンロードする必要がある場合、この関数はすぐに-1を返しますが、ダウンロード/構築プロセス自体は開始されます。

3.Expert Advisor またはスクリプトからデータを要求すると、端末がローカルにこれらのデータを持っていない場合はサーバーからのダウンロードが開始され、ローカル履歴からデータを構築できる場合は必要な時系列の構築が開始されますが、まだ準備ができていない場合があります。この関数は、タイムアウト時に準備できるデータ量を返しますが、履歴のダウンロードは継続され、次に同様の要求があったときには、より多くのデータが返されることになります。

1. これは正しく、論理的です。データを要求する前に、ウィンドウ内の許容バー数を確認する必要があります。

2) これも正しい。サーバーとの接続を確認することを忘れずに、端末が必要な量を返すまでデータの受信を試みる必要がある。受信データの品質については、「データがあるかないか」で判断しています。

3.ここでは、まったくわかりません。受信したデータが完全なものであるかどうかはわからない。また、なぜユーザーは、完全性が確認できないデータを必要とするのでしょうか?実践によると、ノー・トリック(サーバーからのダウンロードを初期化するためにデータを取得する予備的試み)では、リクエストが完全なデータを取得するという確信が得られない。

Expert Advisorのデータ検索機能の挙動は、インジケータと同様にする方が現実的だと思います。

 
Joo Zepper:

CopyRates() について、よく考えて読んでみてください。


3.ここがまったくわからない。受信したデータが完全なものであるかどうかはわからない。また、なぜユーザーは完全でないデータを必要とするのでしょうか?実践によると、どんなトリック(サーバーからダウンロードを開始するためのデータを得るための予備的試み)も、リクエストが完全なデータを得ることを確信させるものではないことがわかります。

なぜ確信が持てないのですか?念のため、SeriesInfoInteger(symbol,period,SERIES_SYNCHRONIZED) を使用してください。

ドキュメントを 読み続けてください。できるだけ、丁寧に。

 
Slawa:

なぜ確信が持てないのですか?念のため、SeriesInfoInteger(symbol,period,SERIES_SYNCHRONIZED)を使用してください

ドキュメントを 読み続けてください。思慮を欠くことなかれ。

ご忠告ありがとうございます。でも、このフラグはずっと使っているんですよ。他にもっと確実な方法はないのでしょうか?

また、次の提案として、要求された楽器のチャートウィンドウを開くことを待っているところです。そして、これは行われますが、全データが保証されるわけではありません。

 
Joo Zepper:
ありがとうございます。しかし、このフラグをチェックすることは、私が長い間、現役で使っていることなのです。他にもっと確実な方法はないのでしょうか?

では、何が問題なのでしょうか?このフラグが true に設定されている場合、現在のデータは完全に同期している。サーバーがあなたより多くのデータを持っているため、不完全である可能性があります。

次に、履歴を徹底的に照会し、 SeriesInfoInteger(symbol,PERIOD_M1,SERIES_SERVER_FIRSTDATE) をローカル分の最初の日付と照合する。

 
Slawa:

では、何が問題なのでしょうか?このフラグが true に設定されている場合、現在のデータは完全に同期している。サーバーがあなたより多くのデータを持っているため、不完全である可能性があります。

次に、履歴を徹底的に照会し、 SeriesInfoInteger(symbol,PERIOD_M1,SERIES_SERVER_FIRSTDATE) をローカル分の最初の日付と照合する。

しかし、これはExpert Advisorにとっては自殺行為です。ひどいラグが発生します。また、詳細な履歴は原則として必要ありません。

こんなことを考えています。マーケットレポートでは常に最新のデータを表示し、サーバーの履歴とウィンドウ内の許容バー数の制限内で、端末が要求に応じて必要な量のデータを提供できない場合、そのような場合は、指標のように、-1を返します。データを取得するか、-1するか、第3の選択肢はない。

 

データを要求する前にやっています。

for(int attempt = 0; attempt < 10; attempt++) 
  {
    bool flag = true; 
    for(int symb = 0; symb < SymbolCNT; symb++) 
    {
      if(!synched[symb]) 
      {
        // trial copying of price data
        int copied = CopyRates(symbsName[symb], smPeriod, startPosDataGet, barsReq, prices[symb].Data); 
        
        if(copied >= barsReq) 
        {
          if(idChart[symb] != -1) 
          {
            ChartClose(idChart[symb]); 
            idChart[symb] = -1;
          }
          synched[symb] = true;
        }
        else 
        {
          flag = false; 
          if(showAlert) 
            Alert(symbsName[symb] + ": requested/received " + (string)barsReq + "/" + (string)copied); 
          
          if(idChart[symb] == -1) 
          {
            idChart[symb] = ChartOpen(symbsName[symb], smPeriod); 
            ChartSetInteger(ChartFirst(), CHART_BRING_TO_TOP, 0, true);
          }
        }
      }
    }
    if(!flag) 
      if(TerminalInfoInteger(TERMINAL_CONNECTED)) 
        Sleep(1000);
  }
  
  for(int symb = 0; symb < SymbolCNT; symb++) 
    if(idChart[symb] != -1) 
      ChartClose(idChart[symb]); 

しかし、すでにダイレクトクエリでは、データに穴があいてしまうのです。穴がないこともある。それこそ、受け取ったデータに自信が持てない。

 
Karputov Vladimir:

メッセージエディターで 挿入した動画が保存されない。

Google Chrome バージョン 46.0.2490.86 m.

インターネットエクスプローラー 11.11.10586.0.

エラーは修正されます。メッセージをありがとうございました。
 

Windows10にアップデートしたら、通常のインジケーターが動かなくなった。単純にグラフィックに付けられないのです。エディターで、コンパイル時にエラーが表示される

失態

 
Alexandr:
Windows10にアップデートしたら、通常のインジケーターが動かなくなった。単純にグラフィックに添付することはできません。エディタでは、コンパイル時にエラーhttps://i.gyazo.com/5dbea3b25ab9a45cf3a9449335c1f57f.png が表示されます。
ターミナルフォルダが 書き込み可能かどうか、UACを下げてみるなどして、アクセス権に問題があると思われます。