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

 

私は "犬が埋葬されている場所 "を理解していない、コードは動作し、すべてがOKですが、コンパイラの警告は、型変換Indi.mqh 125 45によるデータの損失の可能性は、私は疑問に思っています。


//+------------------------------------------------------------------+
//|Получение значений позиций в средe BB цены AppPrice,Fast/Slow TEMA|
//+------------------------------------------------------------------+

void CIndi::SetPricePositions(ushort SymbolPosition,ushort Index,uchar AppPrice)
  {
   int handle=GetHandle(SymbolPosition,BANDS);
   double Upper =Upper_Band(handle,Index);
   double Base  =Base_Band(handle,Index);
   double Lower =Lower_Band(handle,Index);
   double FTema =GetValuesFromIndi(GetHandle(SymbolPosition,TEMA_FAST),0,Index);
   double STema =GetValuesFromIndi(GetHandle(SymbolPosition,TEMA_SLOW),0,Index);
   
   Bollinger[SymbolPosition][PRICE_POSITION]=(double)GetPricePos(handle,Index,AppPrice); ???
   Bollinger[SymbolPosition][FAST_POSITION] =(double)Custom.Position(Lower,Upper,FTema); ???
   Bollinger[SymbolPosition][SLOW_POSITION] =(double)Custom.Position(Lower,Upper,STema); ???
   Bollinger[SymbolPosition][UPPER]         =(double)Upper; ???
   Bollinger[SymbolPosition][BASE]          =(double)Base;  ???
   Bollinger[SymbolPosition][LOWER]         =(double)Lower; ???
  }
Документация по MQL5: Стандартные константы, перечисления и структуры / Коды ошибок и предупреждений / Предупреждения компилятора
Документация по MQL5: Стандартные константы, перечисления и структуры / Коды ошибок и предупреждений / Предупреждения компилятора
  • www.mql5.com
Стандартные константы, перечисления и структуры / Коды ошибок и предупреждений / Предупреждения компилятора - Документация по MQL5
 

開発者の皆様へ。

私が理解する限り、スワップ問題は解決されたのでしょうか?というか、それならなぜサービススクから話題が消えたのかが不明......。

 

EAをテスト する場合

void OnTick(){
   Print(iTest());
}
//+------------------------------------------------------------------+
int iTest(){
   double i;
   int j;
   for(int x=3; x>0; x--) { 
      i=i+0.00001;
   }//Next x
   j=int(i/_Point);
   return(j);
}//iTest()

ログを見ると、常に増え続けていますこんなんでいいのか?

MQL4では、次のように書かれているはずです。

static double i;

 
EvgeTrofi:

EAをテストする場合

ログを見ると、常に増え続けていますこんなんでいいのか?

そうです、そうあるべきなんです。

ローカル変数 i を初期化しなかったため、その後の呼び出しで、以前の呼び出しと同じスタック上の場所に割り当てられています。

Документация по MQL5: Основы языка / Переменные / Локальные переменные
Документация по MQL5: Основы языка / Переменные / Локальные переменные
  • www.mql5.com
Основы языка / Переменные / Локальные переменные - Документация по MQL5
 
Renat:

そう、そういうものなんです。

ローカル変数 i を初期化していません。この変数は、次の呼び出しのときにも、前の呼び出しのときと同じスタックの同じ場所に確保されます。

どのような場合にスタティックメモリクラスを 使用するべきか?

ヘルプの「staticと 宣言されたローカル変数は、プログラム実行の最初から存在しているにもかかわらず、ブロックのスコープを持つ」という理解しがたい文章について、説明をお願い します。このフレーズには、構文的または文法的な間違いがあるようです :)

ヘルプにある例に注意してください:https://www.mql5.com/ru/docs/basis/variables/static

コードからwordstaticを 削除しても、何も変わりません。

int Counter()
  {
   int count;
   count++;
   if(count%100==0) Print("Функция Counter была вызвана уже ",count," раз");
   return count;
  }
void OnStart()
  {
//---
   int c=345;
   for(int i=0;i<1000;i++)
     {
      int c=Counter();
     }
   Print("c = ",c);
  }

質問:静電容量が なくても同じなら、なぜ静電容量 が全く必要ないのですか?

Документация по MQL5: Основы языка / Переменные / Статические переменные
Документация по MQL5: Основы языка / Переменные / Статические переменные
  • www.mql5.com
Основы языка / Переменные / Статические переменные - Документация по MQL5
 
ALozovoy:
こんにちは。テスター]の説明でExpertParametersパラメータが抜けています。詳しくはヘルプをご覧ください。

ありがとうございます、うまくいっています。

 


教えてください、そもそもブロック内で変数を宣言する機能を追加した目的は何だったのでしょうか?前回はこのようなケースでした。

  
int c;    for(int i=0;i<1000;i++)      {        int  c=Counter(); }

以前は、ダイレクトが2回宣言されているというボックスがポップアップ表示され、別の変数名を考えるか、同じものをint なしで使用しなければならないことが明らかでした。しかし、今は混乱するかもしれません。C++でも同じなのでしょうか?

(MQLを学ぶ前はVisual Basicでプログラミングをしていました。そこには、そのような混乱はなかった)。

 
EvgeTrofi:

では、どのような場合にスタティック・ メモリ・クラスを使用すればよいのでしょうか?


いいえ。

変数int i; を作成した場合、なぜ初期化しなかったのでしょうか?実際、あなた自身も「この変数の中身はどうでもいい」と言いながら、結局はゴミを入れたままでしたよね。

正しくは、int i=0 です。

C++でもそうなんですか?

そうです、ブロックの中にそのような変数を作ることができます。
 

Windows 7 64bitでターミナルの306 Bildで問題が発生しました(Windows 7 32bitはすべて正常に動作します)。

ファイル:
mql64.png  52 kb
 
VanHelsing:

Windows 7 64bitでターミナルの306 Bildで問題が発生しました(Windows 7 32bitはすべて正常に動作します)。

このような状況が発生するコードの一部をservicedeskに投稿してください。