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

 

同志である開発者たちよ!

MT4では、選択したグラフィカルオブジェクトをクリックすると、イベント「CHARTEVENT_OBJECT_DRAG」が発生します。これは本当にエラーです。

mt5では、そのような問題はありません。

void OnChartEvent(const int id,
                  const long &lparam,
                  const double &dparam,
                  const string &sparam)
 {
  if(id==CHARTEVENT_OBJECT_DRAG)
    Print(id); // 2
 }
 
SuhanovDM94:

皆さん、こんにちは。愚問で申し訳ありません。ボタンのPressedプロパティを、左クリック時にはtrue、左クリック時にはfalseにする方法を教えてください。今は、押しても何も起こらないが、離すとPressedが逆の値に変わるという状況だ。

CButton::OnMouseUp と CButton::OnMouseDown のイベントハンドラをオーバーライドする必要があることは理解できたのですが、どこでそれをすればいいのかがわかりません。ヒントをお願いします。ありがとうございました。

どなたか同じテーマでお手伝いいただける方がいらっしゃいましたら、よろしくお願いします。

 
Baruban:

どなたか同じテーマでお手伝いいただける方がいらっしゃいましたら、よろしくお願いします。

マウスボタンが押されたときのみイベントが発生し、それ以外のときは

 
Vitaly Muzichenko:

マウスボタンが押されたときのみイベントが発生し、クリックされたときは発生しない

でも、クリックハンドラはありますよね?だから、クリックイベントがあるはずです。

 
SuhanovDM94:

でも、プレスハンドラーはいるんですよね?だから、プレスイベントもあるに違いない。

混乱しませんか? CHARTEVENT_CLICK イベント( チャート上でマウスをクリック する)が ありますが、クリックされて いません...

 
Alexey Viktorov:

混同してませんか? CHARTEVENT_CLICK イベントは、 チャート上でマウスがクリック されると発生します。

ありますね、その通りです。CButtonクラスには、OnMouseDown()とOnMouseUp()という2つの内部イベントハンドラがあることだけです。だから、もしかしたら、それに対応するイベントもあるんじゃないかと思ったんです。

 
SuhanovDM94:

はい、その通りです。CButtonクラスには、OnMouseDown()とOnMouseUp()という2つの内部イベントハンドラがあることだけです。だから、もしかしたら、それに対応するイベントもあるんじゃないかと思ったんです。

SBは見てませんが、どうやらOBJPROP_STATE==trueを押すものと、OBJPROP_STATE==falseを押すものがあるようです。それとも、私が間違っているのでしょうか。

 
皆さんこんにちは、助けてください。 最適化処理の最後にグラフが下がるのはなぜですか?
ファイル:
 
int i = func( 0, 1 );」行の「func」にマウスカーソルを合わせ、「Go to definition」オプションを選択すると、MT4とMT5の両方のエディタがクラッシュする(またはAlt+Gを押したとき)。

MQL4ビルド1910
MQL5 ビルド 1931

template<typename type>  
type func( type a, type b = 1 ){ return ( 0 ); }

int i = func( 0, 1 );

void OnStart(){ }  

ファイル:
altg.jpg  57 kb
 

トレーディング、自動売買システム、トレーディング戦略のテストに関するフォーラム

MQLはPythonのNone型と同等ですか?

ニコリシェン さん 2018.10.28 21:52

MQLにはない、とにかくもうない。実際にはデバッグ時のリファレンスの2倍遅く、普通にコンパイルしても同じに近いので、本当に問題ないです。ぜひお試しください。

#define  ITERATIONS 1000000

void OnStart()
{
   {
      ulong time = GetMicrosecondCount();
      ulong sum = 0;
      for(int i=0; i<ITERATIONS; i++){
         string r = string(rand());
         sum += by_ref(r);
      }
      time = GetMicrosecondCount() - time;
      printf("%s took %.3f milliseconds: sum=%dll", "by_ref", time/1000.0, sum);
   }{
      ulong time = GetMicrosecondCount();
      ulong sum = 0;
      for(int i=0; i<ITERATIONS; i++)
         sum += by_val(string(rand()));
      time = GetMicrosecondCount() - time;
      printf("%s took %.3f milliseconds: sum=%dll", "by_val", time/1000.0, sum);
   }
}
//+------------------------------------------------------------------+

int by_ref(string &var){ return int(var) % 100; }
int by_val(string  var){ return int(var) % 100; }

なぜ by_ref は by_val よりも遅いのですか?