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.


Portalsuche


Werbung

Login
Benutzername:
Kennwort:


Statistik
Themen: 3774
Beiträge: 36954
Benutzer: 5.958
Aktive Benutzer: 505
Links: 80
Wir begrüßen unseren neuesten Benutzer: Alf0809
Mit 483 Benutzern waren die meisten Benutzer gleichzeitig online (21.04.16 um 17:12).
Neue Benutzer:
vor 22 Stunden
- Alf0809
vor einem Tag
- jimydirekt...
vor einem Tag
- Geri78
vor 2 Tagen
- Phil7
vor 2 Tagen
- daijiro051...

Onlineuser
'Wer ist online' anzeigen Benutzer: 1
Gäste: 58
Gesamt: 59
Team: 0
Team:  
Benutzer:  fxnoob
Freunde anzeigen

Empfehlungen

Werbung

Thema geschlossen
 
Themen-Optionen Thema durchsuchen Ansicht
  #1 (permalink)  
Alt 29.11.16
Mitglied
 
Registriert seit: Apr 2014
Beiträge: 87
Trader6666 befindet sich auf einem aufstrebenden Ast
Standard Tastenkombinationen/Shortcuts?!?

Hi Leute,


leider findet man zu diesem Thema sehr sehr wenig im Netz.

Kann mir einer vllt kurz nen Code zeigen wie ich ne Tastenkombi wie z.B
shift+A generieren kann???!???

einzelnde Buchstaben bekomm ich hin

Code:
#define HOTKEY_O = 79;//natürlich ganz oben deklariert


if(id==CHARTEVENT_KEYDOWN && lparam == 79)
aber ich find nirgends ne Option für Tastenkombinationen......
  #2 (permalink)  
Alt 29.11.16
Benutzerbild von Kronenchakra
Mitglied
 
Registriert seit: Feb 2016
Ort: 2100 Österreich
Beiträge: 287
Kronenchakra befindet sich auf einem aufstrebenden Ast
Standard

Wenn du Keycodes suchst für OnChartevent() hilft sicher VirtualKeys.mqh weiter.
Findest du sicher im Netz.
Falls du Tasten simulieren möchtest geht das über WINAPI
__________________
Das Gras wächst nicht schneller wenn man daran zieht
  #3 (permalink)  
Alt 01.12.16
Mitglied
 
Registriert seit: Apr 2014
Beiträge: 87
Trader6666 befindet sich auf einem aufstrebenden Ast
Standard

Hi Kronenchakra,

danke für die Info, da ich kein Programmierer bin, weiß ich ned wie man mit WINAPI arbeitet,hatte noch nie damit zu tun. Lerne viel durch Learning by Doing


ich hab aber ne einfache Form im Netz gefunden :

Code:
bool shift_pressed_B  = false;
      if (id == CHARTEVENT_KEYDOWN)
      if (shift_pressed_B == false && lparam == 16)
          shift_pressed_B  =  true; 
      if (shift_pressed_B == true &&lparam == 66)    
      
      { shift_pressed_B = false; }
nicht so elegant aber Sie erfüllt Ihren zweck
  #4 (permalink)  
Alt 01.12.16
Benutzerbild von Kronenchakra
Mitglied
 
Registriert seit: Feb 2016
Ort: 2100 Österreich
Beiträge: 287
Kronenchakra befindet sich auf einem aufstrebenden Ast
Standard

Dann ist ja alles bestens
__________________
Das Gras wächst nicht schneller wenn man daran zieht
  #5 (permalink)  
Alt 09.12.16
Mitglied
 
Registriert seit: Apr 2014
Beiträge: 87
Trader6666 befindet sich auf einem aufstrebenden Ast
Standard

Hey Kronenchakra,

leider is mein weg leider nicht förderlich, denn wenn lparam mit der Mausposition im Chart übereinstimmt wird auch dann die Tastenkombination ausgeführt, was ja eig nicht sein sollte.


Dachte ich find was über die VirtualKeys.mqh aber leider fehlanzeige.

Kannst du mir einen kleinen Tipp geben wie ich das hin bekomme?!
eventuell Tutorials oder ein kleines Codebeispiel würd mir schon weiterhelfen.

LG Trader
  #6 (permalink)  
Alt 09.12.16
Benutzerbild von Kronenchakra
Mitglied
 
Registriert seit: Feb 2016
Ort: 2100 Österreich
Beiträge: 287
Kronenchakra befindet sich auf einem aufstrebenden Ast
Standard

Code:
//+------------------------------------------------------------------+
//|                                                      KeyTest.mq5 |
//+------------------------------------------------------------------+

#property indicator_chart_window
#property indicator_plots 0

int OnInit()
{
   return(INIT_SUCCEEDED);
}

int OnCalculate(const int rates_total,
                const int prev_calculated,
                const datetime &time[],
                const double &open[],
                const double &high[],
                const double &low[],
                const double &close[],
                const long &tick_volume[],
                const long &volume[],
                const int &spread[])
{
   return(rates_total);
}

//mogliche Chartevents
//CHARTEVENT_KEYDOWN — event of a keystroke, when the chart window is focused;
//CHARTEVENT_MOUSE_MOVE — mouse move events and mouse click events (if CHART_EVENT_MOUSE_MOVE=true is set for the chart);
//CHARTEVENT_OBJECT_CREATE — event of graphical object creation (if CHART_EVENT_OBJECT_CREATE=true is set for the chart);
//CHARTEVENT_OBJECT_CHANGE — event of change of an object property via the properties dialog;
//CHARTEVENT_OBJECT_DELETE — event of graphical object deletion (if CHART_EVENT_OBJECT_DELETE=true is set for the chart);
//CHARTEVENT_CLICK — event of a mouse click on the chart;
//CHARTEVENT_OBJECT_CLICK — event of a mouse click in a graphical object belonging to the chart; 
//CHARTEVENT_OBJECT_DRAG — event of a graphical object move using the mouse;
//CHARTEVENT_OBJECT_ENDEDIT — event of the finished text editing in the entry box of the LabelEdit graphical object;
//CHARTEVENT_CHART_CHANGE  — event of chart changes;
//CHARTEVENT_CUSTOM+n — ID of the user event, where n is in the range from 0 to 65535.
//CHARTEVENT_CUSTOM_LAST — the last acceptable ID of a custom event (CHARTEVENT_CUSTOM +65535).

void OnChartEvent(const int id,
                  const long &lparam,
                  const double &dparam,
                  const string &sparam)
{
   if(id==CHARTEVENT_OBJECT_CLICK)
      { 
         Print("Objectname: ",sparam," wurde angeclickt");
      }
     
   if(id==CHARTEVENT_CLICK)
      {
         Print("Auf den Chart geclickt");
      }
   
   if(id==CHARTEVENT_KEYDOWN)
      {
         Print(lparam);
         if(lparam==0x26) Print("VK_UP"); else
         if(lparam==0x28) Print("VK_DOWN"); else
         if(lparam==0x43) Print("VK_C"); else
         if(lparam==0x46) Print("VK_F"); else
         if(lparam==0x54) Print("VK_T"); else
         if(lparam==0x5A) Print("VK_Z"); else
         if(lparam==0x13) Print("VK_PAUSE");
      }
}
Kann man natürlich auch mit switch machen.
Hoffentlich kannst du's brauchen.

Grüße Otto
__________________
Das Gras wächst nicht schneller wenn man daran zieht
  #7 (permalink)  
Alt 10.12.16
Mitglied
 
Registriert seit: Apr 2014
Beiträge: 87
Trader6666 befindet sich auf einem aufstrebenden Ast
Standard

werd ich gleich mal versuchen danke schon mal für deine Mithilfe Otto!!!
  #8 (permalink)  
Alt 10.12.16
Mitglied
 
Registriert seit: Apr 2014
Beiträge: 87
Trader6666 befindet sich auf einem aufstrebenden Ast
Standard

hat leider nix gebracht, wie davor werden aktionen ausgeführt wenn der lparam-wert
mit einem Buchstabenwert matched.....

vom Ausschlußprinzip liegt es entweder an dieser Zeile oder ich hab einfach keine Ahnung vom richtigen proggen

Code:
      if (id == CHARTEVENT_KEYDOWN)
      if (shift_pressed_B == false && lparam == 0x10)//Shift wurde gedrückt
          shift_pressed_B  = true;
wenn ich 6 bereiche habe die ich alle mit Shift bedienen möchte
wie die untere hier
Code:
if (shift_pressed_B == true &&lparam == 0x42)
dann sind die Variablen die alle so beginnen" if( shift_pressed_...... "
ja auch automatisch true und werden bei einem match mit lparam ausgelößt


ich versuch mal alle variablen auf false zu setzten nach jeder Tastenkombi, wenns dann auch ned klappt ,dann brauch ich nen neuen logikaufbau .-.
  #9 (permalink)  
Alt 11.12.16
Benutzerbild von Kronenchakra
Mitglied
 
Registriert seit: Feb 2016
Ort: 2100 Österreich
Beiträge: 287
Kronenchakra befindet sich auf einem aufstrebenden Ast
Standard

Wenn du mit dem Code spielst den ich hier gepostet habe wirst du sehen, daß die Tastenanschläge der Reihe nach abgearbeitet werden.
Also nicht Ctrl+A gleichzeitig drücken, sondern zuerst Ctrl dann A. Detto mit shift.
Mit boolschen Variablen wie CtrlWasPressed arbeiten und die wieder bei einer anderen Taste auf false setzten.
Mit Alt geht nix, ebenso Leertast und Enter, Funktionstasten sind belegt

Viel Erfolg
Otto
__________________
Das Gras wächst nicht schneller wenn man daran zieht
  #10 (permalink)  
Alt 13.12.16
Mitglied
 
Registriert seit: Apr 2014
Beiträge: 87
Trader6666 befindet sich auf einem aufstrebenden Ast
Standard

Hey Otto,

ja das mit den Tastenschlägen war auch bei meinem Code so, Sparam gibt nen Wert wieder wenn man eine Taste länger hält, mit dem könnte man eventuell arbeiten, aber idR. kommt man da nicht hin weil man mit den fingern schneller ist, als der Wert zurück kommt vom MT4. Aber lag wirklich an den Codeschnipsel von mir , was auch völlig logisch ist -.- weil alle Tastenkombi´s ja dann frei geschaltet sind.

Danke für deine Hilfe/Interesse

LG Trader
Thema geschlossen

Lesezeichen

Stichworte
mql4, programmierung, programmierung metatrader, programmierung mql4, shift+a, tastenbelegung


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 +2. Es ist jetzt 08:38 Uhr.



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