Fragen von Neueinsteigern zu MQL4 und MQL5, Hilfe und Diskussion über Algorithmen und Codes - Seite 1533

 
Алексей КоКоКо:

Können Sie mir sagen, wie ich die Dokumentation im Allgemeinen verstehen kann? Ich bin wirklich besorgt darüber, dass in den Beispielen selbst für ein einfaches grafisches Objekt wie Text ein Beispiel mit einem Haufen Code gezeigt wird und nirgendwo steht, welche Parameter obligatorisch sind und welche nicht. Um also einfach nur einen Text zu schreiben oder einen Trend zu setzen oder sogar die Puffer für einen Indikator zu verstehen, weiß man nicht, welche Mindestparameter eingegeben werden müssen, und man muss seinen Code kopieren und einfügen

Hallo, die erforderlichen Parameter für den Text sind Fensterindex, Koordinatenreferenz und der Text selbst, die anderen sind optional.

Es gibt zwei Arten von Objekten: OBJ_LABEL und OBJ_TEXT. Das erste Objekt ist an Fensterpixel gebunden, das zweite an Zeit und Preis im Chart.

Angenommen, wir benötigen eine Textbeschriftung, die mit Pixeln verknüpft ist, dann tun Sie dies:

   ObjectCreate(0,name,OBJ_LABEL,0,0,0); // создаём объект в текущем (нулевом окне)
   ObjectSetString(0,name,OBJPROP_TEXT,text); // указываем какой текст должен в нём отображаться
   ObjectSetString(0,name,OBJPROP_FONT,fontname); // назначаем шрифт например Verdana или Tahoma
   ObjectSetInteger(0,name,OBJPROP_FONTSIZE,fontsize); // назначаем размер шрифта
   ObjectSetInteger(0,name,OBJPROP_COLOR, text_color); // назначаем цвет шрифта
   ObjectSetInteger(0,name,OBJPROP_CORNER,text_corner); // указываем от какого угла окна отсчитывать пиксели
   ObjectSetInteger(0,name,OBJPROP_ANCHOR,text_anchor); // указываем как должен быть выровнен текст по центру или какому-то краю
   ObjectSetInteger(0,name,OBJPROP_XDISTANCE,XOFFSET); // указываем координату по горизонтали
   ObjectSetInteger(0,name,OBJPROP_YDISTANCE,YOFFSET); // указываем координату по вертикали
   ObjectSetInteger(0,name,OBJPROP_SELECTABLE,false); // указываем можно ли выделять и двигать метку мышкой или нельзя

dies ist fast minimaler Code, der die Textbeschriftung zeichnet

dasselbe für das OBJ_TEXT-Objekt, aber Sie müssen auch die Eigenschaften Preis und Zeit angeben:

   ObjectSetDouble(0,name,OBJPROP_PRICE,0,price);
   ObjectSetInteger(0,name,OBJPROP_TIME,0,time);



text_corner sollte einer der konstanten Werte sein:

ID

Beschreibung

ECKE_LINKS_OBEN

Zentrum der Koordinaten in der linken oberen Ecke des Diagramms

ECKE_LINKS_UNTEN

Zentrum der Koordinaten in der unteren linken Ecke der Karte

ECKE_RECHTS_UNTEN

Zentrum der Koordinaten in der unteren rechten Ecke der Karte

ECKE_RECHTS_OBEN

Zentrum der Koordinaten in der oberen rechten Ecke der Karte


Weitere Informationen finden Sie hier: https://www.mql5.com/ru/docs/constants/objectconstants/enum_basecorner#enum_base_corner




text_corner sollte einer der konstanten Werte sein:

Kennung

Beschreibung

ANKER_LINKS_OBEN

Verankerungspunkt in der oberen linken Ecke

ANCHOR_LEFT

Verankerungspunkt links in der Mitte

ANKER_LINKS_UNTEN

Verankerungspunkt in der linken unteren Ecke

ANCHOR_LOWER

Verankerungspunkt unter der Mitte

ANKER_RECHTS_UNTEN

Verankerungspunkt in der rechten unteren Ecke

ANCHOR_RIGHT

Verankerungspunkt rechts in der Mitte

ANKER_RECHTS_OBEN

Verankerungspunkt in der oberen rechten Ecke

ANCHOR_UPPER

Verankerungspunkt in der oberen Mitte

ANCHOR_CENTER

Verankerungspunkt genau in der Mitte des Objekts


Weitere Informationen finden Sie hier:https://www.mql5.com/ru/docs/constants/objectconstants/enum_basecorner



Sie können auch die Standardbibliothek einbinden #include <ChartObjects\ChartObject.mqh> und deren Klassen verwenden, aber das macht das Leben meiner Meinung nach nur komplizierter

 
transcendreamer:

Grüße, obligatorische Parameter für Text sind Fensterindex, Koordinatenbindung und Text selbst, andere sind optional.

Beachten Sie, dass es zwei Arten von Objekten gibt: OBJ_LABEL und OBJ_TEXT. Das erste ist an Fensterpixel gebunden, das zweite an Zeit und Preis im Chart.

Angenommen, wir benötigen eine Textbeschriftung, die mit Pixeln verknüpft ist, dann tun Sie dies:

dies ist fast minimaler Code, der die Textbeschriftung zeichnet

dasselbe für das OBJ_TEXT-Objekt, aber Sie müssen nur die Eigenschaften Preis und Zeit festlegen:


Gott segne Sie )Es geht nicht nur um den Text, sondern um viele Dinge, sogar um die Anzeigepuffer. Was ist in dem entfernten Wagen?)

 
Алексей КоКоКо:

Gott segne Sie )Es ist nicht nur der Text, es sind viele Dinge, auch die Indikatorpuffer. Warum werden Sie aus dem Wagen gestrichen?)

Ich habe wie immer aus dem Wagen gelöscht, weil ich paranoid war und die Chexisten mich nicht erwischt haben 😀 Ich habe keine Ahnung, was ich damit machen soll.

 
Artyom Trishkin:

Und die richtige Option ist, nun ja, sehr einfach...

Und was ist das? Warum schreibst du es nicht auf?

 
Hallo zusammen, ich habe in einem EA "starhour und stophour" eingefügt, um Aufträge zu einer bestimmten Zeit zu öffnen, aber ich habe nicht bedacht, dass der Auftrag, der zum Beispiel um 22:00 Uhr geöffnet wurde, nicht in der stophour (23:00 Uhr) geschlossen wird
Ich habe kein Indikatorsignal, um die Position vor und nach 23:00 Uhr zu schließen, es ist verboten, irgendwelche Entscheidungen zu treffen.

Bitte beraten Sie mich, wie ich den EA so gestalten kann, dass er geöffnete Positionen nach der Stophour (23:00 Uhr) schließen kann.
Oder schließen Sie einfach alle Stellen um 23:00 Uhr, damit sie nicht die ganze Nacht über besetzt sind.


Vielen Dank im Voraus
 
Eugen8519:
Hallo zusammen, ich habe in einem EA "starhour und stophour" eingefügt, um Aufträge zu einer bestimmten Zeit zu öffnen, aber ich habe nicht bedacht, dass ein Auftrag, der zum Beispiel um 22:00 Uhr geöffnet wurde, nicht in stophour(23:00) schließen wird
Ich habe kein Indikatorsignal, um die Position vor und nach 23:00 Uhr zu schließen, es ist verboten, irgendwelche Entscheidungen zu treffen.

Bitte beraten Sie mich, wie ich den EA so gestalten kann, dass er geöffnete Positionen nach der Stophour (23:00 Uhr) schließen kann.
Oder schließen Sie einfach alle Stellen um 23:00 Uhr, damit sie nicht die ganze Nacht über besetzt sind.


Vielen Dank im Voraus

"starhour und stophour" nur auf offene Aufträge anwenden

 
MakarFX:

"starhour" und "stophour" nur bei Eröffnungsaufträgen angeben

Das ist das Problem - es öffnet und schließt nur die Aufträge starthour->stophour
Und offene Aufträge werden nach der Stoppstunde nicht geschlossen.

Sie können nicht nach der Stophour handeln



Die globalen Parameter werden eingestellt

bool           UseTimeLimit = true;
int            startHour    = 15;
int            stopHour     = 23;
bool           YesStop=false;
input          ENUM_TIMEFRAMES Timeframe = PERIOD_CURRENT;



Und in OnTick

if(UseTimeLimit)
  {
    YesStop=true;
    MqlDateTime str1;
    TimeToStruct(TimeCurrent() , str1);
    if(str1.hour > startHour && str1.hour < stopHour)
       YesStop=false;
       if (YesStop)
       return;
  }
 
Eugen8519:
Das ist das Problem, es öffnet und schließt nur die Aufträge starthour->stophour
Und offene Aufträge werden nicht nach der Stoppuhr geschlossen.
Funktion "Abgeschlossene Aufträge anzeigen
 
Eugen8519:
Das ist das Problem, es öffnet und schließt nur die Aufträge starthour->stophour
Und offene Aufträge werden nicht nach der Stoppuhr geschlossen.

etwas wie dies

if(UseTimeLimit)
  {
    YesStop=true;
    MqlDateTime str1;
    TimeToStruct(TimeCurrent() , str1);
    if(str1.hour > startHour && str1.hour < stopHour)
       YesStop=false;
       if (YesStop)
       return;
  }
....
if(YesStop==false)
  {
   условие для открытия ордеров
  }
 
MakarFX:

etwas wie dies

So wird der Auftrag abgeschlossen



(EMA0[m_bar_current]<WMA0[m_bar_current] && EMA0[m_bar_current+1]>WMA0[m_bar_current+1]) //Buy
     {
      if(!RefreshRates())
         return;
      TimeBar=time_0;
      CLOSEORDER("Sell");
     }
//if(color_buffer[m_bar_current+1]<color_buffer[m_bar_current]) //Sell
   if(EMA0[m_bar_current]>WMA0[m_bar_current] && EMA0[m_bar_current+1]<WMA0[m_bar_current+1]) //Sell
     {
      if(!RefreshRates())
         return;
      TimeBar=time_0;
      CLOSEORDER("Buy");
     }


void CLOSEORDER(string ord)
  {
   for(int i=PositionsTotal()-1; i>=0; i--) // returns the number of open positions
      if(m_position.SelectByIndex(i))
         if(m_position.Symbol()==Symbol() && m_position.Magic()==m_magic)
           {
            if(m_position.PositionType()==POSITION_TYPE_BUY && ord=="Buy")
               m_trade.PositionClose(m_position.Ticket());  // Close Buy
            if(m_position.PositionType()==POSITION_TYPE_SELL && ord=="Sell")
               m_trade.PositionClose(m_position.Ticket()); // Close Sell
           }
  }
Grund der Beschwerde: