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: 4973
Beiträge: 43251
Benutzer: 7.219
Aktive Benutzer: 81
Links: 84
Wir begrüßen unseren neuesten Benutzer: Hopfen&Malz
Mit 2.475 Benutzern waren die meisten Benutzer gleichzeitig online (16.01.20 um 22:38).
Neue Benutzer:
vor einem Tag
- Hopfen&Mal...
vor 2 Tagen
- frankmicha...
vor einer Woche
- DFeck
vor einer Woche
- bb1107
vor 2 Wochen
- rg-trader

Onlineuser
'Wer ist online' anzeigen Benutzer: 0
Gäste: 246
Gesamt: 246
Team: 0
Team:  
Benutzer:  
Freunde anzeigen

Empfehlungen

Thema geschlossen
 
Themen-Optionen Thema durchsuchen Ansicht
  #1 (permalink)  
Alt 29.11.16
Mitglied
 
Registriert seit: Apr 2014
Beiträge: 118
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
Gesperrter Benutzer
 
Registriert seit: Feb 2016
Ort: 2100 Österreich
Beiträge: 313
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
  #3 (permalink)  
Alt 01.12.16
Mitglied
 
Registriert seit: Apr 2014
Beiträge: 118
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
Gesperrter Benutzer
 
Registriert seit: Feb 2016
Ort: 2100 Österreich
Beiträge: 313
Kronenchakra befindet sich auf einem aufstrebenden Ast
Standard

Dann ist ja alles bestens
  #5 (permalink)  
Alt 09.12.16
Mitglied
 
Registriert seit: Apr 2014
Beiträge: 118
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
Gesperrter Benutzer
 
Registriert seit: Feb 2016
Ort: 2100 Österreich
Beiträge: 313
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
  #7 (permalink)  
Alt 10.12.16
Mitglied
 
Registriert seit: Apr 2014
Beiträge: 118
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: 118
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
Gesperrter Benutzer
 
Registriert seit: Feb 2016
Ort: 2100 Österreich
Beiträge: 313
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
  #10 (permalink)  
Alt 13.12.16
Mitglied
 
Registriert seit: Apr 2014
Beiträge: 118
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 +1. Es ist jetzt 10:19 Uhr.





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