Fragen von Anfängern MQL5 MT5 MetaTrader 5 - Seite 1126

 
Meine Frage ist, wenn mein EA auf dem Pfundbucks-Diagramm ist und ich möchte, dass es eine horizontale Linie aus dem Eurobucks-Diagramm zu sehen dies nicht funktioniert?
 
Aleksandr Egorov:
meine Frage ist, wenn mein EA auf dem GBP-Diagramm ist und ich möchte, dass es eine horizontale Linie aus dem EUR-Diagramm sehen dies nicht funktioniert?

Beachten Sie den ersten Parameter der Funktion

string  ObjectName( 
   long  chart_id,           // идентификатор графика 
   int   pos,                // номер в списке объектов 
   int   sub_window=-1,      // номер окна 
   int   type=-1             // тип объекта 
   );

Sie ist in allen Funktionen der Arbeit mit grafischen Objekten vorhanden.

Mit dem richtigen Bezeichner können Sie die Objekteigenschaften von jedem Diagramm aus leicht abrufen.

Документация по MQL5: Графические объекты / ObjectName
Документация по MQL5: Графические объекты / ObjectName
  • www.mql5.com
Функция использует синхронный вызов – это означает, что функция дожидается выполнения всех команд, которые были помещены в очередь графика перед её вызовом, и поэтому данная функция может быть затратной по времени. Нужно иметь это обстоятельство в виду...
 
Nun, lange ist die m5 usw. 0 aktuelle Tabelle, und String Sumbol wie?
 
Aleksandr Egorov:
die lange ist die m5 und tg 0 aktuellen Chart, aber die Zeichenfolge sumbol wie? ich brauche es auf das Pfund aus dem Diagramm des Euro vielleicht etwas, das ich nicht verstehe

Nein, keine Zeitrahmen - Sie benötigen eine Chart-ID:ChartID

Eine der Möglichkeiten: Führen Sie ein Skript auf dem Diagramm mit der Linie aus, das dieChartID ausgibt, dann können Sie von einem anderen Diagramm aus auf die Linieneigenschaft zugreifen. Wenn es sich zum Beispiel um eine horizontale Linie handelt, dann wird durchObjectGetDouble

 
Vladimir Karputov:

Nein, keine Zeitrahmen - Sie benötigen eine Chart-ID:ChartID

Eine der Möglichkeiten: Führen Sie in dem Diagramm mit der Linie das Skript aus, das dieChartID ausgibt, dann können Sie von einem anderen Diagramm aus auf die Linieneigenschaft zugreifen. Wenn es sich zum Beispiel um eine horizontale Linie handelt, dann können Sie mit ObjectGetDoubl

danke

 
Aleksandr Egorov:

danke

Es gibt noch eine andere Möglichkeit: Sie müssen nur den Namen des grafischen Objekts und den Typ kennen (Sie brauchen den Namen, um alle Grafiken zu durchsuchen, und den Typ, um genau das richtige Objekt zu finden) ...

 
Aleksandr Egorov:

danke

Variante #2: Name, Art des Objekts und das Fenster, in dem es gesucht werden soll, festlegen ("0" - im Hauptfenster). Die Suche wird in OnInit durchgeführt, und wenn das Objekt gefunden wird, speichern wir die Diagrammkennung in der Variablen m_obj_chart_id.

//+------------------------------------------------------------------+
//|                                    Object from another chart.mq5 |
//|                              Copyright © 2019, Vladimir Karputov |
//|                                           http://wmua.ru/slesar/ |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2019, Vladimir Karputov"
#property link      "http://wmua.ru/slesar/"
#property version   "1.00"
//--- input parameters
input string      InpObjName     = "Object Name";  // Object: Name
input ENUM_OBJECT InpObjType     = OBJ_HLINE;      // Object: Type
input int         InpObjSubWindow= 0;              // Object: Window Index
//---
long     m_obj_chart_id=-1;   // Object ChartID
//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
  {

//--- variables for chart ID
   long currChart,prevChart=ChartFirst();
   int i=0,limit=100;
   Print("ChartFirst =",ChartSymbol(prevChart)," ID =",prevChart);
   while(i<limit)// We have certainly not more than 100 open charts
     {
      currChart=ChartNext(prevChart); // Get the new chart ID by using the previous chart ID
      if(currChart<0)
         break;          // Have reached the end of the chart list
      int total=ObjectsTotal(currChart,InpObjSubWindow,InpObjType);
      for(int j=0; j<total; j++)
         if(ObjectName(currChart,j,InpObjSubWindow,InpObjType)==InpObjName)
           {
            m_obj_chart_id=currChart;
            break;
           }
      prevChart=currChart;// let's save the current chart ID for the ChartNext()
      i++;// Do not forget to increase the counter
     }
//---
   if(m_obj_chart_id==-1)
      return(INIT_FAILED);
   else
      Print("Object Name ",InpObjName," found on chart ",m_obj_chart_id);
//---
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
//---

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

  }
//+------------------------------------------------------------------+
 
Wenn ich Marktaufträge(TRADE_ACTION_DEAL) mit bestimmten Stop-Loss- und Take-Profit-Niveaus erteile, der Broker aber das Setzen von Aufträgen mit SL oder TP untersagt hat, wird der Auftrag dann storniert oder mit SL und TP Null gesetzt?
 
Vladimir Karputov:

Variante 2: Geben Sie den Namen, den Typ des Objekts und das Fenster an, in dem es gesucht werden soll ("0" - im Hauptfenster). Die Suche wird in OnInit durchgeführt, und wenn das Objekt gefunden wird, speichern wir die Diagrammkennung in der Variablen m_obj_chart_id.

Nochmals vielen Dank

 

Forum für Handel, automatisierte Handelssysteme und Strategietests

FAQ von Anfängern MQL5 MT5 MetaTrader 5

Vladimir Karputov, 2019.08.31 08:16


Und Ihr Fehler liegt in der Startpreisbildung:

//--- start work
   double start_price_ask=m_symbol.Ask()-ExtUpGap;
   double start_price_bid=m_symbol.Bid()+ExtDownGap;

Ich empfehle, den Startpreis separat für Stop und Limit Pending Orders zu machen.

Hallo Wladimir!

Bitte helfen Sie mir, den Startpreis des nachstehenden Skripts zu ändern:

//--- start work


   double start_price_ask=0.0;
   double start_price_bid=0.0;
   if(InpPending==stop)
     {
      start_price_ask=m_symbol.Ask()+ExtUpGap;
      start_price_bid=m_symbol.Bid()-ExtDownGap;
     }
   else
      if(InpPending==limit)
        {
         start_price_ask=m_symbol.Ask()-ExtUpGap;
         start_price_bid=m_symbol.Bid()+ExtDownGap;
        }

Das Skript sollte schwebende Orders nicht auf der Grundlage von Ask und Bid platzieren, sondern auf der Grundlage des Hochs und Tiefs des vorherigen Balkens (Candlestick).

Mit freundlichen Grüßen, Vladimir.

Grund der Beschwerde: