ライブラリ: イージーキャンバス - ページ 17

 
Nikolai Semko #:
最新バージョン1.53

ニコラス、リブをダウンロードしたよ!そして、kodobaseのZIPには古いバージョン1.09のままです!!!!コメントを読んで直接ダウンロードしてよかった。私があなただったら、間違いなくMT5、mql5、mql5.com スレッドの改善提案に この未解決のバグについて投稿します!

MT5, mql5, mql5.com предложения по улучшению. - Сделайте реалистичные предложения по улучшению платформы MT5, языка mql5 и сайта и услуг Mql5 Com.
MT5, mql5, mql5.com предложения по улучшению. - Сделайте реалистичные предложения по улучшению платформы MT5, языка mql5 и сайта и услуг Mql5 Com.
  • 2013.06.15
  • www.mql5.com
удерживая клавишу CTRL при перетаскивании точки привязки. Модифицировать OnChartEvent для обработки нажатия на кнопку. Всплывающее окно появляется автоматически после третьего символа или вы можете вызвать его с помощью CTRL SPACE
 
Alexey Volchanskiy #:

ニコラス、リブをダウンロードしたよ!そして、kodobaseのZIPにはまだ古いバージョン1.09がある!!!!コメントを読んで直接ダウンロードしてよかった。私があなただったら、間違いなくMT5、mql5、mql5.com スレッドの改善提案に この未解決のバグについて投稿するでしょう!

ありがとうアレクセイ!
私はすでに 4年以上前に書いた

 
ニコラス、現在使用されているOBJ_RECTANGLE タイプのオブジェクトを置き換えるために、キャンドルにバインドされた動的に変化する "長方形 "を描画するために、あなたのライブラリを使用することは可能ですか?
おそらく、そのような使用例があるのではないでしょうか?
 
Peter Vorobyev OBJ_RECTANGLE オブジェクトを置き換えるために、キャンドルにバインドされた動的に変化する "矩形 "を描画するために、あなたのライブラリを使用することは可能ですか? おそらく、そのような使用例があるのではないでしょうか?


矩形がそれほど多くなく(~<1000)、頻繁にサイズを変更する必要がない場合は、標準の CCanvas を使用できます。この場合、それぞれの矩形は価格と時間の座標に結びついた別のキャンバスになります。オブジェクトが無秩序に増殖しないように、「自分の後始末」をする必要がある。
オブジェクトがたくさんあって、それらが頻繁にプロパティを変更する場合は、このライブラリを使う方が簡単だ。
この場合、必要なプロパティを持つ仮想的な長方形である構造体の配列を作成し、チャートの変更イベントやプロパティの変更イベントが発生したときに、それらを可視チャート上に表示します。
これは最も生産的な変形であり、ここでのカンヴァス(ビットマップ)のオブジェクトは、画面全体に引き伸ばされた1つになります。しかし、この変形では、垂直方向と水平方向のスクロール中に、チャートからグラフィカル・オブジェクトがわずかに遅れます。


同じライブラリTest_iCanvas.mq5 を参考にするとよいでしょう。この例では、テキストがバーにバインドされた半透明の長方形があります。半透明の矩形が重なったときに色が混ざるようにしたい場合は、そのような矩形用の関数が必要になります。iCanvas LineDA クラスの関数LineHorizontalA を使えば、すぐにできます。

ZY Test_iCanvas.mq5というサンプルはあまり適切ではありません。この例を書き直す必要がある。
。では、ここと ここの 例をもっと見てください。しかし、これらの例では、時間あたりの価格へのバインディングはありません。そのためには、X関数と Y関数を 使用して、価格-時間座標をXY座標に変換する必要があります。
 
通常のグラフィカル・オブジェクトのように、指定したプロパティを持つ矩形を描画(作成/移動/変更)できる矩形オブジェクトをライブラリに実装する予定はありますか?
 
Peter Vorobyev 矩形を描画(作成/移動/変更)できる矩形オブジェクトをライブラリに実装する予定ですか?

おっしゃっている意味がよくわかりません。

矩形を描画するためのさまざまな関数があります。作成、移動、変更だけで十分です。

たしかに、サードパーティのコードで任意のオブジェクトを構造体やクラスとして作成し、その中に iCanvas や CCanvas というクラスを使って画面に出力するメソッドを記述することはできますが、グラフィック・ライブラリの中に可能な実装のバリエーションをすべて作る意味はありません。プリミティブだけが重要なのだ。もちろん、私にもこのライブラリの拡張機能がある。これはこのライブラリの何倍も大きいが、私以外には誰も理解できないだろう。自分のために書いたのだから。

 
Nikolai Semko #:

おっしゃっている意味がよくわかりません。

矩形を描くためのさまざまな機能がある。作成、移動、修正だけで十分です。

たしかに、サードパーティのコードで任意のオブジェクトを構造体やクラスとして作成し、その中にiCanvasやCCanvasというクラスを使って画面に出力するメソッドを書くことはできるが、グラフィック・ライブラリの中にありとあらゆる実装のバリエーションを作る意味はない。プリミティブだけが重要なのだ。もちろん、私にもこのライブラリの拡張機能がある。これはこのライブラリの何倍も大きいが、私以外には誰も理解できないだろう。自分のために書いたのだから。

このライブラリーをもっと詳しく知ってから、具体的な質問があれば、その時に聞きます。

 
Peter Vorobyev #:

ありがとうございます、よくわかりました。

ここに適切な EA の例があります:

#include <Canvas\iCanvas_CB.mqh> //https://www.mql5.com/ja/code/22164

//+------------------------------------------------------------------+
int OnInit() {
   return(INIT_SUCCEEDED);
}
//+------------------------------------------------------------------+
void OnDeinit(const int reason) {}
//+------------------------------------------------------------------+
void OnTick() {
   Draw();
}
//+------------------------------------------------------------------+
void OnChartEvent(const int id,
                  const long &lparam,
                  const double &dparam,
                  const string &sparam) {
   if (id == CHARTEVENT_CHART_CHANGE || id == CHARTEVENT_MOUSE_MOVE) Draw();
}
//+------------------------------------------------------------------+
void Draw() {
   static uint last = 0;         //
   uint cur = GetTickCount();    // パフォーマンス最適化のために必要
   if (cur-last<25) return;      // テスターにとって特に重要
   last = cur;                   //
   if (Canvas.tester) ChartChanged();   // テスターで正しく動作するように。
   Canvas.Erase(0x00FFFFFF);   // 正しいフォントを出力するためには、このようなマスクが必要です。
   Canvas.CurentFont("Calibri Light", 16,16,0xFF000000);
   for (int shift = -1000; shift<=1000; shift+=50 ) {
      uint clr = (Canvas.Grad((shift+1000.0)/2000.0) & 0x00FFFFFF)|0x40000000;
      int bar = Round(Canvas.Bar(double(_MouseX+shift)));
      double price  = iHigh(_Symbol,PERIOD_CURRENT,bar);
      int x = int(Canvas.X(double(bar)));
      int y = (int)_Y(price);
      Canvas.FillRectangleA(x,y,x+150,y-60,clr);
      
      _CommXY(x+5,y-55,"high = "+DoubleToString(price,_Digits));
      _Comment("bar = "+(string)bar);
      _Comment("time = " + TimeToString(iTime(_Symbol,PERIOD_CURRENT,bar))); 
   }
   Canvas.Update();
}


動作には iCanvas バージョン 1.54 が必要です。

ファイル:
 
Nikolai Semko #:

動作にはiCanvasバージョン1.54が必要です。

Nikolai Semko#:
最新バージョン 1.53

私も興味があります。

 
Edgar Akhmadeev #:

私も同じことを考えていた。

すでに更新され、前の記事に添付されている