hallo,
sagt mal, gibts für den Navigator eigentlich auch einen mql5 befehl zum ein und ausblenden oder geht das nur über die shortcut?
Du kannst Tasten simulieren. Das hab ich mal irgendwo gefunden:
//+------------------------------------------------------------------+ //| AutoTrader.mq5 | //| Copyright 2016, AM2 | //| http://www.forexsystems.biz | //+------------------------------------------------------------------+ #property copyright "Copyright 2016, AM2" #property link "http://www.forexsystems.biz" #property version "1.00" #define VK_CONTROL 0x11 //CTRL key #define KEY_CODE 'E' #import "user32.dll" void keybd_event(int bVk,int bScan,int dwFlags,int dwExtraInfo); // int SendMessageA(int hWnd,int Msg,int wParam,int lParam); #import #include<Trade\Trade.mqh> CTrade trade; CPositionInfo position; input int StartHour = 9; input int StartMinute = 30; input int StopHour = 23; input int StopMinute = 30; //+------------------------------------------------------------------+ //| | //+------------------------------------------------------------------+ int OnInit() { return(INIT_SUCCEEDED); } //+------------------------------------------------------------------+ //| | //+------------------------------------------------------------------+ void OnDeinit(const int reason) { Comment(""); } //+------------------------------------------------------------------+ //| | //+------------------------------------------------------------------+ void Key() // Simulation Ctrl+E { keybd_event(VK_CONTROL,0,0,0); Sleep(10); keybd_event(KEY_CODE,0,0,0); Sleep(10); keybd_event(KEY_CODE,0,2,0); Sleep(10); keybd_event(VK_CONTROL,0,2,0); } //+------------------------------------------------------------------+ //| | //+------------------------------------------------------------------+ bool TimeSession(int aStartHour,int aStartMinute,int aStopHour,int aStopMinute,datetime aTimeCur) { int StartTime=3600*aStartHour+60*aStartMinute; int StopTime =3600*aStopHour +60*aStopMinute; aTimeCur=aTimeCur%86400; if(StopTime<StartTime) { if(aTimeCur>=StartTime || aTimeCur<StopTime) return(true); } else { if(aTimeCur>=StartTime && aTimeCur<StopTime) return(true); } return(false); } //+------------------------------------------------------------------+ //| | //+------------------------------------------------------------------+ void OnTick() { if(!TimeSession(StartHour,StartMinute,StopHour,StopMinute,TimeCurrent())) { for(int i=0; i<PositionsTotal(); i++) { if(position.Select(PositionGetSymbol(i))) { trade.PositionClose(PositionGetSymbol(i)); } } } if(TerminalInfoInteger(TERMINAL_TRADE_ALLOWED)==0 && TimeSession (StartHour,StartMinute,StopHour,StopMinute,TimeCurrent())) Key(); if(TerminalInfoInteger(TERMINAL_TRADE_ALLOWED)==1 && !TimeSession(StartHour,StartMinute,StopHour,StopMinute,TimeCurrent())) Key(); Comment("\n Enable: ",TerminalInfoInteger(TERMINAL_TRADE_ALLOWED), "\n Time: ",TimeCurrent()); } //+------------------------------------------------------------------+
Mittlerweile vermerke ich mir in den Dateien wo ich sie gefunden habe, hier habe ich es leider noch nicht gemacht.
Auf YT findest du auch sowas vom Jim Hodges alias 'Jim Dandy'
Eingebaute Funktion in mql5 gibt's leider nicht.
Hat wer eine idee, scheitere ich da am vps server oder an mt5?
Den code hab ich von oben 1:1 übernommen, dachte mal ich probier das mal mit dem vorgegebeb stgr e
Oder hat das was mit dem 64bit system zu tun, so wies hier im beispiel steht?
Oder hat das was mit dem 64bit system zu tun, so wies hier im beispiel steht?
Mitlerweile bin ich ja schon weitergekommen, ja es gibt scheinbar einen unterschied zwischen 32 und 64 bit, aber der ist da egal
mir kommt der fehler erst beim aufruf von
void Key() // Simulation Ctrl+E { keybd_event(VK_CONTROL,0,0,0); Sleep(10); keybd_event(KEY_CODE,0,0,0); Sleep(10); keybd_event(KEY_CODE,0,2,0); Sleep(10); keybd_event(VK_CONTROL,0,2,0); }
Den code versteh ich soweit, zuerst drücke ich und dann lass ich los.aber warum nimmt er mir dann die dll nicht mehr?
Und beim init überprüft mql5 scheinbar ob die funktionen erlaubt sind, beim kompelieren bringt er keinen fehler, erst wenn ich den aufruf
Key();
Auskommentiere gehts, aber das ist ja nicht der sinn der übung.
Edit: und jetzt versteh ich die welt gar nicht mehr.
hab einen ea geschrieben um ihn hier zu posten, geb den auf den chart und es geht.
geb den originalen wieder drauf geht auch.
er ladet sich die dll erst nach, nachdem er einmal vom chart entfernt wurde. Problem gelöst
Das liegt daran, dass Sie DLL an zwei Stellen aktivieren müssen. Die allgemeinen Einstellungen wie im obigen Screenshot und die EA-Einstellungen.
Wenn die DLL für allgemeine Einstellungen aktiviert ist, BEVOR Sie Ihren EA in das Diagramm einfügen, wird die EA-Einstellung automatisch aktiviert.
Wenn die allgemeine Einstellung deaktiviert ist und sich Ihr EA beim Aktivieren bereits im Diagramm befindet, müssen Sie sie auch in den EA-Einstellungen aktivieren.
- Freie Handelsapplikationen
- Über 8.000 Signale zum Kopieren
- Wirtschaftsnachrichten für die Lage an den Finanzmärkte
Sie stimmen der Website-Richtlinie und den Nutzungsbedingungen zu.
hallo,
sagt mal, gibts für den Navigator eigentlich auch einen mql5 befehl zum ein und ausblenden oder geht das nur über die shortcut?