expert advisor - verschiedene Fragen - Seite 20

 
#Stop Loss, Take Profit - Drags - Offen

Seit meinem letzten Kommentar habe ich begonnen, Forum und Artikel für Stop Loss und Take Profit - Object Drags zu recherchieren.
Ich habe gerade erst diesen Artikel gefunden MQL5 COOKBOOK: UMGANG MIT TYPISCHEN CHART-EREIGNISSEN
Aber es ist für MT5.

Bevor ich also anfange, ihn zu lesen oder diesen Artikel auszuprobieren, lassen Sie mich bitte wissen, ob dieser Artikel auch für MT4 nützlich ist?
Auch wenn es möglich ist, bitte teilen Sie mit mir gute Artikel für Objects Drags.

Vielen Dank im Voraus.
 
Ja, die Funktion OnChartEvent() ist für beide Sprachen identisch.
 
Marco vd Heijden:
Ja, das OnChartEvent() ist für beide Sprachen gleich.
Oh! Gut zu wissen, ich kann anfangen, es zu lesen.
Vielen Dank dafür.
 

Ich habe auch festgestellt, dass viele der Codes, die für MT5 geschrieben wurden, jetzt auch auf MT4 funktionieren.

Ich weiß, weil ich viele Dinge in der Vergangenheit versucht habe und Dinge, die vor einem Jahr nicht funktionierten, jetzt funktionieren, also zeigt dies, dass sie immer noch aktiv beide Sprachen entwickeln.

 
Marco vd Heijden:

Ich habe auch festgestellt, dass viele der Codes, die für MT5 geschrieben wurden, jetzt auch auf MT4 funktionieren.
Ich weiß, weil ich viele Dinge in der Vergangenheit versucht habe und Dinge, die vor einem Jahr nicht funktionierten, jetzt funktionieren, also zeigt dies, dass sie immer noch aktiv beide Sprachen entwickeln.

Schön, das zu wissen. Ich denke immer (/ Sorge) darüber, dass MT4 Sprache wird nicht bald verwenden. Danke Mann.
 
// I say Once ' Do not turn... ' for ' if ' operator - this is good.
if  ( Morning || Midnight )
{
    // Do not turn on light just for today...
}

// I say Twice ' Do not turn... ' for ' switch ' operator - Q: Can I say ' Once '?
switch ( Today )
{
    case    Morning  :    // Do not turn on light just for today...
    break;
    case    Midnight :    // Do not turn on light just for today...
    break;
}   //---switch Close
Vielen Dank im Voraus.
 

Ich habe schon Artikel gelesen und mir die Codes anderer Leute für 'CHARTEVENT_OBJECT_DRAG ' angeschaut, wie man es nutzen kann.
Aber leider macht das für mich keinen Sinn. Gerade jetzt bin ich denke, ich war meine Zeit für nur nutzlos Dinge verschwenden. Denn ihr Codestil unterscheidet sich wirklich von meinem.
(mein Code-Stil ist einfach - wie der Code-Stil der mql4-Dokumentation - den ich ein wenig mehr verstehe)

Nur meine Absicht, wenn ich Objekt ' Stop Loss, Take Profit, Pending Orders ', die mit diesem Objekt bewegen könnte ziehen. (Natürlich können alle diese Objekte separat sein)

Ich habe auch ein EA-Skript zum Ändern von Aufträgen ( sl, tp etc. ) gesehen - und es funktioniert ohne ' CHARTEVENT_OBJECT_DRAG '... Ich hoffe, Sie wissen, was ich meine.

Nun, ich bin wirklich brauchen Hilfe nur mit einfachen Beispiel für ' CHARTEVENT_OBJECT_DRAG ' mit HLine oder Trendline Objekt. Oder klare Erklärung oder einfach etwas gutes ( / deutlicher ) Kommentar.
Ich habe schon viel Zeit damit verbracht und recherchiere immer noch darüber. Ich hoffe ich bekomme bald eine Antwort.

Alles Gute für Sie.
Vielen Dank im Voraus.

 
// I say Once ' Do not turn... ' for ' if ' operator - this is good.
if  ( Morning || Midnight )
{
    // Do not turn on light just for today...
}

Dies wird wahr sein Morgen ODER Mitternacht

// I say Twice ' Do not turn... ' for ' switch ' operator - Q: Can I say ' Once '?
switch ( Today )
{
    case    Morning  :    // Do not turn on light just for today...
    break;
    case    Midnight :    // Do not turn on light just for today...
    break;
}   //---switch Close

Hier gibt es einen separaten Fall für Morgen und einen separaten Fall für Mitternacht.

Das sind also zwei verschiedene Dinge.

Max Enrik:

Ich habe schon Artikel gelesen und mir die Codes anderer Leute für 'CHARTEVENT_OBJECT_DRAG ' angeschaut, wie man sie verwenden kann.
Aber leider macht das für mich keinen Sinn. Gerade jetzt bin ich denke, ich war meine Zeit für nur nutzlose Dinge verschwenden. Denn ihr Codestil unterscheidet sich wirklich von meinem.
(mein Code-Stil ist einfach - wie der Code-Stil der mql4-Dokumentation - den ich ein wenig mehr verstehe)

Nur meine Absicht, wenn ich Objekt ' Stop Loss, Take Profit, Pending Orders ' ziehe, die sich mit diesem Objekt bewegen könnten. (Natürlich können alle diese Objekte separat sein)

Ich habe auch ein EA-Skript für die Änderung von Aufträgen ( sl, tp etc. ) gesehen - und es funktioniert ohne ' CHARTEVENT_OBJECT_DRAG '... Ich hoffe Sie wissen, was ich meine.

Nun, ich bin wirklich brauchen Hilfe nur mit einfachen Beispiel für ' CHARTEVENT_OBJECT_DRAG ' mit HLine oder Trendline Objekt. Oder klare Erklärung oder einfach etwas gutes ( / deutlicher ) Kommentar.
Ich habe schon viel Zeit damit verbracht und recherchiere immer noch darüber. Ich hoffe ich bekomme bald eine Antwort.

Alles Gute für Sie.
Vielen Dank im Voraus.


Sie können eine Linie ziehen, wenn

OBJPROP_SELECTABLE ==1
OBJPROP_SELECTED ==1

Beides ist richtig und man kann die Werte einfach mit \ einlesen.

ObjectGet Double(....

Anstelle von

ObjectSetDouble(....
Das ist nicht so schwer und kann sehr nützlich sein.
 
Marco vd Heijden:

Fast hatte ich keine Ahnung, wie ich den Code für Stop Loss und Take Profit Drags schreiben kann, als ich anfing, das zu tun, vielen Dank, Mann.
Jetzt habe ich das Gefühl, ich kann tun, was ich will, nach Ihrem großen Kommentar.

Markt geschlossen

Also, ich habe schon versucht und jetzt kann ich ' OBJPROP_PRICE ' bekommen, die ich will.
Wenn ich ziehe ' HLine ' Objekt und dann Print() aktualisiert einmal in einer Sekunde. Weil ich EventSetTimer( 1 ) verwende.

Aber ich brauche Print() wird nicht einmal in einer Sekunde aktualisiert. Ich möchte, dass Print() aktualisiert wird, nachdem ich aufgehört habe zu ziehen.
Wenn Sie mich verstehen, helfen Sie mir bitte oder geben Sie mir einen Rat.

Alles Gute für Sie.

 

Sie können also den Wert von OBJPROP_PRICE in einem Double speichern und dann die beiden Werte vergleichen.

Wenn sie sich unterscheiden, wissen Sie, dass das Ziehen begonnen wurde, und wenn sie wieder gleich sind, wissen Sie, dass das Ziehen beendet wurde.

//+------------------------------------------------------------------+
//|                                                   Drag Hline.mq4 |
//|      Copyright 2017, Marco vd Heijden, MetaQuotes Software Corp. |
//|                                             https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2017, Marco vd Heijden, MetaQuotes Software Corp."
#property link      "https://www.mql5.com"
#property version   "1.00"
#property strict

double price; // price variable;
bool drag;     // drag flag
//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
  {
//--- create timer
   EventSetTimer(1);
//--- create Hline
   ObjectCreate(0,"line",OBJ_HLINE,0,0,Ask);
//--- store value
   price=ObjectGetDouble(0,"line",OBJPROP_PRICE,0);
//---
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
//--- destroy timer
   EventKillTimer();

  }
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
  {
//---

  }
//+------------------------------------------------------------------+
//| Timer function                                                   |
//+------------------------------------------------------------------+
void OnTimer()
  {
//--- compare values
   if(price!=ObjectGetDouble(0,"line",OBJPROP_PRICE,0))
     {
      drag=1;                                          // set drag flag
      price=ObjectGetDouble(0,"line",OBJPROP_PRICE,0); //store new value
     }
   if(drag==1)
     {
      if(price==ObjectGetDouble(0,"line",OBJPROP_PRICE,0))
        {
         drag=0; //reset drag flag
         Alert(" New value set: ", DoubleToString(price));
        }
     }
  }
//+------------------------------------------------------------------+

Oder Sie könnten einen Zähler starten, sobald das Ziehen erkannt wurde. Es gibt viele Möglichkeiten, dies zu tun,