MQL4、MQL5に関する初心者からの質問、アルゴリズムやコードに関するヘルプ、ディスカッションなど。 - ページ 147

 
-Aleks-:

i>0の値でVesMass配列を計算するとゼロになるのが理解できないのですが?

4と5ではなく、4.0と5.0と書くべきということが判明したのですが、どういう理屈なのか、私にはよくわかりません...。
 
-Aleks-:

4と5ではなく、4.0と5.0と書くべきということが判明したのですが、どういう理屈なのか、私にはよくわかりません...。
ドキュメントを読めば、明らかになるはずです。自分でやったのはいいことだ。
 
Alexey Viktorov:
ドキュメントを読めば、明らかになるはずです。自分でやったのはいいことだ。

そうそう、以前こんなことが書いてあったよ~ということで、やってみようと思ったのですが、どこがどう理屈になっているのか不明で...。で、ちなみにドキュメントには答えが見つかりませんでした。
 
-Aleks-:

以前、こんなことが書いてあったな~と思い、やってみようと思ったのですが、どこがどう理屈なのかよくわからない......。ちなみにドキュメントにも答えは見つかりませんでした。


これはMCLに限らず、C++や他のプログラミング言語でも同じで、2つの整数やint型の変数を割り算すると、結果が整数に切り捨てられるという特徴があります。あなたの場合、4/5=0です。

4.0/5や(double)4/5と書けば、結果は実数になる。
 
Vitalie Postolache:


これはICLだけの特徴ではなく、C++などのプログラミング言語でも同じで、2つの整数や型(int)の変数を割ると、結果が整数に切り詰められる。あなたの場合、4/5=0です。

4.0/5や(double)4/5と書けば、結果は実数になる。

それはわかるのですが、その解決策、つまり必要性の論理がわからないのです。

 
-Aleks-:

それはわかるのですが、その解決策、つまり必要性の論理がわからないのです。


では、「算数でなぜ2*2=4なのか、解の論理は何か」という議論はしないのですか?それを公理として捉えて使っているだけなんですね。2つの整数の割り算でもそうだ。
 
Vitalie Postolache:

では、「算数でなぜ2*2=4なのか、その解の論理は何か」という議論はしないのですか?それを公理として捉えて使っているだけなんですね。2つの整数を割り算するのと同じです。

追加で確認します・・・。

 


コト


線は、トレンドラインです。そのプロパティをレイに変更しました。役に立たなかった。ゼロバーの位置(上、下)に関係なく、価格を出力させたい場合。

このコードもうまくいきません。

int start() {

double pr=ObjectGetValueByShift("line",0)。

If (Bid==pr){。

アラート(pr);}。

return(0);}。


回線名のスペルは正しいか?

このスクリプトを試してみて、ログに書かれている内容を示してください。

void OnStart()
  {
     double pr;
     int obj_total=ObjectsTotal(); 
     string name;
     int i; 
     
   for(i=0;i<obj_total;i++) 
     { 
      name=ObjectName(i); 
      if(ObjectType(name)!=OBJ_TREND) continue; 
      PrintFormat("Объект %d:     Имя объекта - %s",i,name); 
      pr=ObjectGetValueByShift(name,0);
      PrintFormat("Объект %d:     Цена - %.5f",i,pr);
      
     }  

}

スクリプトはオブジェクトを検出し、名前を正しく書き込みます。でも、値段は絶対に左利きです。写真に横線で 表示されています。バーがラインを越えたかどうかに関係なく、これらの価格が表示されます。

ファイル:
23.png  62 kb
 
Kot:


線がトレンドになっている。プロパティをビームに変更しました。役に立たなかった。価格はゼロバーの位置(上、下)に関係なく表示されることが理想的です。

このコードもうまくいきません。

int start() {

double pr=ObjectGetValueByShift("line",0)。

If(Bid==pr){。

アラート(pr);}。

return(0);}。

ビッドは簡単にラインをジャンプさせることができ、各ポイントで停止する義務はない(つまり、正確な等号を得ることはできない)。

例えば、if ((MathMin(Close[1],Open[0])<=pr && Bid>=pr) || (MathMax(Close[1],Open[0])>=pr && Bid<=pr)) などに条件を変更するとか・・・。

 
Maxim Kuznetsov:

ビッドは簡単にラインを飛び越えることができ、すべてのポイントで停止する義務はありません(つまり、正確な等価は起こりません)。

例えば、if ((MathMin(Close[1],Open[0])<=pr && Bid>=pr) || (MathMax(Close[1],Open[0])>=pr && Bid<=pr)) などに条件を変更するとか・・・。


ありがとうございます!アイデアが浮かびました。

状況が違えばどうでしょう。チャート上に異なる名称の水平線が あります。どのラインがどの価格に対応するかを計算するスクリプトが必要です。