エキスパートアドバイザー - 雑多な質問 - ページ 6

 

私はロットリセットボタンを 作ろうとしていますが、私はこれよりはるかに良い結果を 得る必要があります、しかし、私はそうすることはできません。
( 私のea'sとindicatorsのButtonオブジェクトは、すべてこのような非常に醜いので好きではありません。)

私は2つのことが必要なのですが、皆さんは私を助け、良いアドバイスをしてくれますか?
私は多くの時間を費やしたが、私は私のコードの問題が何であるかを理解することはできません。

ありがとうございました。

//--- 2度目の編集 - このコメントを書いている間、私は居眠りをしていたかもしれません。

ObjectCreate     ( 0, "button lot reset", OBJ_BUTTON           , 0, 0, 0           );
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              );
 
  1. 隠れているのなら、どうやって見たりクリックしたりするのですか?
  2. ZORDERはブーリアンではなく、intの0です...
 
//+------------------------------------------------------------------+
//| 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);
  }
//+------------------------------------------------------------------+

ドキュメントにある関数を そのまま使って、ボタンを作成することができます。

そうすれば、ただ呼び出すだけでいいのです。

ButtonCreate(...

また

whroeder1:
  1. もし、それが非表示なら、どうやってそれを見たり、クリックしたりするのでしょうか?
  2. ZORDERはブーリアンではなく、int型の0...
Hiddenは、オブジェクトのリストで隠されているだけです。
 
whroeder1:
  1. 非表示の場合、どのように見てクリックすればいいのでしょうか?
  2. ZORDERはboolではなく、intの0...です。

ありがとうございます。
--------------------------------------------

Marco vd Heijden です。

ドキュメントにある関数をそのまま使ってボタンを作成することができます。

だから、あなたはちょうど呼び出すことができます。

ButtonCreate(...)

ありがとうございます、Marco さん。
また、私は以下のコードについて質問する必要があります、それは何ですか、それはどのように動作しますか? (私もそれについて読んだが、私はより明確に理解していない)。

もう少し説明してください、ありがとうございます。

ObjectSetString ( 0, name, OBJPROP_TOOLTIP , tip );

----------------------------------------

また、以下のコードのようにboolの 代わりにvoidを 使用する必要があるのですが、どちらが良いのでしょうか?

bool ButtonCreate(...)

// or

void ButtonCreate(...)
 

この関数は、ボタンの作成が成功したかどうかによってtrueまたはfalseを返すので、ボタンが本当に作成されたかどうかを確認したい場合、それはあなた次第です。

2つ目の質問ですが、ツールチップとは、チャート上のオブジェクトにマウスを乗せると表示されるものです。

今のやり方では限界があります。

拡張したい場合は、以下の記事を読んでください。

https://www.mql5.com/en/search#!keyword=graphical%20interfaces&module=mql5_module_articles

 
Marco vd Heijden:

この関数は、ボタンの作成が成功したかどうかによって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になりません)

以下のコードは間違っていますか?

//|     Lot Reset
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の 切り替えを行おうとしています。

ObjectSetString( chart_ID, name, OBJPROP_BMPFILE, on_off, file )
 

ご覧ください。

https://www.mql5.com/en/docs/constants/objectconstants/enum_object/obj_bitmap

ビットマップの問題については

また、もう一つの問題については、sparamの外で状態を設定するために、それを別のパーツに分割することができます。

Documentation on MQL5: Standard Constants, Enumerations and Structures / Objects Constants / Object Types / OBJ_BITMAP
Documentation on MQL5: Standard Constants, Enumerations and Structures / Objects Constants / Object Types / OBJ_BITMAP
  • www.mql5.com
Standard Constants, Enumerations and Structures / Objects Constants / Object Types / OBJ_BITMAP - Reference on algorithmic/automated trading language for MetaTrader 5