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 (http://www.expert-advisor.com/forum/showthread.php?t=6508)

Max2018 30.09.19 11:25

Button
 
Hi,

warum geht dieser Button nicht :confused:

Code:

//+------------------------------------------------------------------+
//| Expert initialization function                                  |
//+------------------------------------------------------------------+
int OnInit()
  {
//---
  ObjectCreate(0,BUTTON_NAME,OBJ_BUTTON,0,0,0);
  ObjectSetInteger(0,BUTTON_NAME,OBJPROP_XSIZE,200);
  ObjectSetInteger(0,BUTTON_NAME,OBJPROP_YSIZE,100);
  ObjectSetInteger(0,BUTTON_NAME,OBJPROP_BGCOLOR,clrFuchsia);
  ObjectSetInteger(0,BUTTON_NAME,OBJPROP_COLOR,clrWhite);
  ObjectSetInteger(0,BUTTON_NAME,OBJPROP_XDISTANCE,100);
  ObjectSetInteger(0,BUTTON_NAME,OBJPROP_YDISTANCE,100);
  ObjectSetString(0,BUTTON_NAME,OBJPROP_TEXT,"BUY");
 
//---
  return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Expert deinitialization function                                |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
//---
  ObjectDelete(BUTTON_NAME);
  }
//+------------------------------------------------------------------+
//| Expert tick function                                            |
//+------------------------------------------------------------------+
void OnTick()
  {
//---
 
  }
//+------------------------------------------------------------------+
//| ChartEvent function                                              |
//+------------------------------------------------------------------+
void OnChartEvent(const int id,
                  const long &lparam,
                  const double &dparam,
                  const string &sparam)
  {
  if(lparam==BUTTON_NAME)
  {
  Comment("AAAAAA");
  //OrderSend(_Symbol,OP_BUY,1,Ask,0,0,0);
  //oder halt eine andere Variable ändern die dann im EA eine Aktion ausführt !
  ObjectSetInteger(0,BUTTON_NAME,OBJPROP_STATE,false); //setzt den Button zurück
 
  }}
//+------------------------------------------------------------------+


ixbone 30.09.19 11:47

Ist die Anzeige gemeint oder weil keine Aktion stattfindet?

traderdoc 30.09.19 13:04

Weil die Funktion

OnChartEvent ()

fehlt.

traderdoc

Bayreuther 30.09.19 13:36

Zitat:

Zitat von Max2018 (Beitrag 42897)
Hi,

warum geht dieser Button nicht :confused:

Code:

//+------------------------------------------------------------------+
//| Expert initialization function                                  |
//+------------------------------------------------------------------+
int OnInit()
  {
//---
  ObjectCreate(0,BUTTON_NAME,OBJ_BUTTON,0,0,0);
  ObjectSetInteger(0,BUTTON_NAME,OBJPROP_XSIZE,200);
  ObjectSetInteger(0,BUTTON_NAME,OBJPROP_YSIZE,100);
  ObjectSetInteger(0,BUTTON_NAME,OBJPROP_BGCOLOR,clrFuchsia);
  ObjectSetInteger(0,BUTTON_NAME,OBJPROP_COLOR,clrWhite);
  ObjectSetInteger(0,BUTTON_NAME,OBJPROP_XDISTANCE,100);
  ObjectSetInteger(0,BUTTON_NAME,OBJPROP_YDISTANCE,100);
  ObjectSetString(0,BUTTON_NAME,OBJPROP_TEXT,"BUY");
 
//---
  return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Expert deinitialization function                                |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
//---
  ObjectDelete(BUTTON_NAME);
  }
//+------------------------------------------------------------------+
//| Expert tick function                                            |
//+------------------------------------------------------------------+
void OnTick()
  {
//---
 
  }
//+------------------------------------------------------------------+
//| ChartEvent function                                              |
//+------------------------------------------------------------------+
void OnChartEvent(const int id,
                  const long &lparam,
                  const double &dparam,
                  const string &sparam)
  {
  if(lparam==BUTTON_NAME)
  {
  Comment("AAAAAA");
  //OrderSend(_Symbol,OP_BUY,1,Ask,0,0,0);
  //oder halt eine andere Variable ändern die dann im EA eine Aktion ausführt !
  ObjectSetInteger(0,BUTTON_NAME,OBJPROP_STATE,false); //setzt den Button zurück
 
  }}
//+------------------------------------------------------------------+


So sollte Dein "Comment" angezeigt werden.

Code:

string BUTTON_NAME = "Button";

#include <stdlib.mqh>

//+------------------------------------------------------------------+
//| Expert initialization function                                  |
//+------------------------------------------------------------------+
int OnInit()
{
  ObjectCreate(0,BUTTON_NAME,OBJ_BUTTON,0,0,0);
  ObjectSetInteger(0,BUTTON_NAME,OBJPROP_XSIZE,200);
  ObjectSetInteger(0,BUTTON_NAME,OBJPROP_YSIZE,100);
  ObjectSetInteger(0,BUTTON_NAME,OBJPROP_BGCOLOR,clrFuchsia);
  ObjectSetInteger(0,BUTTON_NAME,OBJPROP_COLOR,clrWhite);
  ObjectSetInteger(0,BUTTON_NAME,OBJPROP_XDISTANCE,100);
  ObjectSetInteger(0,BUTTON_NAME,OBJPROP_YDISTANCE,100);
  ObjectSetString(0,BUTTON_NAME,OBJPROP_TEXT,"BUY");
 
  return(INIT_SUCCEEDED);
}
//+------------------------------------------------------------------+
//| Expert deinitialization function                                |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
{

  ObjectDelete(BUTTON_NAME);
}
//+------------------------------------------------------------------+
//| Expert tick function                                            |
//+------------------------------------------------------------------+
void OnTick()
{


}
//+------------------------------------------------------------------+
//| ChartEvent function                                              |
//+------------------------------------------------------------------+
void OnChartEvent(const int id,
                  const long &lparam,
                  const double &dparam,
                  const string &sparam)
{
  if(sparam==BUTTON_NAME)
  {
      Comment("AAAAAA");
      //OrderSend(_Symbol,OP_BUY,1,Ask,0,0,0);
      //oder halt eine andere Variable ändern die dann im EA eine Aktion ausführt !
      ObjectSetInteger(0,BUTTON_NAME,OBJPROP_STATE,false); //setzt den Button zurück
  }
}
//+------------------------------------------------------------------+


traderdoc 30.09.19 19:11

Zitat:

Zitat von traderdoc (Beitrag 42899)
Weil die Funktion

OnChartEvent ()

fehlt.

traderdoc

Sorry, ich konnte auf dem Handy nicht nach unten scrollen.

traderdoc

AVT 30.09.19 22:01

Zitat:

Zitat von Max2018 (Beitrag 42897)
warum geht dieser Button nicht

vergleiche Deinen Code mit dem Beispiel von
Zitat:

Zitat von Bayreuther (Beitrag 42900)
Code:

if(lparam==BUTTON_NAME)
if(sparam==BUTTON_NAME)


BUTTON_NAME ist ein string, also mußt Du bei dem Event-Parameter auch vergleichen, ob der string-Parameter (sparam) der des Button-Namens ist - lparam ist für long Werte.
Tip: grundsätzlich am Anfang immer "#property strict" setzen und beim Kompilieren auf das achten, was er zu meckern hat, dann jede Meldung durchgehen (Doppelklick auf Warnmeldung bringt Dich direkt zur fraglichen Zeile) und nachdenken was es (da denn schon wieder :eek: ) zu meckern gibt. Mir hilft das oft weiter. AVT

Max2018 01.10.19 00:33

SUPER Danke
:)

Noch ein Frage:
Gibt es ein Möglichkeit, dass der auch im Strategietester läuft?

Bayreuther 01.10.19 06:34

Zitat:

Zitat von Max2018 (Beitrag 42903)
SUPER Danke
:)

Noch ein Frage:
Gibt es ein Möglichkeit, dass der auch im Strategietester läuft?

Leider nein, da die Funktion "OnChartEvent()" im Strategietester nicht unterstützt wird. Dieses kannst Du auch hier nachlesen.

Bobs 01.10.19 18:43

Zitat:

Zitat von Max2018 (Beitrag 42903)
Noch ein Frage:
Gibt es ein Möglichkeit, dass der auch im Strategietester läuft?

Warum nicht? Es ist möglich ein Stand des Buttons im Strategietester definieren. Das wird aber ein anderen Algorithmus, ohne OnChartEvent(). Bei diesem wird Button bei nachfolgenden Tick reagieren.

traderdoc 01.10.19 19:09

Zitat:

Zitat von Bobs (Beitrag 42906)
Warum nicht? Es ist möglich ein Stand des Buttons im Strategietester definieren. Das wird aber ein anderen Algorithmus, ohne OnChartEvent(). Bei diesem wird Button bei nachfolgenden Tick reagieren.

Jetzt machst Du mich aber richtig neugierig.
Schreibe doch mal bitte den Code dazu.

traderdoc


Alle Zeitangaben in WEZ +2. Es ist jetzt 15:22 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