初心者の方からの質問 MQL5 MT5 MetaTrader 5 - ページ 87

 
Silent:

もっと速いかもしれない...メモリの再配置でどうなるかわからないけれども。

Expert Advisor が使用するメモリ量とその再割り当て方法を確認する方法を教えてください。
 

それなのに、なぜレベルがObjectCreateで作成されないのか、その理由がわからないのです。すべての関数が動作しますが、OBJ_TRENDオブジェクトが 作成されません。

グローバルレベルで定義された変数があります。

文字列 oRes、oSup、oPP、oRes1、oRes2、oRes3、oSup1、oSup2、oSup3、textPP、textR1、textR2、textR3、textS1、textS2、textS3。

レベルを作成するためのコード。

void OnInit()
  {
   TimeOpenBar();
   ObjectCreate(0,oRes,OBJ_TREND,0,0,0,0,0);
   ObjectSetInteger(0,oRes,OBJPROP_COLOR,clrNavy);
   ObjectSetInteger(0,oRes,OBJPROP_STYLE,STYLE_SOLID);
   ObjectSetInteger(0,oRes,OBJPROP_WIDTH,2);
   ObjectSetInteger(0,oRes,OBJPROP_RAY,false);
   ObjectCreate(0,oSup,OBJ_TREND,0,0,0,0,0);
   ObjectSetInteger(0,oSup,OBJPROP_COLOR,clrNavy);
   ObjectSetInteger(0,oSup,OBJPROP_STYLE,STYLE_SOLID);
   ObjectSetInteger(0,oSup,OBJPROP_WIDTH,2);
   ObjectSetInteger(0,oSup,OBJPROP_RAY,false);
   CreateLevels();

   ObjectCreate(0,oPP,OBJ_TREND,0,0,0,0,0);
   ObjectSetInteger(0,oPP,OBJPROP_COLOR,clrDeepSkyBlue);
   ObjectSetInteger(0,oPP,OBJPROP_STYLE,STYLE_SOLID);
   ObjectSetInteger(0,oPP,OBJPROP_WIDTH,2);
   ObjectSetInteger(0,oPP,OBJPROP_RAY,false);
   ObjectCreate(0,oRes1,OBJ_TREND,0,0,0,0,0);
   ObjectSetInteger(0,oRes1,OBJPROP_COLOR,clrDeepSkyBlue);
   ObjectSetInteger(0,oRes1,OBJPROP_STYLE,STYLE_DASH);
   ObjectSetInteger(0,oRes1,OBJPROP_WIDTH,1);
   ObjectSetInteger(0,oRes1,OBJPROP_RAY,false);
   ObjectCreate(0,oSup1,OBJ_TREND,0,0,0,0,0);
   ObjectSetInteger(0,oSup1,OBJPROP_COLOR,clrDeepSkyBlue);
   ObjectSetInteger(0,oSup1,OBJPROP_STYLE,STYLE_DASH);
   ObjectSetInteger(0,oSup1,OBJPROP_WIDTH,1);
   ObjectSetInteger(0,oSup1,OBJPROP_RAY,false);
   PPlevel();
  }
皆さん、整理してください。お願い
Документация по MQL5: Стандартные константы, перечисления и структуры / Константы объектов / Типы объектов
Документация по MQL5: Стандартные константы, перечисления и структуры / Константы объектов / Типы объектов
  • www.mql5.com
Стандартные константы, перечисления и структуры / Константы объектов / Типы объектов - Документация по MQL5
 
fyords:
ObjectCreateの結果を表示します。もしかしたらエラーがあるかもしれません。
さて、どんなことが書いてあるのでしょうか?結果は印刷されましたか?
 
テクニカル分析に関する最高の(できるだけシンプルな)文献を見つける方法をアドバイスしてください。最初のうちは理解できそうなのですが、読み始めると脳が理解を拒否するんです :(
 
fyords:
では、どのようなことが書かれているのでしょうか。結果の出力はされましたか?
私の場合はうまくいかなかった、何か間違っていた。プリントは 何もくれなかった。
 
NeSezon:
テクニカル分析についてわかりやすい(なるべくシンプルな)文献を探す方法をアドバイスしてください。読み始めは理解できるのですが、細部を読み始めると脳が理解を拒否してしまいます :(
ナイマンの「トレーダー小事典」をお試しください。
 
WindSW:
私の場合はうまくいかなかった、何か間違っていた。プリントは何もくれなかった。
ResetLastError();
bool result=ObjectCreate(0,oRes,OBJ_TREND,0,0,0,0,0);
Print("result=",result," GetLastError()=",GetLastError());
やり方が悪かったのでしょう。
 
fyords:
それがいけなかったのでしょう。
そう、本当にそんなことはないんです。5040 -tainted parameter of string type"というエラーが発生します。私は、グローバルレベルで設定されたオブジェクトのパラメータ(コンパイラはそれがないと警告する)を、文字列oRes, oSup, oPP, oRes1; などの形で持っています。どのようにこれを修正し、どのように正しいパラメータ文字列を指定すれば、すべてがうまくいき、コンパイラが悪態をつかなくなるのでしょうか?
 
WindSW:
そう、本当にそんなことはないんです。5040 -tainted parameter of type string"というエラーが発生します。私は、グローバルレベルで定義されたオブジェクトのパラメータを持っています(コンパイラはそれがないと警告します)次のような文字列oRes、oSup、oPP、oRes1、など。どのようにこれを修正し、どのように正しいパラメータ文字列を指定すれば、すべてがうまくいき、コンパイラが悪態をつかなくなるのでしょうか?

さて、グローバルレベルで変数を宣言したとすると、その変数に値を代入していますか?

そうでない場合、プログラムに対して「このような特性を持つオブジェクトを、このような名前で作ってください」と言っても、名前が与えられないという問題があります。だから、創らないんです。

ObjectCreateの コードで直接指定した方が簡単ではないでしょうか?

ResetLastError();
bool result=ObjectCreate(0,"Name1",OBJ_TREND,0,0,0,0,0);
Print("result=",result," GetLastError()=",GetLastError());
 
WindSW:
ナイマンのリトルトレーダーズ・エンサイクロペディアを試す
ありがとうございました。見つけた。そのうち読んでみたいです。
理由: