Sie verpassen Handelsmöglichkeiten:
- Freie Handelsapplikationen
- Über 8.000 Signale zum Kopieren
- Wirtschaftsnachrichten für die Lage an den Finanzmärkte
Registrierung
Einloggen
Sie stimmen der Website-Richtlinie und den Nutzungsbedingungen zu.
Wenn Sie kein Benutzerkonto haben, registrieren Sie sich
Ich denke schon.
Es ist aber etwas anders.
Der Unterschied zwischen global und statisch ist weder hier noch dort. Aber Ihre Methode zum Zurücksetzen ist gut. Sie verhindert den Überlauf.
Ich habe zu früh gesprochen. Ihrer überläuft in die andere Richtung. Er wird bei einem späteren Drücken von CTRL ausgelöst. Wenn Sie auf das Diagramm klicken und dann CTRL drücken, wird es ausgelöst.
@honest_knave- danke für Ihren Kommentar. Sehr schätzen, dass - aber ich begann versuchen, zuerst @Marco vd Heijden Kommentar. ( Ich habe alle Ihre Kommentare dazu gelesen. )
@Marco vd Heijden- Danke Mann.
Aber ich glaube, ich mache etwas falsch, vielleicht verstehe ich nicht mehr klar. Jedenfalls habe ich es versucht, Sie können es unten Code finden.
Wo ist mein Fehler, bitte?
//| keydown.mq4 |
//| Copyright 2016, Marco vd Heijden, MetaQuotes Software Corp. |
//| https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2016, Marco vd Heijden, MetaQuotes Software Corp."
#property link "https://www.mql5.com"
#property version "1.00"
#property strict
string prefix = "Custom Expert |";
string lotedit = prefix + "Edit Name";
string lotbtnplus = prefix + "Lot button Plus";
string lotbtnminus = prefix + "Lot button Minus";
double lot = 0.01, lotstep = 0.01 ;
bool ctrl_click;
//+------------------------------------------------------------------+
//| Expert initialization function |
//+------------------------------------------------------------------+
int OnInit()
{
//--- create timer
EventSetTimer(60);
graphicsObj();
//---
return(INIT_SUCCEEDED);
}
//+------------------------------------------------------------------+
//| Expert deinitialization function |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
{
//--- destroy timer
EventKillTimer();
ObjectsDeleteAll( 0, prefix );
}
//+------------------------------------------------------------------+
//| Expert tick function |
//+------------------------------------------------------------------+
void OnTick()
{
//---
graphicsObj();
}
//+------------------------------------------------------------------+
//| Timer function |
//+------------------------------------------------------------------+
void OnTimer()
{
//---
}
//+------------------------------------------------------------------+
void OnChartEvent(const int id,
const long &lparam,
const double &dparam,
const string &sparam)
{
if( id == CHARTEVENT_CLICK )
{
if ( sparam == lotbtnplus )
{
ObjectSetInteger( 0, sparam, OBJPROP_STATE, false );
lot = lot + lotstep;
update();
Print( " | lot plus : ", lot );
return;
}
Print( "Click" );
ctrl_click = 1;
}
if( id == CHARTEVENT_KEYDOWN )
{
//Print(lparam);// print to identify keycode
if( lparam == 17 ) // ctrl key
{
if( ctrl_click == 1 )// if mouse click
{
//Do Something when CTRL (keycode 17) is pressed
if ( sparam == lotbtnplus )
{
ObjectSetInteger( 0, sparam, OBJPROP_STATE, false );
lot = lot + ( lotstep * 10 );
Print( " | lot plus + Ctrl initial: ", lot );
update();
Print( " | lot plus + Ctrl: ", lot );
return;
}
Print( "Ctrl + Click" );
ctrl_click = 0; // reset
}
}
ctrl_click = 0; // reset if not ctrl
}
}
//|+--------------------------------------------------------------------------------+
//| - Function Update |
//|+--------------------------------------------------------------------------------+
void update()
{
//---
ObjectSetString( 0, lotedit, OBJPROP_TEXT, DoubleToString( lot, 2 ) );
//---
return;
}
{
ObjectCreate(0, lotedit, OBJ_EDIT, 0,0,0);
ObjectSetInteger(0, lotedit, OBJPROP_XDISTANCE, 30);
ObjectSetInteger(0, lotedit, OBJPROP_YDISTANCE, 30);
ObjectSetInteger(0, lotedit, OBJPROP_XSIZE, 60);
ObjectSetInteger(0, lotedit, OBJPROP_YSIZE, 30);
ObjectSetString(0, lotedit, OBJPROP_TEXT, DoubleToString( lot, 2 ));
ObjectCreate( 0, lotbtnplus, OBJ_BUTTON, 0, 0, 0);
ObjectSetString( 0, lotbtnplus, OBJPROP_TEXT, "+");
ObjectSetInteger( 0, lotbtnplus, OBJPROP_XDISTANCE, 100);
ObjectSetInteger( 0, lotbtnplus, OBJPROP_YDISTANCE, 30);
ObjectSetInteger( 0, lotbtnplus, OBJPROP_XSIZE, 70);
ObjectSetInteger( 0, lotbtnplus, OBJPROP_YSIZE, 30);
ObjectSetInteger( 0, lotbtnplus, OBJPROP_BACK, false);
ObjectSetInteger( 0, lotbtnplus, OBJPROP_SELECTABLE, false);
}
Ihr erstes Problem ist, dass CHARTEVENT_CLICK nicht dasselbe ist wie CHARTEVENT_OBJECT_CLICK. Sie wollen Klicks auf ein Objekt abfangen, nicht nur irgendeinen Klick auf das Diagramm.
const long &lparam,
const double &dparam,
const string &sparam)
{
// if( id == CHARTEVENT_CLICK )
if( id == CHARTEVENT_OBJECT_CLICK )
const long &lparam,
const double &dparam,
const string &sparam)
{
static bool wasCTRL=false;
if(id==CHARTEVENT_OBJECT_CLICK && sparam == lotbtnplus)
{
ObjectSetInteger( 0, sparam, OBJPROP_STATE, false );
lot+=(wasCTRL)?lotstep*10:lotstep;
update();
Print( " | lot plus : ", lot );
return;
}
wasCTRL=(id==CHARTEVENT_KEYDOWN && lparam==17);
}
Dies könnte helfen. Es kann sein, dass es erst beim zweiten Mausklick auf 0,1 geht, je nachdem, wie schnell man die Taste nach CTRL drückt.
#Strg + Maustaste - Geschlossen
Wow, genau wie es, erstaunlich großen Dank ehrlich!
Besonderen Dank an@honest_knave und @Marco vd Heijden
(MT4-Plattform zweimal aktualisiert.) Nach dieser Updates dieses Spreadsheet nicht auf dem Chart zu aktualisieren, habe ich alles über Spreadsheet überprüft ich sehe kein Problem.
Ich muss darauf hinweisen, dass ich auch Bid und Ask Preise über Spreadsheet verwende, Bid und Ask funktionieren gut, aber Spreadsheet nicht.
Wenn Sie mein Anliegen verstehen, lassen Sie mich wissen, wie ich dieses Problem lösen kann.
Vielen Dank im Voraus.
Hatten Sie einen Code für eine Tabellenkalkulation?
Hatten Sie einen Code für eine Tabellenkalkulation?
Kann ich 2 verschiedene Etikettenfunktionen schreiben?
(z. B.: 1 für Text, 2 für Text und Schriftgröße).