Metatrader Forum | Forex Expert-Advisor | Broker & Forex Tools
Zurück   Metatrader Forum | Forex Expert-Advisor | Broker & Forex Tools > Metatrader 4 > Programmierung MQL4

Programmierung MQL4 Hier gehts rund ums Programmieren in MQL4.

Login
Benutzername:
Kennwort:


Statistik
Themen: 4642
Beiträge: 41799
Benutzer: 7.010
Aktive Benutzer: 171
Links: 82
Wir begrüßen unseren neuesten Benutzer: Beef_Poppi
Mit 2.475 Benutzern waren die meisten Benutzer gleichzeitig online (16.01.20 um 22:38).
Neue Benutzer:
vor einem Tag
- Beef_Poppi
vor einer Woche
- Innocent
vor einer Woche
- Olaf4476
vor einer Woche
- bobbyandex...
vor einer Woche
- boboyelang

Onlineuser
'Wer ist online' anzeigen Benutzer: 1
Gäste: 74
Gesamt: 75
Team: 0
Team:  
Benutzer:  Indikator-Trading
Freunde anzeigen

Empfehlungen

Antwort
 
Themen-Optionen Thema durchsuchen Ansicht
  #1 (permalink)  
Alt vor 2 Wochen
AVT AVT ist offline
Premium Mitglied
 
Registriert seit: Mar 2018
Ort: Hamburg
Beiträge: 475
AVT befindet sich auf einem aufstrebenden Ast
Standard Button Reaktion bei mehreren Indikatoren

Ich habe ein Problem mit der Reaktion auf Knopfdruck, wenn ich mehrere Indikatoren (-Knöpfe) auf einem Chart habe. Die Knöpfe der Indikatoren sind alle nebeneinander links unten positioniert (siehe Bild).

vorher festgelegt sind für alle Indikatoren identisch
- string LETTERSHOW="S", LETTERHIDE="H";
- int DoHiding=0;
Jeder einzelne Indikator definiert seinen Knopf fest, so:
Code:
// ======================= Button von Indikator 1
#define  ButtonText    "Vpta"   //TextOnButton
#define  ButtonName    "VALpta" //NameOfButtonObject

// ======================= Button von Indikator 2
#define  ButtonText    "Bdfb"     //TextOnButton
#define  ButtonName    "BNDdfibo" //NameOfButtonObject
Jeder Indikator hat seine Anweisungen, was passieren soll so:
Code:
void OnChartEvent(const int id, const long &lparam,
                  const double &dparam, const string &sparam )
{

   // ==============================  letter
   if(id==CHARTEVENT_KEYDOWN)
   {
      if     (lparam==StringGetCharacter(LETTERSHOW,0)) { DoHiding=-1; } //NoHiding
      else if(lparam==StringGetCharacter(LETTERHIDE,0)) { DoHiding= 1; } //DoHide
      else                                                DoHiding=0;    //Nothing
   }
   // ==============================  button
   if(id==CHARTEVENT_OBJECT_CLICK)
   {
      if(sparam==ButtonName)
      {
         if     (DoHiding==-1)
         {
            ReInit();
            ChangeButton(0);  //IsPressed->ToUnpressed
            DoHiding=0;       //ResetToNeutral
         }
         else if(DoHiding== 1)
         {
            ObjectsDeleteAll(ChartID(), PFX);
            ChangeButton(1);  //IsNotPressed->ToPressed
            DoHiding=0;       //ResetToNeutral
         }
         else if( DoHiding==0 && SaveConfigToFile() )
         { 
            ReInit();
         }
      }
   }
}
Die einzelnen Button sind immer 35 Pixel breit und werden mit Abstand 0 nebeneinander gesetzt (also immer +35 für die xPosition).
Meine Terminal -Extras - Optionen - Objekte - Empfindlichkeit habe ich schon auf 2 Pixel runtergesetzt.
Dennoch passiert folgendes: wenn ich auf einen Knopf drücke, um den Indikator z.B. zu verstecken, wird nicht nur dieser Indikator versteckt, sondern willkürlich irgendein weiterer Indikator auch. Im Code kann ich keinen Fehler finden - wenn ich zuerst ein "H" sende, das für alle Indikatoren gleich ist: durch #define sind die Knöpfe eindeutig voneinander zu unterscheiden und es sollte nur derjenige Indikator reagieren, dessen Knopf anschließend gedrückt wird; es gibt auch nirgends irgendeine Fehlermeldung.

Hat jemand eine Idee, woran das liegen könnte?
AVT
Angehängte Grafiken
Dateityp: jpg Unbenannt.JPG (12,3 KB, 4x aufgerufen)
Mit Zitat antworten
  #2 (permalink)  
Alt vor einer Woche
AVT AVT ist offline
Premium Mitglied
 
Registriert seit: Mar 2018
Ort: Hamburg
Beiträge: 475
AVT befindet sich auf einem aufstrebenden Ast
Talking Fehler gefunden

War mal wieder mein Fehler, hatte beim Kopieren teilweise den
Code:
if(sparam==ButtonName)
versehentlich mit gelöscht - so konnte das nix werden.
AVT
Mit Zitat antworten
  #3 (permalink)  
Alt vor einer Woche
Benutzerbild von Indikator-Trading
Mitglied
 
Registriert seit: May 2020
Ort: Bielefeld
Beiträge: 192
Indikator-Trading befindet sich auf einem aufstrebenden Ast
Standard

Ich hatte in meinem aktuellen Projekt auch einige Stolpersteine mit Buttons und co gehabt, welche mich haben fast verzweifeln lassen. Generell ist das Erstellen einem kompliziertes Bedienmenü in MQL4/5 eine ziemliche Qual.

Meine Lösung war das korrekte weiterleiten der des ChartEvents abhängig davon zu machen, was gerade geklickt worden ist:

Code:
 if((StringFind(sparam,"PasswordWindow")!=-1) && id==(CHARTEVENT_OBJECT_CLICK))
      PasswordWindow.ChartEvent(id,lparam,dparam,sparam);
   if((StringFind(sparam,"InfoWindow")!=-1) && id==(CHARTEVENT_OBJECT_CLICK))
      InfoWindow.ChartEvent(id,lparam,dparam,sparam);
Ansonsten hatte ich auch viele komische Reaktionen in anderen Bedienelementen, welche eigentlich rein logisch nicht hätten auftreten sollen.

Gruß Timo
Mit Zitat antworten
  #4 (permalink)  
Alt vor einer Woche
AVT AVT ist offline
Premium Mitglied
 
Registriert seit: Mar 2018
Ort: Hamburg
Beiträge: 475
AVT befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Zitat von Indikator-Trading Beitrag anzeigen
Ich hatte in meinem aktuellen Projekt auch einige Stolpersteine mit Buttons und co gehabt, welche mich haben fast verzweifeln lassen. Generell ist das Erstellen einem kompliziertes Bedienmenü in MQL4/5 eine ziemliche Qual.
...
Ansonsten hatte ich auch viele komische Reaktionen in anderen Bedienelementen, welche eigentlich rein logisch nicht hätten auftreten sollen.
Solange das alles nur einen Indikator/EA betrifft, geht das. Wenn man aber etliche Indikatoren mit ähnlichem Aufbau hat (und sich dann per c&p die Arbeit verkürzen will), da kann einem schon mal was durch Lappen gehen.
AVT
Mit Zitat antworten
  #5 (permalink)  
Alt vor einer Woche
Elite Mitglied
 
Registriert seit: Apr 2011
Beiträge: 2.501
traderdoc befindet sich auf einem aufstrebenden Ast
Standard

Also, ich habe nun schon zahlreiche Dashboards mit unzähligen Buttons, Eingabefeldern etc. programmiert und alles lief wie geschmiert. Keine Beeinflussung gegenseitig, korrekte Ausführungsweisen - funktioniert!

traderdoc
__________________
Ich erfülle Euch gern Eure EA-, Indikator- und Script-Programmierungswünsche auf Honorarbasis.
Mit Zitat antworten
Antwort

Lesezeichen

Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are aus
Pingbacks are aus
Refbacks are aus




Alle Zeitangaben in WEZ +1. Es ist jetzt 23:18 Uhr.





Die Suchmaschine - Der Wavesnode - Facebook Forum - Spam Firewall
-----------------------------------------------------------------------------------------------------------------------------
Powered by vBulletin® Version 3.8.5 (Deutsch)
Copyright ©2000 - 2021, Jelsoft Enterprises Ltd.
Powered by vBCMS® 2.7.0 ©2002 - 2021 vbdesigns.de
SEO by vBSEO 3.6.1
Copyright ©2009 - 2020 by Expert-Advisor.com - Das Metatrader Forum
MetaTrader bzw. MetaTrader 4 und MetaTrader 5 sind eingetragene Marken der MetaQuotes Software Corp.
-----------------------------------------------------------------------------------------------------------------------------