Mql5 dilinin özellikleri, incelikleri ve çalışma yöntemleri - sayfa 195

 
// Возвращает скорректированный ORDER_REASON.
ENUM_ORDER_REASON GetOrderReason( const ulong Ticket )
{
  ENUM_ORDER_REASON Reason = ORDER_REASON_CLIENT;
    
  if (HistorySelectOrder(Ticket)) // https://www.mql5.com/ru/forum/170952/page186#comment_18099882
  {
    Reason = HistoryOrderGetInteger(Ticket, ORDER_REASON);
    
    if ((HistoryOrderGetInteger(Ticket, ORDER_TYPE) <= ORDER_TYPE_SELL) &&
        (Reason != ORDER_REASON_SL) && (Reason != ORDER_REASON_TP))
    {
      string PartComment = HistoryOrderGetString(Ticket, ORDER_COMMENT);

      if (StringLen(PartComment) > 3)
      {      
        PartComment = ::StringSubstr(PartComment, 0, 3);
        
        if (PartComment == "[tp")
          Reason = ORDER_REASON_TP;
        else if (PartComment == "[sl")
          Reason = ORDER_REASON_SL;      
      }
    }
  }
  
  return(Reason);
}
 
fxsaber :

Bir zamanlar sunucu zamanının GMT ofsetini belirlemek için bir yol önerildi . Her zaman tam olarak çalışmaz.

Aşağıda, tam sürüm gibi görünüyor.


 //+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
int TimeServerGMTOffset()
  {
   return ( int )( TimeGMT ()- TimeTradeServer ());
  }
//+------------------------------------------------------------------+
 

İşlem geçmişi, REDDEDİLDİ durumundaki piyasa emirleriyle dolu olabilir. Kural olarak, bunlar teikidir.

Bazı sunucularda, bu tür piyasa emirlerinin reddedilme gibi bir özelliği vardır: durum farklıdır - İPTAL.

 
Bu bir hata mı yoksa dizeden zamana dönüştürme özelliğine sahip bir özellik mi?
 Print (( datetime ) "12:34" ); //    Результат: 2021.01.15 12:34:00 . Ожидалось: 1970.01.01 12:34:00.

// Выкручивание.
Print ((( datetime ) "12:34" ) % ( 24 * 3600 )); //    Результат: 1970.01.01 12:34:00.
 
Bu parça derleme zamanında sabit mi oluyor?
StrDate = StringSubstr (StrDate, StringLen (StrDate) - StringLen ( "00:00:00 - 00:00:00" ) );
 
fxsaber :
Bu bir hata mı yoksa dizeden zamana dönüştürmeye sahip bir özellik mi?

Her zaman böyle olmuştur. Ama ben biraz farklı bir şey yapardım...

 Print ((( datetime ) "12:34" ) % PeriodSeconds ( PERIOD_D1 ) ; //    Результат: 1970.01.01 12:34:00.

Ve bu sefer sadece yazdırırsanız, bunu yapmanız yeterlidir.

   Print ( TimeToString ( TimeCurrent (), TIME_SECONDS ));
//Результат 
//2021.01.15 18:46:12.938       00 (EURRUB_TOD,H1)      18:31:18
 
Alexey Viktorov :

Her zaman böyle olmuştur.

Sonra ilginç bir sonuç.

 Print ( ( datetime ) "" ); // Текущая дата.

Kısa ve şaşırtıcı. Çünkü derleyici sabit olarak görüleni sabite dönüştürmez.

 
fxsaber :

Sonra ilginç bir sonuç.

Kısa ve şaşırtıcı. Çünkü derleyici sabit olarak görüleni sabite dönüştürmez.

Boş dize geçerli tarih mi?

not; Şaşırtıcı… Gerçekten şu anki tarih, ancak saat 1:00
 
fxsaber :

Sonra ilginç bir sonuç.

Kısa ve şaşırtıcı. Çünkü derleyici sabit olarak görüleni sabite dönüştürmez.

TimeCurrent veya TimeLocal ikameleri ortaya çıkıyor mu? yukarı: olmadığını görüyorum)

Bazı dillerde bir tarih türünün oluşturulmasının onu sistem saatiyle otomatik olarak başlattığını hatırlıyorum.

Документация по MQL5: Дата и время / TimeCurrent
Документация по MQL5: Дата и время / TimeCurrent
  • www.mql5.com
TimeCurrent - Дата и время - Справочник MQL5 - Справочник по языку алгоритмического/автоматического трейдинга для MetaTrader 5
 
Alexey Viktorov :

Geçerli tarih ancak saat 1:00

Saatin nereden geldiğine dair bir varsayım yok (aynısına sahibim). Muhtemelen saat dilimine bağlı.


Yani artık ilginç değil.

 Print (( datetime ) "00:00" ); // Текущая дата.