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

 
Mihail Matkovskij #:

しかもマジでChartRedrawが1秒間に24回以上呼ばれてる...。

そしてObjectCreate! 恐るべし・・・。(追加)

ChartRedrawは問題ありません。ただし、ボタンが押されていない状態で行を作成すると、OBjectCreatorがロードされる可能性があります。

UPD
そうなんです...。

UPD
そんなことはないけれども、

Print(ObjectCreate(0,"H Line",OBJ_HLINE,window,dt,price));
...
2021.12.03 23:15:50.987    USDCHF,M1: false
2021.12.03 23:15:50.977    USDCHF,M1: false
2021.12.03 23:15:50.977    USDCHF,M1: false
2021.12.03 23:15:50.967    USDCHF,M1: false
2021.12.03 23:15:50.957    USDCHF,M1: false
2021.12.03 23:15:50.957    USDCHF,M1: false
2021.12.03 23:15:50.927    USDCHF,M1: false
2021.12.03 23:15:50.907    USDCHF,M1: false
2021.12.03 23:15:50.887    USDCHF,M1: false
2021.12.03 23:15:50.887    USDCHF,M1: false
2021.12.03 23:15:50.467    USDCHF,M1: false
2021.12.03 23:15:50.417    USDCHF,M1: false
2021.12.03 23:15:50.417    USDCHF,M1: false
2021.12.03 23:15:50.417    USDCHF,M1: true
 
Nerd Trader #:
ChartRedrawは問題ないです。しかし、ObjestCreateは、ボタンを離すまで行が作成されていると、ロードされている可能性があります。

はい、起動時に作成し、アプリケーションのシャットダウン時に削除してください。そして、ObjectSetInteger関数とObjectSetDouble 関数を使って移動させる。 なんてわかりにくいんだろう・・・。

 
Mihail Matkovskij #:

はい、起動時に作成し、アプリケーションのシャットダウン時に削除してください。そして、ObjectSetInteger関数とObjectSetDouble 関数を使って移動させる。 なんてわかりにくいんだろう・・・。

ボタンを押した後に作成し、離した後に削除する必要があることを理解するのは難しいです。
 
Nerd Trader #:

UPD
そうなんです...。

UPD
そんなことはないけれども、

いずれにせよ、そんなプログラマーにはCPUが吹き飛んでしまう...。:)

 
Nerd Trader #:
ボタンが押されたときに作成し、ボタンが離されたときに削除すればよいというのは、理解しがたいことです。

チャートから非表示にしてから表示することができます。 オブジェクトを正しく非表示にしてから表示する方法については、フォーラムに書かれています。または、CHARTEVENT_OBJECT_CLICKを追跡する - 完璧なソリューションです。

 
Mihail Matkovskij #:

いずれにせよ、そんなプログラマーにはCPUが吹き飛んでしまう...。:)

温度計に注目しています。

Mihail Matkovskij(ミハイル・マトコフスキー #:

チャートから非表示にしてから表示することができます。 オブジェクトを正しく非表示にして表示する方法については、フォーラムに書かれていました。

いや...正しい方法で解明する。

 
Nerd Trader #:

温度計に注目しています。

いや...今すぐにでも作りたいんです。

前回のメッセージに追記しました。

 
if(id==CHARTEVENT_OBJECT_CLICK){
    if(sparam=="button_bs")
      (ObjectCreate(0,"H Line",OBJ_HLINE,0,0,0));
  }

  if(ObjectGetInteger(0,"button_bs",OBJPROP_STATE)){
    int      x     =(int)lparam;
    int      y     =(int)dparam;
    datetime dt    =0;
    double   price =0;
    int      window=0;

    if(ChartXYToTimePrice(0,x,y,window,dt,price)){
      if(id == CHARTEVENT_MOUSE_MOVE){
        if(ObjectMove(0,"H Line",window,dt,price))
          ChartRedraw(0);
      }
    }
  }else ObjectDelete(0,"H Line");

すべてが見事にシンプルです。

 
Nerd Trader #:

華麗なものはすべてシンプルです。

まあ、どこかで...。:)

 
Mihail Matkovskij #:

前の記事を完成させました。

めにみえない