expert advisor - verschiedene Fragen - Seite 6

 

Ich versuche, viel Reset-Button zu machen, aber ich brauche, um vielbesseres Ergebnis als diese zu bekommen, aber ich kann nicht.
(Ich mag nicht alle meine ea's und Indikatoren Button-Objekte, weil alle von ihnen sehr hässlich wie diese. )

Ich brauche zwei Dinge von euch Jungs, die helfen können und gibt mir gute Ratschläge, bitte ich brauche wirklich Ihre Hilfe.
Ich verbrachte eine Menge Zeit, und ich kann nicht herausfinden, was ist ein Problem mit meinem code.

Vielen Dank im Voraus.

//--- zweites Mal bearbeitet - während ich diesen Kommentar schreibe, habe ich vielleicht ein Nickerchen gemacht...

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. Wenn es versteckt ist, wie können Sie es sehen und anklicken?
  2. ZORDER ist nicht boolesch, sondern ein 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);
  }
//+------------------------------------------------------------------+

Bitte verwenden Sie einfach die Funktion aus der Dokumentation, um die Schaltflächen zu erstellen. Fügen Sie sie einfach am Ende Ihres Codes ein, rufen Sie die Funktion auf und übergeben Sie die Parameter.

Dann können Sie sie einfach aufrufen:

ButtonCreate(...

Auch

whroeder1:
  1. Wenn es versteckt ist, wie kann man es dann sehen und anklicken?
  2. ZORDER ist nicht boolesch, es ist ein int 0...
Versteckt ist nur in der Objektliste versteckt.
 
whroeder1:
  1. Wenn sie versteckt ist, wie kann man sie dann sehen und anklicken?
  2. ZORDER ist nicht bool, es ist ein int 0...

Danke, ich habe es korrigiert, es war nur ein Fehler.
--------------------------------------------

Marco vd Heijden:

Bitte verwenden Sie die Funktion aus der Dokumentation "wie sie ist", um die Schaltflächen zu erstellen, fügen Sie sie einfach am Ende Ihres Codes ein, rufen Sie die Funktion auf und übergeben Sie die Parameter.

So dann können Sie einfach aufrufen:

ButtonCreate(...)

Danke Marco, das wird mir sehr helfen, und meine EA-Codes sieht wie aufgeräumt.
Auch ich muss über unten Code fragen, was ist es, wie ist es funktionieren? (selbst ich habe darüber gelesen, aber ich verstehe nicht mehr klar)

Bitte erklären Sie es etwas genauer, vielen Dank im Voraus.

ObjectSetString ( 0, name, OBJPROP_TOOLTIP , tip );

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

Außerdem muss ich void anstelle von bool verwenden, wie im untenstehenden Code,was ist alsogut?

bool ButtonCreate(...)

// or

void ButtonCreate(...)
 

Die Funktion gibt entweder true oder false zurück, je nachdem, ob die Erstellung der Schaltfläche erfolgreich war oder nicht. Es hängt also von Ihnen ab, ob Sie überprüfen möchten, ob die Schaltfläche tatsächlich erstellt wurde.

Was die zweite Frage betrifft, so ist der Tooltip das, was sichtbar wird, wenn Sie mit der Maus über das Objekt im Diagramm fahren.

Die Art und Weise, wie Sie jetzt arbeiten, hat ihre Grenzen.

Wenn Sie sie erweitern möchten, lesen Sie bitte die folgenden Artikel:

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

 
Marco vd Heijden:

Die Funktion gibt entweder true oder false zurück, je nachdem, ob die Erstellung der Schaltfläche erfolgreich war oder nicht. Es hängt also von Ihnen ab, ob Sie überprüfen möchten, ob die Schaltfläche tatsächlich erstellt wurde.

Was die zweite Frage betrifft, so ist der Tooltip das, was sichtbar wird, wenn Sie mit der Maus über das Objekt im Diagramm fahren.

Die Art und Weise, wie Sie jetzt arbeiten, hat ihre Grenzen.

Wenn Sie sie erweitern wollen, lesen Sie bitte die folgenden Artikel:

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

Ein riesiges Dankeschön.
WOW, Sie werden mein Mann sein, Mr. Marco.

( seit Deinem ersten Kommentar - Du hast mir sehr geholfen - Du versuchst immer, meine Anliegen zu verstehen - noch einmal herzlichen Dank )

 
Ich möchte Sie nur auf diese Artikel hinweisen, und wir sollten den Autoren, die sie geschrieben und auch übersetzt haben, sehr dankbar sein.
 

Ich muss das PNG-Dateiformat im Code meines EAs für das LotSize-Symbol verwenden.
Aber ich fand nur .BMP-Dateiformat, so kann jemand mir helfen / beraten mich?

Wenn jeder Kommentar könnte schnell viel zu schätzen, nur ich bin ein bisschen mehr eilen.
Vielen Dank im Voraus.

 

Ich versuche, wenn lotize besser als lotvalue 'State true' sonst 'State false'.
(wenn ich auf 'Reset' klicke, wird das Objekt zu 'state false' und nachdem ich die Losgröße erhöht habe, wird der Status nicht zu true)

Ist der folgende Code falsch?

//|     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

Danke!

//--- zweites Mal bearbeitet

Ich versuche'ON OFF' mit untenstehendem Code zu schalten.

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

Siehe dazu:

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

Für das Bitmap-Problem.

Und für das andere Problem können Sie es in separate Teile splitten, um den Zustand außerhalb von sparam zu setzen.

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