Metatrader Forum | Forex Expert-Advisor | Broker & Forex Tools

Metatrader Forum | Forex Expert-Advisor | Broker & Forex Tools (http://www.expert-advisor.com/forum/index.php)
-   Programmierung MQL4 (http://www.expert-advisor.com/forum/forumdisplay.php?f=220)
-   -   Button geht seit Update nicht mehr (http://www.expert-advisor.com/forum/showthread.php?t=7100)

Max2018 17.10.21 14:08

Button geht seit Update nicht mehr
 
Hallo,

seit einem Update von MT4 in den letzten Monaten gehen die Buttons nicht mehr.... wie kann ich den Code anpassen, damit die wieder laufen ? :confused:

Code:

int PauseEA;

int OnInit()
  {
  CreatePauseButton();
  return(INIT_SUCCEEDED);
  }

void OnDeinit(const int reason)
  {
  ObjectDelete("PauseButton");
  }
int start()
{
Comment(PauseEA);
}
void CreatePauseButton()
  {
  ObjectCreate(0,"PauseButton",OBJ_BUTTON,0,0,0);
  ObjectSetInteger(0,"PauseButton",OBJPROP_XDISTANCE,530);
  ObjectSetInteger(0,"PauseButton",OBJPROP_YDISTANCE,55);
  ObjectSetInteger(0,"PauseButton",OBJPROP_XSIZE,100);
  ObjectSetInteger(0,"PauseButton",OBJPROP_YSIZE,50);
 
  ObjectSetString(0,"PauseButton",OBJPROP_TEXT,"Pause EA");
  }


void OnChartEvent(const int id, const long& lparam, const double& dparam, const string& sparam)
  {
  if(id==CHARTEVENT_OBJECT_CLICK)
    {
      Print ("Now inside OnChartEvent");
      if(sparam=="PauseButton")
        {
        PauseEA=1;;     
        }
    }
  }


AVT 17.10.21 17:58

Zitat:

Zitat von Max2018 (Beitrag 45731)

Code:

int PauseEA;

void OnChartEvent(const int id, const long& lparam, const double& dparam, const string& sparam)
  {
  if(id==CHARTEVENT_OBJECT_CLICK)
    {
      Print ("Now inside OnChartEvent");
      if(sparam=="PauseButton")
        {
        PauseEA=1;;     
        }
    }
  }


Ein Knopf kann entweder reingedrückt sein oder nicht - das siehst Du am besten bei dreidimensionalen
ObjectSetInteger(0,"PauseButton",OBJPROP_BORDER_CO LOR,clrNONE);

Dann kommt es drauf an, was genau Du willst. Hier ein Beispiel, wo solange Pause herrscht, wie der Knopf reingedrückt ist.
Wird dann ein zweites Mal auf den (jetzt reingedrückten) Knopf gedrückt, dann wird die Pause aufgehoben und der Knopf wieder auf ungedrückt gesetzt.
So kann man mittels Knopfdruck die Pause an- und abschalten.
Code:

  // ============================= buttons
  if(id==CHARTEVENT_OBJECT_CLICK)
  {
      if(sparam=="PauseButton")                        //KannGedrücktOderUngedrücktSein
      {
        bool State=ObjectGetInteger(0,"PauseButton",  //JetztGedrücktOderNicht?
                                    OBJPROP_STATE);
        Print(__FUNCTION__,
              " Pause pressed",                      //WelcherKnopfGedrückt
              " PauseEA=",(int)PauseEA,              //BisherigerWert
              " State=",(int)State      );            //BisherigerGedrücktwert
        if(ButState)                                  //VorherGedrückt:PauseIstAn
        {
            PauseEA=0;                                //JetztPauseAbschalten
            ObjectSetInteger(0,"PauseButton"          //AufUngedrücktSetzen
                            OBJPROP_STATE,false);
        }
        else                                          //VorherUngedrückt:PauseIstAus
        {
            PauseEA=1;                                //JetztPauseAnschalten
            ObjectSetInteger(0,"PauseButton"          //AufUngedrücktSetzen
                            OBJPROP_STATE,true);      //AufGedrücktSetzen
        }
      }//sparam=="PauseButton"
  }//id==CHARTEVENT_OBJECT_CLICK

Aber Vorsicht, wenn der EA durch irgendwelche Ereignisse neu geladen wird, hast Du den Ursprungszustand wieder, also eventuell sicherstellen, daß irgendwo außerhalb kontrolliert wird, ob er laufen darf.
AVT

Max2018 18.10.21 17:50

SUPER - Danke


Alle Zeitangaben in WEZ +2. Es ist jetzt 22:03 Uhr.

Powered by vBulletin® Version 3.8.5 (Deutsch)
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
SEO by vBSEO 3.6.1
Powered by vBCMS® 2.7.0 ©2002 - 2024 vbdesigns.de
Copyright ©2009 - 2023 by Expert-Advisor.com - Das Metatrader Forum