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

 

Gann Gridを作り直す予定はないのですか?TFからTFに切り替えると、セルのサイズが変わり、固定されたバインディングがないのです。それとも、私が何か理解していないのか...。

M1M5

 

Alpariの金属のみバーとOHLCが表示されないが、他は問題ない。端末を新しいフォルダに移動しましたが、解決しません。どこにエラーがあるのでしょうか?W7 64

 
BoraBo:

Alpariの金属のみバーとOHLCが表示されないが、他は問題ない。端末を新しいフォルダに移動しましたが、解決しません。どこにエラーがあるのでしょうか?W7 64

私も同じ悩みを抱えています。サーバーの調子がおかしいと感じたことがあります。アルパリ・テクニカルサポートにお問い合わせください。

 
void OnStart()
  {
//---
symbol2csv(Symbol(),Period());
  }
//+------------------------------------------------------------------+
int symbol2csv(string smb,ENUM_TIMEFRAMES tf)
  {
   ResetLastError();
   int filehandle=FileOpen(smb+"_"+tf2str(tf)+".csv",FILE_WRITE|FILE_CSV,",");
   if(filehandle!=INVALID_HANDLE)
     {
      MqlRates rates[];
      int i=0,copyed=CopyRates(smb,tf,From,To,rates);
      ArraySetAsSeries(rates,false);
      FileWrite(filehandle,"\"Date\" \"Time\" \"Open\" \"High\" \"Low\" \"Close\" \"Volume\""); // writing header
      for(i=0;i<copyed;i++)
        {
         FileWrite(filehandle,TimeToString(rates[i].time,TIME_DATE),TimeToString(rates[i].time,TIME_MINUTES),DoubleToString(rates[i].open,_Digits),DoubleToString(rates[i].high,_Digits),DoubleToString(rates[i].low,_Digits),DoubleToString(rates[i].close,_Digits),rates[i].real_volume);
        }
      FileClose(filehandle);
      Print(smb+" exported "+IntegerToString(copyed));
      return copyed;
     }
   else Print("FileOpen failure. Error is ",GetLastError());
   return -1;
  }
ファイルのVolumeの欄が常に0になっているのはなぜですか?また、音量の記録はどのように行うのですか?
 
Graff:
ファイルのVolumeの欄が常に0になっているのはなぜですか?また、ボリュームを出すにはどうしたらいいのでしょうか?

real_volume for forex instruments?

まずはtick_volume を試してみるのもいいかもしれません。

 

エラーは何ですか?

以下はそのコードですが、必要最小限にカットしています。

//+------------------------------------------------------------------+
#property indicator_separate_window
#property indicator_buffers 1
#property indicator_plots   1

//---------- MQL5 --------------
int ecx = 0;//-- Кол-во тестируемых пар --
string g_s_SymbolsTrade[] = {"AUDCAD","AUDCHF","AUDJPY","AUDNZD","AUDUSD","CADCHF","CHFJPY","EURAUD","EURCAD","EURCHF","EURGBP","EURJPY","EURNZD","EURUSD",
"GBPCHF","GBPJPY","GBPUSD","NZDUSD","USDCAD","USDCHF","USDJPY"};

//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int OnInit()
{
   //-- Сколько всего валютных пар --
   ecx = ArraySize(g_s_SymbolsTrade);
   //-- Установить таймер на каждую секунду --
   if (EventSetTimer(1) == false) return(-1);//int 08
   
   return(0);//ret;
}
//----------------------------------------------------------------------------//
void OnDeinit(const int reason)
{
   EventKillTimer();//timer off
}
//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
int OnCalculate(const int rates_total,
                const int prev_calculated,
                const datetime &time[],
                const double &open[],
                const double &high[],
                const double &low[],
                const double &close[],
                const long &tick_volume[],
                const long &volume[],
                const int &spread[])
{
    
//--- return value of prev_calculated for next call
   return(rates_total);//ret;
}

//+------------------------------------------------------------------+
////////////////////////////////////////////////////////////////////////////////
//                           Expert Timer function                            //
////////////////////////////////////////////////////////////////////////////////
//----------------------------------------------------------------------------------------------------
void OnTimer()//int 08
{
static bool b_Flag = false;
string db_SymbolName;
MqlRates rates[];
int edx;

   if (b_Flag == true) return;//ret -- реентерабельность --
   b_Flag = true;//cli
   //---------------------------------------------
   for (int ebx = 0; ebx < ecx; ebx++){
      db_SymbolName = g_s_SymbolsTrade[ebx];
      edx=CopyRates(db_SymbolName,_Period,0,1,rates);
      if (edx != 1){//cmp edx,1 | jne
         b_Flag = false;//sti
         return;//jne ret;
      }   
   }//loop ecx       
   Print ("Загрузка завершена.");
   //---------------------------------------------
   b_Flag = false;//sti
}

実行すると、ある時はすぐに、またある時はチャート切り替え期間後に突然ターミナルが遅くなり、ログ全体がこれで詰まってしまいます。


私のミスなのか、CopyRates関数のエラーなのか、理由は何でしょうか?

 
pusheax:

私のせいなのか、CopyRates関 数のエラーなのか、理由は何ですか?

2人ともね。

この方法で試してみてください。

void OnTimer()//int 08
{
static bool b_Flag = false;
if (b_Flag == true) return;//ret -- реентерабельность --
string db_SymbolName;
MqlRates rates[ ecx];    // поправка здесь.
int edx;


   b_Flag = true;//cli
   //---------------------------------------------
   for (int ebx = 0; ebx < ecx; ebx++){
      db_SymbolName = g_s_SymbolsTrade[ebx];
      edx=CopyRates(db_SymbolName,_Period,0,1,rates);
      if (edx != 1){//cmp edx,1 | jne
         b_Flag = false;//sti
         return;//jne ret;
      }   
   }//loop ecx       
   Print ("Загрузка завершена.");
   //---------------------------------------------
   b_Flag = false;//sti
}
 
MetaDriver:

2人ともね。

こんな風に試してみてください。


いや、残念ながら役に立たなかった。

MqlRates rates[100]のように書きました。

otherwise: MqlRates rates[ecx]; - コンパイルエラーを出します。

また、トップに移動させるというアイデアもよかったです。

if (b_Flag == true) return;//ret -- リエントランシー--。

が、残念ながら結果は同じです。

他に何かアイデアはありますか?

Документация по MQL5: Стандартные константы, перечисления и структуры / Структуры данных / Структура исторических данных
Документация по MQL5: Стандартные константы, перечисления и структуры / Структуры данных / Структура исторических данных
  • www.mql5.com
Стандартные константы, перечисления и структуры / Структуры данных / Структура исторических данных - Документация по MQL5
 
papaklass:

チャート 設定のターミナル内のバー数を無制限にした場合。バーの数を減らす。

バーが1本だけコピーされているようです。
 
papaklass:

だから25の楽器に。バーの数を 減らすまで、12でも同じことがありました。

それから、サーヴィスすることを意味します。端末は、1 barを読み込む際に、ディスクからシンボルごとにすべての 履歴を吐き出すべきではありません。

たとえ無制限に設定されていても。 キャッシュはスマートに行うべき。

--

一般的に良いアドバイスです。考えてみたんですが、「生理の切り替え時」って言ってますよね。そのため、端末はすべてを分単位で保存し、不足する期間を計算し始め、バッファのためのメモリ不足に陥ってしまうのです。

要するに、どちらも悪いのです。Pushはメモリを買っておらず、無制限(または無制限程度)でたくさんの通貨ペアを欲しています。

そしてMQ - インジケータエラー(「Error XXXX : Close your lip, comrade」のような)として扱わず、あくまで自分自身のエラーとして扱います。