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

 

Wie kann ich dem Stundenblock des Beraters Minuten hinzufügen?

//input parametrs
input uchar                InpStartHour            = 1;           // Start hour
input uchar                InpEndHour              = 23;           // End hour

//---------------------------

void OnTick()
  { 
   MqlDateTime STimeCurrent;
   TimeToStruct(TimeCurrent(),STimeCurrent);
  
   if(STimeCurrent.hour<InpStartHour || STimeCurrent.hour>InpEndHour)
      return;
   }

 
Vladimir Baskakov:

Wie kann ich dem Stundenblock eines EA Minuten hinzufügen?

Hoch Niedrig Strategie Zur Zeit 2:

Die Funktion bool TimeControl() ist für die Überprüfung der Uhrzeit zuständig. Sie kann in zwei Zuständen funktionieren: beide Daten innerhalb eines Tages oder Datumswechsel über einen Tag.

//--- input parameters
***
input bool     InpTimeControl       = true;        // Use time control
input uchar    InpStartHour         = 10;          // Start Hour 
input uchar    InpStartMinute       = 01;          // Start Minute 
input uchar    InpEndHour           = 15;          // End Hour 
input uchar    InpEndMinute         = 02;          // End Minute 
***
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
  {
   if(!TimeControl())
      return;
  }
//+------------------------------------------------------------------+
//| TimeControl                                                      |
//+------------------------------------------------------------------+
bool TimeControl(void)
  {
   if(!InpTimeControl)
      return(true);
   MqlDateTime STimeCurrent;
   datetime time_current=TimeCurrent();
   if(time_current==D'1970.01.01 00:00')
      return(false);
   TimeToStruct(time_current,STimeCurrent);
   if((InpStartHour*60*60+InpStartMinute*60)<(InpEndHour*60*60+InpEndMinute*60)) // intraday time interval
     {
/*
Example:
input uchar    InpStartHour      = 5;        // Start hour
input uchar    InpEndHour        = 10;       // End hour
0  1  2  3  4  5  6  7  8  9  10 11 12 13 14 15 16 17 18 19 20 21 22 23 0  1  2  3  4  5  6  7  8  9  10 11 12 13 14 15
_  _  _  _  _  +  +  +  +  +  _  _  _  _  _  _  _  _  _  _  _  _  _  _  _  _  _  _  _  +  +  +  +  +  _  _  _  _  _  _
*/
      if((STimeCurrent.hour*60*60+STimeCurrent.min*60>=InpStartHour*60*60+InpStartMinute*60) && 
         (STimeCurrent.hour*60*60+STimeCurrent.min*60<InpEndHour*60*60+InpEndMinute*60))
         return(true);
     }
   else if((InpStartHour*60*60+InpStartMinute*60)>(InpEndHour*60*60+InpEndMinute*60)) // time interval with the transition in a day
     {
/*
Example:
input uchar    InpStartHour      = 10;       // Start hour
input uchar    InpEndHour        = 5;        // End hour
0  1  2  3  4  5  6  7  8  9  10 11 12 13 14 15 16 17 18 19 20 21 22 23 0  1  2  3  4  5  6  7  8  9  10 11 12 13 14 15
_  _  _  _  _  _  _  _  _  _  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  _  _  _  _  _  +  +  +  +  +  +
*/
      if(STimeCurrent.hour*60*60+STimeCurrent.min*60>=InpStartHour*60*60+InpStartMinute*60 || 
         STimeCurrent.hour*60*60+STimeCurrent.min*60<InpEndHour*60*60+InpEndMinute*60)
         return(true);
     }
   else
      return(false);
//---
   return(false);
  }
 

Bitte beraten Sie mich,

In MQL5 muss ich die Hälfte einer Position schließen, aber ich muss prüfen, ob die Hälfte der Position weniger als das Mindestlot ist und dann das gesamte Volumen schließen, ist das richtig?

double volume=MathMax(PositionGetDouble(POSITION_VOLUME)/2,SymbolInfoDouble(_Symbol,SYMBOL_VOLUME_MIN)/AccountInfoInteger(ACCOUNT_LEVERAGE));
 
Evgeny Dyuka:

Bitte beraten Sie mich,

In MQL5 muss ich die Hälfte einer Position schließen, aber ich muss prüfen, ob die Hälfte der Position weniger als das Mindestlot ist, und dann das gesamte Volumen schließen, ist das richtig?

Vielleicht ist es einfacher, vor der Teilung zu prüfen, ob die Partie weniger als das Zweifache des Mindestwerts beträgt, so dass der Terminal nicht behelligt werden muss?

 

Ich kann den Test für den Marktplatz nicht bestehen, er gibt einen Fehler zurück, aber es gibt keinen Fehler im Bericht

Was ist zu tun?


 
Evgeny Dyuka:

Ich kann den Test für den Marktplatz nicht bestehen, er gibt einen Fehler zurück, aber es gibt keinen Fehler im Bericht

Was ist zu tun?


Bitte versuchen Sie es später noch einmal.
 

Wie ermittle ich den Schlusskurs eines Auftrags (eines Geschäfts, einer Position - ganz gleich, was)?

Für Aufträge ist nur ORDER_PRICE_OPEN verfügbar, ORDER_PRICE_CLOSE jedoch nicht.

Die Positionen haben nur POSITION_PRICE_OPEN.

Die Berufe haben überhaupt nichts Abstraktes an sich: DEAL_PRICE.

Ich habe das Forum gegoogelt, aber nicht gefunden.

 
secret:

Wie ermittle ich den Schlusskurs eines Auftrags (eines Geschäfts, einer Position - ganz egal)?

Für Aufträge ist nur ORDER_PRICE_OPEN verfügbar, ORDER_PRICE_CLOSE jedoch nicht.

Die Positionen haben nur POSITION_PRICE_OPEN.

Die Berufe haben überhaupt nichts Abstraktes an sich: DEAL_PRICE.

Ich habe das Forum durchsucht, aber nichts gefunden.

Um das Verständnis und die Arbeit in MQL5 zu erleichtern:

1. ***

2. Wenn Sie einen Schlusskurs benötigen, kommen Sie nicht umhin, auf den Handelsverlauf zuzugreifen. DerHistorySelect ist für die Abfrage der Handelshistorie zuständig

3. Ein Beispiel für die Arbeit mit der Historie, bei der die Informationen entweder in einer Datei oder auf der Registerkarte "Experten" ausgegeben werden, finden Sie im CodeHistorie Deals and Orders

Um zu verstehen, worum es hier geht, müssen Sie wissen

ENUM_DEAL_ENTRY-Richtung des Handels - Eintritt in den Markt, Austritt aus dem Markt oder Umkehrung

ENUM_DEAL_ENTRY

Kennung

Beschreibung

DEAL_ENTRY_IN

Eintritt in den Markt

DEAL_ENTRY_OUT

Marktaustritt

DEAL_ENTRY_INOUT

Kehrtwende

DEAL_ENTRY_OUT_BY

Gegenposition schließen


ENUM_DEAL_TYPE-Art des Geschäfts

ENUM_DEAL_TYPE

Kennung

Beschreibung

DEAL_TYPE_BUY

Kaufen

DEAL_TYPE_SELLVerkaufen

***



Dies sind die Grundlagen.

 
Vladimir Karputov:

Danke für die Antwort, ich habe mir sowohl die Dokumentation als auch Ihr Beispiel angesehen, aber ich habe immer noch nicht gefunden, wie man einen Parameter ähnlich OrderClosePrice() in MT4 erhält.

 
secret:

Vielen Dank für die Antwort, ich habe mir sowohl die Dokumentation als auch Ihr Beispiel angesehen, konnte aber immer noch nicht herausfinden, wie man einen ähnlichen Parameter wie OrderClosePrice() in MT4 erhält.

alternativhttps://www.mql5.com/ru/code/16006 öffnen.

und sehen Sie sich die Implementierung von @fxsaber an

oder schließen Sie einfach die oben genannte Bibliothek an und übertragen Sie den Code von MT4 auf MT5. In 99% der Fälle müssen Sie nichts ändern, alles wird genauso funktionieren wie in MT4

MT4Orders
MT4Orders
  • www.mql5.com
Данная библиотека позволяет работать с ордерами в MQL5 (MT5-hedge) точно так же, как в MQL4. Т.е. ордерная языковая система (ОЯС) становится идентичной MQL4. При этом сохраняется возможность параллельно использовать MQL5-ордерную систему. В частности, стандартная MQL5-библиотека будет продолжать полноценно работать. Выбор между ордерными...
Grund der Beschwerde: