インディケータ: Flame

 

Flame:

この指標は、独立した更新速度で半透明なグラデーションを持つ領域を描画する方法を示しています。

 

作者: MetaQuotes

 

OnDeinitのChartRedraw(ExtChartID) に関しての小さな希望と同様に、いくつかの疑問が生じました。

  double g=0,b=0,dg=1.5,db=0.63;
//---
   for(uint a,i=0;i<256;i++)
     {
      //--- 最初の32個の炎の値は完全に透明である。
      a=uchar(i<32?0:i-32);
      //--- 炎の値iに対応する色を形成する。
      ExtPal[i]=(a<<24)|(uint(255)<<16)|(uint(g+0.5)<<8)|uint(b+0.5);
      //--- カラーコンポーネントのインクリメント
      //--- 赤は透明度が高いため、グレーディングされている。
      if(i>80)  g+=dg;
      if(i>160) b+=db;
     }

1) 長い間、色がどのように収集されるのか理解できませんでした(ビット演算が何なのかわかりませんでしたし、ヘルプのどこにもそのような色取得のフォーマットが記述されて いません:

Тип color предназначен для хранения информации о цвете и занимает в памяти 4 байта. Первый байт не учитывается, остальные 3 байта содержат RGB-составляющие.

1バイト目が透明度を担当 し、それが考慮される ( (a<<24)) というのは正しいのでしょうか?

2) TFを切り替えたとき、炎がウィンドウ幅の中央から再点火されるのはなぜか(中央からでないこともある)?

3) 異なる通貨ペアのインジケーターを複数つけると、お互いの動作が干渉しあうのはなぜか(常に点滅している)?また、同じ通貨で異なるTFの場合、ほとんど全く起こりません。

4) イベント生成コードと 生成された イベントの int id の相関関係はどこで確認できますか?

EventChartCustom(ExtChartID,1302,0,0,NULL);
void OnChartEvent(const int id,const long &lp,const double &dp,const string &sp) // id=2302
 

ALXIMIKS: 

4) イベント生成コードと 生成された イベントの int id の相関関係はどこで見ることができますか?

OnChartEvent const int id は、(int) CHARTEVENT_CUSTOMEventChartCustom のカスタム・イベント識別子の合計として 取得さ れます:

int id = (int) CHARTEVENT_CUSTOM + 1302;
// (int) CHARTEVENT_CUSTOM = 1000;
以下の リンクで例を確認してください。
 

一般的な意味でのカラーは、グラフィカル・オブジェクトで使用する場合、透明バイトを考慮しない。

しかし、キャンバスを使用する場合は、特別な透明度フラグとともに使用できる。