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
Unten Code funktioniert perfekt, nachdem Sie mir geholfen, danke Mann.
Und ich umbenannt, wie Sie sagten, es funktioniert gut, aber nur ich frage mich, bin ich etwas falsch machen?
(ich bin nur besorgt)
Sich Sorgen zu machen, ob der eigene Code funktioniert, ist ganz normal (ja, es ist gesund). Häufig sehen wir Code, der kompiliert, aber nicht das tut, was wir wollen (wegen menschlicher Fehler und/oder mangelnder Kenntnisse).
Am besten machen Sie es sich zur Gewohnheit, Variablen auszudrucken und Rückgabewerte zu überprüfen. Sobald Sie das getestet haben, können Sie die Druckanweisungen entfernen.
In Ihrem obigen Codeausschnitt könnten Sie ein einfaches Print("SL-Wert: "+sl) hinzufügen und dann in Ihrem Expert-Protokoll nachsehen, ob die Werte den Erwartungen entsprechen.
Es ist einfach, wenn es funktioniert, wie Sie nicht etwas falsch machen, sonst funktioniert es einfach nicht.
#Checkmark - Geschlossen
Yeah! Ich akzeptiere, dass dieses Bitmap-Etikett schon eine lange Zeit von mir gebraucht hat. Endlich habe ich, was ich wollte...
Natürlich, großer Mann, danke für deine Hilfe.
Ich löse mein Problem mit folgendem Code.
{
// Sell set Stop Loss with bitmap label
// when bitmap label shows - ON
if ( ObjectGetInteger( 0, "bitmap label on off", OBJPROP_STATE ) == true )
{
sl = Bid + points_to_change( stoploss * 10 );
Print( " | TRUE : Active | ", "Bid: ", Bid, " | ", "Stop Loss: ", sl );
}
// when bitmap label shows - OFF
if ( ObjectGetInteger( 0, "bitmap label on off", OBJPROP_STATE ) == false )
{
sl = 0;
Print( " | FALSE : Inactive | ", "Bid: ", Bid, " | ", "Stop Loss: ", sl );
}
// call your stop loss 'sl'
ticket = OrderSend( ..., sl, ... );
// sounds
if ( ticket > 0 )
{ PlaySound( "ok.wav" ); } else
{ PlaySound( "timeout.wav" ); }
return;
}
Am besten gewöhnen Sie sich an, Variablen auszudrucken und Rückgabecodes zu überprüfen. Sobald Sie dies getestet haben, können Sie die Druckanweisungen entfernen.
Mit Ihrem obigen Codeschnipsel könnten Sie ein einfaches Print("SL-Wert: "+sl) hinzufügen und dann in Ihrem Expertenprotokoll nachsehen, ob die Werte den Erwartungen entsprechen.
Ich benutze es bereits, aber manchmal zweifle ich an meinem Code, denn wenn Sie mein#Checkmark-Problem überprüfen, hoffe ich, dass Sie mich besser verstehen werden.
Jedenfalls vielen Dank für Ihre Zeit.
Warum multiplizieren Sie mit 10? Wenn Stoploss in Pips ist, konvertieren Sie es über pips_to_change, so dass es auf 4-stellige Makler funktioniert.
Oh! Ja, Mann, gute Frage, habe ich schon geändert. Danke für deine Aufmerksamkeit.
#Stop Loss /Take Profit- Geschlossen
Vielen Dank für deine klareren Kommentare Marco.
Besonderen Dank an @Marco vd HeijdenAlles Gute für dich.
#Strg + Maustaste - Öffnen
Ich habe einige Stunden damit verbracht, eine gute Dokumentation darüber zu finden, und ich kann keine guten Informationen und Dokumentationen dazu finden.
Ich brauche nur, wenn ich'Linke Maus + Strg' für Lot Größe um 0,1 erhöhen klicken. (Normalerweise wird um 0,01 erhöht).
Ich möchte Dokumentation und Artikel mit Beispielen darüber finden.
Vielen Dank im Voraus.
#Strg + Maustaste - Öffnen
Ich habe ein paar Stunden damit verbracht, eine gute Dokumentation darüber zu finden, und ich kann keine guten Informationen und Dokumentationen dazu finden.
Ich brauche nur, wenn ich'Linke Maus + Strg' für Lot Größe um 0,1 erhöhen klicken. (Normalerweise wird um 0,01 erhöht).
Ich möchte Dokumentation und Artikel mit Beispielen dazu finden.
Vielen Dank im Voraus.
Ich kenne keine einfache Möglichkeit, Tastenkombinationen abzufangen. Es wäre besser, eine zweite Taste zu haben, die man anklicken muss, wenn man um 0,1 statt um 0,01 erhöhen will.
Dennoch können Sie Folgendes versuchen:
Prüfen Sie, ob das letzte Ereignis eine Tastenkombination CTRL war.
Wenn ja, prüfen Sie, ob dieses Ereignis ein Mausklick ist.
Allerdings gibt es bei diesem Ansatz einige Probleme:
1. Wenn zwischen dem Tastendruck und dem Mausklick ein anderes Diagrammereignis eintritt, schlägt es fehl.
2. Durch die Verzögerung zwischen dem Mausklick und dem Loslassen der STRG-Taste kommt es zu einem Überlauf. Die Umgehungslösungen für dieses Problem bringen ihre eigenen Probleme mit sich.
Vielleicht haben andere Leute bessere Ideen.
const long &lparam,
const double &dparam,
const string &sparam)
{
static bool wasCTRL=false;
if(wasCTRL && id==CHARTEVENT_CLICK) Print("CTRL+CLICK detected");
wasCTRL=(id==CHARTEVENT_KEYDOWN && lparam==CTRL);
}
//| 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
bool ctrl_click;
//+------------------------------------------------------------------+
//| Expert initialization function |
//+------------------------------------------------------------------+
int OnInit()
{
//--- create timer
EventSetTimer(60);
//---
return(INIT_SUCCEEDED);
}
//+------------------------------------------------------------------+
//| Expert deinitialization function |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
{
//--- destroy timer
EventKillTimer();
}
//+------------------------------------------------------------------+
//| Expert tick function |
//+------------------------------------------------------------------+
void OnTick()
{
//---
}
//+------------------------------------------------------------------+
//| Timer function |
//+------------------------------------------------------------------+
void OnTimer()
{
//---
}
//+------------------------------------------------------------------+
void OnChartEvent(const int id,
const long &lparam,
const double &dparam,
const string &sparam)
{
if(id==CHARTEVENT_CLICK)
{
//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
Print("CTRL+CLICK");
ctrl_click=0; // reset
}
}
ctrl_click=0; // reset if not ctrl
}
}
//+------------------------------------------------------------------+
Ich denke schon.
Es ist aber etwas anders.