私たちのファンページに参加してください
- ビュー:
- 1187
- 評価:
- パブリッシュ済み:
- 2016.02.25 13:33
- アップデート済み:
- 2016.11.22 07:34
-
このコードに基づいたロボットまたはインジケーターが必要なら、フリーランスでご注文ください フリーランスに移動
内容
このクラスは、価格チャート上に様々な状態でのインタラクティブボタンを作成するために設計されています。
これはによって企画されたTheXpert コンクールのために開発されました。ありがとうございました。
CBtn クラスのデモンストレーション
クラスメソッド
Create(long chart_id,int sub_wnd,string name,int x,int y,int dx,int dy) - ボタンをパラメータで作成する
- ウィンドウ識別子
- サブウィンドウ番号
- ボタン名
- X座標
- Y座標
- 横サイズ
- 縦サイズ
Resources(string img_up,string img_up_active="",string img_dn="",string img_dn_active="",string img_up_disable="",string img_dn_disable="",string img_mask="") - 異なるボタン状態に対応する画像を定義する
- 押されていない正常のボタン
- カーソルでホバーされたボタン
- 押されたボタン
- カーソルでホバーされながら押されたボタン
- 無効にされたボタン
- ボタンのアウトラインマスク
SetUseMask(ENUM_USEMASK mask,int x=0,int y=0) - 指定されたピクセルの色でマスクを設定する(マスクは、標準的な押されていない状態のボタン画像から形成される)
- 使用されたマスクのタイプ
- X座標
- Y座標
SetUseMask(ENUM_USEMASK mask,uint acolor) - 指定された色でマスクを設定する(マスクは、標準的な押されていない状態のボタン画像から形成される)
- 使用されたマスクのタイプ
- 色
SetCorner(ENUM_BASE_CORNER corner) - ボタンが固定されているチャートのコーナーを設定する
SetAnchor(ENUM_ANCHOR_POINT anchor) - アンカータイプを設定する
SetX(int x) - X座標を設定する
SetY(int y) - Y座標を設定する
SetXY(int x,int y) - XとY座標を設定するための単一のメソッド
On(bool state) - ボタンの状態(押されている状態の場合はtrue、押されていない状態の場合はfalse)を設定する
Enable(bool state) - ボタンを有効化/無効化する
Paint(void) - ボタンを描画する
Event(int id,long lparam,double dparam,string sparam) - ボタンにイベントを受け渡す
すべてのパラメータは OnChartEvent 関数から複製されます。
GetX(void) - X座標を取得する
GetY(void) - Y座標を取得する
GetEnable(void) - 有効/無効の状態を取得する
GetOn(void) - 押されている/押されていないの状態を取得する
GetCorner(void) - ボタンが固定されているチャートのコーナーを取得する
GetAnchor(void) - アンカータイプを取得する
AddText(int x,int y,string font_name,int font_size,color text_color,string text) - ボタンにテキストを追加する
- X座標
- Y座標
- フォント名
- フォントサイズ
- テキストの色
- テキスト
Text(string text) - ボタンテキストを更新する(AddText(...) の呼び出しなしでは動作しない)
ボタンの作成
ボタンにはデフォルトでは下記のパラメータがあります。
- 押されていない
- 有効にされている
- チャートの左上角に固定されている
- チャートの左上角に固定されている
ボタンマスクの設定
デフォルトで、ボタンは標準的な押されていない状態のボタン画像から形成されます。透明なピクセルは、マスクとして機能します。
- UseMask(MASK_STANDALONE_RESOURCE) - マスクは Resources() で指定されたマスクを使用します。画像が設定されていない場合、全体のボタン領域(長方形)が作業領域として使用されます。
- UseMask(MASK_PIXEL,x,y) - マスクは指定された画素の色を使用します。画素の色が指定された色と一致しない場合には、マスクとなります。座標が設定されていない場合は [0,0] 座標が使用されます。
- UseMask(MASK_COLOR,color) - 指定された色がマスクに使用されます。画素の色が指定された色と一致しない場合には、マスクとなります。色はARGBフォーマットで設定されるべきです。
例
//+------------------------------------------------------------------+ //| 3dButtons.mq5 | //| Copyright 2015, fyords | //| https://login.mql5.com/ru/users/fyords | //+------------------------------------------------------------------+ #property copyright "Copyright 2015, fyords" #property link "https://www.mql5.com/en/users/fyords" #property version "1.01" //+------------------------------------------------------------------+ //| リソースを挿入する | //+------------------------------------------------------------------+ #resource "img\\200_1.bmp" #resource "img\\200_2.bmp" #resource "img\\200_3.bmp" #resource "img\\200_4.bmp" #resource "img\\200_5.bmp" #resource "img\\200_6.bmp" //+------------------------------------------------------------------+ #include "Class.mqh" //+------------------------------------------------------------------+ enum Adjust { UpperLeft, UpperRight, LowerLeft, LowerRight }; //+------------------------------------------------------------------+ //| 入力プロパティ | //+------------------------------------------------------------------+ input Adjust adj_corner=UpperLeft; //コーナー //+------------------------------------------------------------------+ //| グローバル変数 | //+------------------------------------------------------------------+ CBtn *btn[]; int num_buttons; //+------------------------------------------------------------------+ //| 初期化関数 | //+------------------------------------------------------------------+ int OnInit() { long wnd=ChartID(); int sub_wnd=ChartWindowOnDropped(); ArrayFree(btn); int n=0; num_buttons=0; for(int y=0;y<3;y++) { for(int x=0;x<3;x++) { ArrayResize(btn,n+1); btn[n]=new CBtn; btn[n].Create(wnd,sub_wnd,"3dButtons_"+(string)MathRand(),x*152+10,y*152+10,200,200); btn[n].Resources("img\\200_1.bmp","img\\200_2.bmp","img\\200_3.bmp","img\\200_4.bmp","img\\200_5.bmp","img\\200_6.bmp"); btn[n].AddText(80,80,"Arial",25,clrWhite,"Button"+(string)(n+1)); switch(adj_corner) { case UpperLeft: btn[n].SetAnchor(ANCHOR_LEFT_UPPER); btn[n].SetCorner(CORNER_LEFT_UPPER); break; case UpperRight: btn[n].SetAnchor(ANCHOR_RIGHT_UPPER); btn[n].SetCorner(CORNER_RIGHT_UPPER); break; case LowerLeft: btn[n].SetAnchor(ANCHOR_LEFT_LOWER); btn[n].SetCorner(CORNER_LEFT_LOWER); break; case LowerRight: btn[n].SetAnchor(ANCHOR_RIGHT_LOWER); btn[n].SetCorner(CORNER_RIGHT_LOWER); break; } btn[n].Paint(); n++; } } ChartRedraw(); num_buttons=ArraySize(btn); return(INIT_SUCCEEDED); } //+------------------------------------------------------------------+ //| 初期化解除関数 | //+------------------------------------------------------------------+ void OnDeinit(const int reason) { for(int i=0;i<num_buttons;i++) delete btn[i]; ArrayFree(btn); } //+------------------------------------------------------------------+ //| ChartEvent 関数 | //+------------------------------------------------------------------+ void OnChartEvent(const int id, const long &lparam, const double &dparam, const string &sparam) { for(int i=0;i<num_buttons;i++) btn[i].Event(id,lparam,dparam,sparam); }
MetaQuotes Ltdによってロシア語から翻訳されました。
元のコード: https://www.mql5.com/ru/code/12637

このインディケータは、現在のスプレッドと同時にバー(ローソク足)を閉じるまでの時間を表示します。

AFL_Winner_Signal インディケータは AFL_Winner インディケータに基づいてトレンドの方向とシグナルを表示します。

透明ボタンのクラス

Expert Advisor は口座の全体的な損失、およびすべての取引の損失を制御して制限します。それは口座のトレーリングストップを含みます。