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

 
私はそれを参考にし、また、拡張子.chmを参考にしました。
 
Zeleniy:
その1つと、拡張子が.chmのものを意味します。

https://www.mql5.com/files/docs/mt5/mql5/chm/mql5_russian.chm

https://www.mql5.com/files/pdf/mql5_russian.pdf

 
void OnStart()
  {
   MqlRates a[],b[];
   Alert("после MqlRates a[],b[] Series == "+ArrayIsSeries(b));
   CopyRates(Symbol(),PERIOD_CURRENT,0,TerminalInfoInteger(TERMINAL_MAXBARS),a);
   ArraySetAsSeries(a,true);
   CopyRates(Symbol(),PERIOD_M1,0,TerminalInfoInteger(TERMINAL_MAXBARS),b);
   Alert("после CopyRates Series == "+ArrayIsSeries(b));
   ArraySetAsSeries(b,true);
   Alert("после ArraySetAsSeries(b,true); Series == "+ArrayIsSeries(b));
}
2012.05.06 17:29:55 TEMP (EURUSD,H1) after ArraySetAsSeries(b,true); Series ==false
2012.05.06 17:29:55 TEMP (EURUSD,H1) after CopyRates Series == false
2012.05.06 17:29:55 TEMP (EURUSD,H1) afterMqlRates a[],b[] Series == false

表示され、赤面することもありません。もしかして、煮え切らない?

 
 
sergeev:

ArrayGetAsSeries

蓋を外す、火を消す。

ありがとうございます。

 
マーケットが機能せず、デモや無料製品のダウンロードができない - 「Error loading program *****.後でもう一度お試しください"
 
papaklass:

リーク弦残り1

MQLTradeRequestのリクエスト構造 体の初期化モードが原因だとわかりました。

このように初期化すると

と表示され、"1 leaked strings left "と表示されません。

OpenPosition()関数からグローバルレベルまで初期化を行うと、メモリレコードが表示されます。

2つ目の選択肢について。それを解明しようとすると、次のようなコードが見つかりました。

//+------------------------------------------------------------------+
//|                                                   papaclass4.mq5 |
//+------------------------------------------------------------------+
MqlTradeRequest      mrequest={1};
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
void OnStart()
  {
   Print("Global: mrequest.price=",mrequest.price);
  }
//+------------------------------------------------------------------+

リターンです。

2012.05.07 10:52:10 papaclass4 (USDCAD,M1) グローバル:mrequest.price=0.0

変数mrequest={1}はグローバルに初期化されているが、プログラムにはなぜか初期化されたフィールドの値が表示されない。 コンパイラも文句を言わない。

 
構造体の 最初のメンバーを1、残りを0で初期化したのがデフォルトです。
 
Renat:
構造体の 最初のメンバーを1、残りを0で初期化したのがデフォルトです。
了解です。リファレンスマニュアルに「初期化シーケンスには少なくとも1つの値が必要です。対応する構造体 または配列の最初の要素はこの値で初期化され、欠落した要素はゼロとみなされます」という説明がありました。
 
papaklass:

リーク弦残り1

MqlTradeRequest構造 体の初期化方法に起因していることがわかりました。

このように初期化すると

と表示され、 残り1個 リークされた文字列」と表示されません。

初期化をOpenPosition()関数からグローバルレベルに移すと、メモリレコードが表示されます。

メッセージありがとうございました。コンパイラのエラーは修正されました。