//+------------------------------------------------------------------+ //| Create the button | //+------------------------------------------------------------------+ bool ButtonCreate(constlong chart_ID=0, // chart's ID conststring name="Button", // button name constint sub_window=0, // subwindow index constint x=0, // X coordinate constint y=0, // Y coordinate constint width=50, // button width constint height=18, // button height constENUM_BASE_CORNER corner=CORNER_LEFT_UPPER, // chart corner for anchoring conststring text="Button", // text conststring font="Arial", // font constint font_size=10, // font size constcolor clr=clrBlack, // text color constcolor back_clr=C'236,233,216', // background color constcolor border_clr=clrNONE, // border color constbool state=false, // pressed/released constbool back=false, // in the background constbool selection=false, // highlight to move constbool hidden=true, // hidden in the object list constlong z_order=0) // priority for mouse click { //--- reset the error value ResetLastError(); //--- create the button if(!ObjectCreate(chart_ID,name,OBJ_BUTTON,sub_window,0,0)) { Print(__FUNCTION__, ": failed to create the button! Error code = ",GetLastError()); return(false); } //--- set button coordinates ObjectSetInteger(chart_ID,name,OBJPROP_XDISTANCE,x); ObjectSetInteger(chart_ID,name,OBJPROP_YDISTANCE,y); //--- set button size ObjectSetInteger(chart_ID,name,OBJPROP_XSIZE,width); ObjectSetInteger(chart_ID,name,OBJPROP_YSIZE,height); //--- set the chart's corner, relative to which point coordinates are defined ObjectSetInteger(chart_ID,name,OBJPROP_CORNER,corner); //--- set the text ObjectSetString(chart_ID,name,OBJPROP_TEXT,text); //--- set text font ObjectSetString(chart_ID,name,OBJPROP_FONT,font); //--- set font size ObjectSetInteger(chart_ID,name,OBJPROP_FONTSIZE,font_size); //--- set text color ObjectSetInteger(chart_ID,name,OBJPROP_COLOR,clr); //--- set background color ObjectSetInteger(chart_ID,name,OBJPROP_BGCOLOR,back_clr); //--- set border color ObjectSetInteger(chart_ID,name,OBJPROP_BORDER_COLOR,border_clr); //--- display in the foreground (false) or background (true) ObjectSetInteger(chart_ID,name,OBJPROP_BACK,back); //--- set button state ObjectSetInteger(chart_ID,name,OBJPROP_STATE,state); //--- enable (true) or disable (false) the mode of moving the button by mouse ObjectSetInteger(chart_ID,name,OBJPROP_SELECTABLE,selection); ObjectSetInteger(chart_ID,name,OBJPROP_SELECTED,selection); //--- hide (true) or display (false) graphical object name in the object list ObjectSetInteger(chart_ID,name,OBJPROP_HIDDEN,hidden); //--- set the priority for receiving the event of a mouse click in the chart ObjectSetInteger(chart_ID,name,OBJPROP_ZORDER,z_order); //--- successful execution return(true); } //+------------------------------------------------------------------+
Standard Constants, Enumerations and Structures / Objects Constants / Object Types / OBJ_BITMAP - Reference on algorithmic/automated trading language for MetaTrader 5
私はロットリセットボタンを 作ろうとしていますが、私はこれよりはるかに良い結果を 得る必要があります、しかし、私はそうすることはできません。
( 私のea'sとindicatorsのButtonオブジェクトは、すべてこのような非常に醜いので好きではありません。)
私は2つのことが必要なのですが、皆さんは私を助け、良いアドバイスをしてくれますか?
私は多くの時間を費やしたが、私は私のコードの問題が何であるかを理解することはできません。
ありがとうございました。
//--- 2度目の編集 - このコメントを書いている間、私は居眠りをしていたかもしれません。
ObjectSetString ( 0, "button lot reset", OBJPROP_TEXT , "x" );
ObjectSetString ( 0, "button lot reset", OBJPROP_FONT , "Verdana" );
ObjectSetInteger ( 0, "button lot reset", OBJPROP_FONTSIZE , 14 );
ObjectSetInteger ( 0, "button lot reset", OBJPROP_XDISTANCE , 16 );
ObjectSetInteger ( 0, "button lot reset", OBJPROP_YDISTANCE , 16 );
ObjectSetInteger ( 0, "button lot reset", OBJPROP_XSIZE , 18 );
ObjectSetInteger ( 0, "button lot reset", OBJPROP_YSIZE , 18 );
ObjectSetInteger ( 0, "button lot reset", OBJPROP_CORNER , CORNER_LEFT_UPPER );
ObjectSetInteger ( 0, "button lot reset", OBJPROP_COLOR , White );
ObjectSetInteger ( 0, "button lot reset", OBJPROP_BGCOLOR , Black );
ObjectSetInteger ( 0, "button lot reset", OBJPROP_BORDER_COLOR , Black );
ObjectSetInteger ( 0, "button lot reset", OBJPROP_STATE , false );
ObjectSetInteger ( 0, "button lot reset", OBJPROP_BACK , false );
ObjectSetInteger ( 0, "button lot reset", OBJPROP_SELECTABLE , false );
ObjectSetInteger ( 0, "button lot reset", OBJPROP_SELECTED , false );
ObjectSetInteger ( 0, "button lot reset", OBJPROP_HIDDEN , true );
ObjectSetInteger ( 0, "button lot reset", OBJPROP_ZORDER , true );
//| Create the button |
//+------------------------------------------------------------------+
bool ButtonCreate(const long chart_ID=0, // chart's ID
const string name="Button", // button name
const int sub_window=0, // subwindow index
const int x=0, // X coordinate
const int y=0, // Y coordinate
const int width=50, // button width
const int height=18, // button height
const ENUM_BASE_CORNER corner=CORNER_LEFT_UPPER, // chart corner for anchoring
const string text="Button", // text
const string font="Arial", // font
const int font_size=10, // font size
const color clr=clrBlack, // text color
const color back_clr=C'236,233,216', // background color
const color border_clr=clrNONE, // border color
const bool state=false, // pressed/released
const bool back=false, // in the background
const bool selection=false, // highlight to move
const bool hidden=true, // hidden in the object list
const long z_order=0) // priority for mouse click
{
//--- reset the error value
ResetLastError();
//--- create the button
if(!ObjectCreate(chart_ID,name,OBJ_BUTTON,sub_window,0,0))
{
Print(__FUNCTION__,
": failed to create the button! Error code = ",GetLastError());
return(false);
}
//--- set button coordinates
ObjectSetInteger(chart_ID,name,OBJPROP_XDISTANCE,x);
ObjectSetInteger(chart_ID,name,OBJPROP_YDISTANCE,y);
//--- set button size
ObjectSetInteger(chart_ID,name,OBJPROP_XSIZE,width);
ObjectSetInteger(chart_ID,name,OBJPROP_YSIZE,height);
//--- set the chart's corner, relative to which point coordinates are defined
ObjectSetInteger(chart_ID,name,OBJPROP_CORNER,corner);
//--- set the text
ObjectSetString(chart_ID,name,OBJPROP_TEXT,text);
//--- set text font
ObjectSetString(chart_ID,name,OBJPROP_FONT,font);
//--- set font size
ObjectSetInteger(chart_ID,name,OBJPROP_FONTSIZE,font_size);
//--- set text color
ObjectSetInteger(chart_ID,name,OBJPROP_COLOR,clr);
//--- set background color
ObjectSetInteger(chart_ID,name,OBJPROP_BGCOLOR,back_clr);
//--- set border color
ObjectSetInteger(chart_ID,name,OBJPROP_BORDER_COLOR,border_clr);
//--- display in the foreground (false) or background (true)
ObjectSetInteger(chart_ID,name,OBJPROP_BACK,back);
//--- set button state
ObjectSetInteger(chart_ID,name,OBJPROP_STATE,state);
//--- enable (true) or disable (false) the mode of moving the button by mouse
ObjectSetInteger(chart_ID,name,OBJPROP_SELECTABLE,selection);
ObjectSetInteger(chart_ID,name,OBJPROP_SELECTED,selection);
//--- hide (true) or display (false) graphical object name in the object list
ObjectSetInteger(chart_ID,name,OBJPROP_HIDDEN,hidden);
//--- set the priority for receiving the event of a mouse click in the chart
ObjectSetInteger(chart_ID,name,OBJPROP_ZORDER,z_order);
//--- successful execution
return(true);
}
//+------------------------------------------------------------------+
ドキュメントにある関数を そのまま使って、ボタンを作成することができます。
そうすれば、ただ呼び出すだけでいいのです。
また
ありがとうございます。
--------------------------------------------
ドキュメントにある関数をそのまま使ってボタンを作成することができます。
だから、あなたはちょうど呼び出すことができます。
ありがとうございます、Marco さん。
また、私は以下のコードについて質問する必要があります、それは何ですか、それはどのように動作しますか? (私もそれについて読んだが、私はより明確に理解していない)。
もう少し説明してください、ありがとうございます。
----------------------------------------
また、以下のコードのようにboolの 代わりにvoidを 使用する必要があるのですが、どちらが良いのでしょうか?
// or
void ButtonCreate(...)
この関数は、ボタンの作成が成功したかどうかによってtrueまたはfalseを返すので、ボタンが本当に作成されたかどうかを確認したい場合、それはあなた次第です。
2つ目の質問ですが、ツールチップとは、チャート上のオブジェクトにマウスを乗せると表示されるものです。
今のやり方では限界があります。
拡張したい場合は、以下の記事を読んでください。
https://www.mql5.com/en/search#!keyword=graphical%20interfaces&module=mql5_module_articles
この関数は、ボタンの作成が成功したかどうかによってtrueまたはfalseを返すので、ボタンが本当に作成されたかどうかを確認したい場合、それはあなた次第です。
2つ目の質問ですが、ツールチップとは、チャート上のオブジェクトにマウスを乗せると表示されるものです。
今のやり方では限界があります。
もし拡大したいのであれば、以下の記事を読んでください。
https://www.mql5.com/en/search#!keyword=graphical%20interfaces&module=mql5_module_articles
本当にありがとうございます。
このような場合、「某国ではどうなのか?
( あなたの最初のコメントから - あなたは私をたくさん助けました - あなたはいつも私の懸念を理解しようとしています - もう1度大きな感謝を )
私のEAのコードで、LotSizeアイコンに .PNG ファイル形式を使用する必要があります。
しかし、私は.BMP ファイルフォーマットしか見つけられませんでした。
どんなコメントでもすぐに多くの感謝をすることができれば、ちょうど私はもう少し急いでいます。
事前にありがとうございます。
私はif lotsize better then lotvalue'State true' else 'State false'を試してみました。
( 'Reset'をクリックすると、オブジェクトは'state false'になり、ロットサイズを大きくするとstate trueになりません)
以下のコードは間違っていますか?
if ( sparam == _namelotRset )
{
if ( _lotSize > _lotValue )
{
ObjectSetInteger( 0, sparam, OBJPROP_STATE, true );
} //---if Close
else
{
ObjectSetInteger( 0, sparam, OBJPROP_STATE, false );
} //---if Close
_lotSize = _lotValue * _lotMin;
_infoUpdate();
return;
} //---if Close
ありがとうございます。
//--- 2回目の編集
以下のコードで、ON/OFFの 切り替えを行おうとしています。
ご覧ください。
https://www.mql5.com/en/docs/constants/objectconstants/enum_object/obj_bitmap
ビットマップの問題については
また、もう一つの問題については、sparamの外で状態を設定するために、それを別のパーツに分割することができます。