장 마감

 

개발자 여러분!

글쎄, 당신은 언제 거래소의 시간과 단말의 시간을 동기화합니까?

2017.01 . 13 10 : 00 : 03.969 Trades  'xxxxx': buy limit 2.00 ED- 6.17 at 1.0642
2017.01 . 13 10 : 00 : 03.969 Trades  'xxxxx': sell limit 1.00 ED- 6.17 at 1.0813
2017.01 . 13 10 : 00 : 03.975 Trades  'xxxxx': accepted buy limit 2.00 ED- 6.17 at 1.0642
2017.01 . 13 10 : 00 : 03.975 Trades  'xxxxx': accepted sell limit 1.00 ED- 6.17 at 1.0813
2017.01 . 13 10 : 00 : 03.978 Trades  'xxxxx': failed buy limit 2.00 ED- 6.17 at 1.0642 [Market closed]
2017.01 . 13 10 : 00 : 03.979 Trades  'xxxxx': failed sell limit 1.00 ED- 6.17 at 1.0813 [Market closed]
 
2017.01 . 13 10 : 00 : 03.210 Trades  'xxxxx': buy limit 1.00 MXI- 6.17 at 2230.15
2017.01 . 13 10 : 00 : 03.210 Trades  'xxxxx': sell limit 1.00 MXI- 6.17 at 2300.75
2017.01 . 13 10 : 00 : 03.216 Trades  'xxxxx': accepted buy limit 1.00 MXI- 6.17 at 2230.15
2017.01 . 13 10 : 00 : 03.218 Trades  'xxxxx': accepted sell limit 1.00 MXI- 6.17 at 2300.75
2017.01 . 13 10 : 00 : 03.219 Trades  'xxxxx': failed buy limit 1.00 MXI- 6.17 at 2230.15 [Market closed]
2017.01 . 13 10 : 00 : 03.220 Trades  'xxxxx': failed sell limit 1.00 MXI- 6.17 at 2300.75 [Market closed]

추가

주문이 전송되기 전에 거래 시간을 확인 합니다.

//+------------------------------------------------------------------+
//| Expert Check traiding time function                              |
//+------------------------------------------------------------------+
bool CheckTradingTime( MqlDateTime &tick_time)
{
   datetime lk_time = TimeCurrent (tick_time);
   if ( ( tick_time.day_of_week == int (FirstDay)) ||
       ( tick_time.day_of_week == int (SecondDay)))//выходные
  {
     return ( false );
  }
#ifdef DEBUG
   if ((tick_time.hour >= 0 ) && (tick_time.hour < 6 ))   // DEBUG 6-00
  {
     return ( false );
  }
#else
  
if ((tick_time.hour >= 0 ) && (tick_time.hour < 10 ))
  {
     return ( false );
  }
#endif
// 13 * 3600 + 59 * 60 + 30 = 50370 - 13:59:30
// 14 * 3600                = 50400 - 14:00:00
// 14 * 3600 + 30           = 50430 - 14:00:30
// 14 * 3600 + 60           = 50460 - 14:01:00

// 18 * 3600 + 44 * 60 + 30 = 67470 - 18:44:30
// 18 * 3600 + 45 * 60      = 67500 - 18:45:00
// 18 * 3600 + 45 * 60 + 30 = 67530 - 18:45:30
// 18 * 3600 + 46 * 60      = 67560 - 18:46:00

// 19 * 3600                = 68400 - 19:00:00
// 19 * 3600 + 60           = 68460 - 19:01:00  

// 23 * 3600 + 49 * 60 + 30 = 85770 - 23:49:30
// 23 * 3600 + 50 * 60      = 85800 - 23:50:00
// 23 * 3600 + 50 * 60 + 30 = 85830 - 23:50:30
// 23 * 3600 + 51 * 60      = 85860 - 23:51:00
//---
   ulong trade_time = tick_time.hour * 3600 + tick_time.min * 60 + tick_time.sec;  
//---                    //10:00:02                      
   if (((trade_time >= time_st_mon) && (trade_time < 50370 )) ||
      ((trade_time >= time_st_day) && (trade_time < 67470 )) ||
      ((trade_time >= time_st_evn) && (trade_time < 85770 )))
  {
     return ( true );
  }

return (false); 


}
input string           TimeStMon    = "10:00:02" ;         //Время начала утренней сессии

ulong time_st_mon = GetStringTime(TimeStMon);
ulong GetStringTime( const string a_string)
{
   int k = 0 ;
   string s_sec, s_min, s_hour;
   int str_size = StringLen (a_string);
//---
   if (str_size != 8 ) return ( 0 );  
//---  
   for ( int i = str_size - 1 ; i >= 0 ; i--)
  {
     ushort let_symbol = StringGetCharacter (a_string, i);
    
     if (let_symbol == ':')
    {
      k++;
       switch (k)
      {
         case 1 :
          s_sec = StringSubstr (a_string, i + 1 , str_size - i - 1 );
         break ;
         case 2 :
          s_min = StringSubstr (a_string, i + 1 , str_size - i - 4 );
          s_hour = StringSubstr (a_string, 0 , i);
         break ;
      }
//---
    }
  }
   if (k != 2 ) return ( 0 );
   ulong t_sec = ulong ( StringToInteger (s_sec));
   ulong t_min = ulong ( StringToInteger (s_min)) * 60 ;
   ulong t_hour = ulong ( StringToInteger (s_hour)) * 3600 ;
//---    
   return (t_hour + t_min + t_sec);
}
 
prostotrader :

개발자 여러분!

글쎄, 터미널 시간을 Exchange 시간과 언제 동기화합니까?

2017.01 . 13 10 : 00 : 03.969 Trades  'xxxxx': buy limit 2.00 ED- 6.17 at 1.0642
2017.01 . 13 10 : 00 : 03.969 Trades  'xxxxx': sell limit 1.00 ED- 6.17 at 1.0813
2017.01 . 13 10 : 00 : 03.975 Trades  'xxxxx': accepted buy limit 2.00 ED- 6.17 at 1.0642
2017.01 . 13 10 : 00 : 03.975 Trades  'xxxxx': accepted sell limit 1.00 ED- 6.17 at 1.0813
2017.01 . 13 10 : 00 : 03.978 Trades  'xxxxx': failed buy limit 2.00 ED- 6.17 at 1.0642 [Market closed]
2017.01 . 13 10 : 00 : 03.979 Trades  'xxxxx': failed sell limit 1.00 ED- 6.17 at 1.0813 [Market closed]

여기에서 세계 시간에 대해 신경 쓰지 않고 교환 또는 중개인을 설정 한 사람을 이해해야합니다. 이기적인 관심으로 또는 단순히 그들의 어리석음 때문에.

누구의 시간이 세계와 일치합니까?

 
Sergey Chalyshev :

여기에서 세계 시간에 대해 신경 쓰지 않고 교환 또는 중개인을 설정 한 사람을 이해해야합니다. 이기적인 관심으로 또는 단순히 그들의 어리석음 때문에.

누구의 시간이 세계와 일치합니까?

예, 신의 축복이 있습니다. 세계, 우리는 시간에 따라 모스크바 거래소에서 거래합니다.

그리고 책임은 브로커가 아니라 개발자입니다.

시간이 있으므로 마지막으로 알려진 견적의 시간은 다음과 같아야 합니다.

알려진 교환 시간(NOT SERVER) 및 TERMINAL

시간 현재

Возвращает последнее известное время сервера, время прихода последней котировки по одному из выбранных в "Обзоре рынка" символов.


TimeCurrent는 EXCHANGE가 아닌 SERVER의 시간을 반환합니다!

따라서 아마도 "다리가 자랍니다."

 
prostotrader :

예, 신의 축복이 있습니다. 세계, 우리는 시간에 따라 모스크바 거래소에서 거래합니다.

그리고 책임은 브로커가 아니라 개발자입니다.

시간이 있으므로 마지막으로 알려진 견적의 시간은 다음과 같아야 합니다.

알려진 교환 시간(NOT SERVER) 및 TERMINAL

시간 현재

Возвращает последнее известное время сервера, время прихода последней котировки по одному из выбранных в "Обзоре рынка" символов.


TimeCurrent는 EXCHANGE가 아닌 SERVER의 시간을 반환합니다!

따라서 아마도 "다리가 자랍니다."

그리고 서버가 모스크바에 있고 거래소가 브라질에 있다면 이것이 가능합니까?

 
Sergey Chalyshev :

그리고 서버가 모스크바에 있고 거래소가 브라질에 있다면 이것이 가능합니까?

서버가 어디에 있는지 상관하지 마십시오!

견적(또는 견적의 시간)은 현재 TRADING 시간입니다.

추가됨

이제 다음과 같은 일이 일어나고 있습니다

MT5 서버는 단순히 견적 자체의 시간에 관계없이 단말로 견적을 전송하고,

사전 시장이 있기 때문에 SERVER 시간을 견적 시간과 동기화하지 않고.

어드바이저 가 주문을 보내면 단말이 승인하고 서버는 무엇으로 시간을 불명확하게 확인하고

최대 3초의 오류로 주문이 거부되었습니다(내 컴퓨터 시간 기준) !!!!

 
prostotrader :

서버가 어디에 있는지 상관하지 마십시오!

견적(또는 견적의 시간)은 현재 TRADING 시간입니다.

추가됨

이제 다음과 같은 일이 일어나고 있습니다

MT5 서버는 단순히 견적 자체의 시간에 관계없이 단말로 견적을 전송하고,

사전 시장이 있기 때문에 SERVER 시간을 견적 시간과 동기화하지 않고.

EA가 주문을 보내면 단말이 승인하고 서버는 무엇으로 시간을 명확하게 확인하고

최대 3초의 오류로 주문을 거부합니다!!!!

견적(또는 견적의 시간)은 현재 TRADING 시간입니다.

주식 시간이다.

서버 시간은 터미널에 전혀 전송되지 않습니다: TimeLocal == TimeTradeServer .

 

나도이 문제가 있었다. 이 주제는 포럼에 여러 번 올라왔습니다. 다들 각자의 방식으로 이 문제를 해결하고 있지만, 나는 제대로 된 해결책을 보지 못했다. 제대로 하는 방법을 결정하고 개발자에게 수정을 강력히 요청하는 것이 필요합니다.

이제 시간을 가져오는 세 가지 기능이 있습니다(메모리가 제공되는 경우).

TimeLocal == TimeTradeServer , 컴퓨터 시간,

  TimeTradeServer == 쓸모없는 기능,

TimeCurrent == 마지막 견적 시간 .

교환 시간을 추가 하거나, TimeTradeServer 를 버리거나, 대신 현재 교환 시간을 전달하거나, TimeE xchange 유형 을 추가해야 합니다 .




 

그리고 시간에 구애받지 않고 터미널에서 특정 데이터를 수신하는 것이 가장 좋습니다.

- 새로운 신청서를 제출할 수 있으며,

- 주문을 삭제할 수 있습니다.

- 거래가 가능합니다.

어떤 이유에서인지 현재 터미널에는 그러한 기능이 없습니다.

 

Нужно добавить время биржы, выкинуть  TimeTradeServer  или вместо него передавать текущее время биржи , или добавить типа  TimeE xchange .

동일하게, 이것은 우리 교환을 위한 옵션이 아닙니다. 다른 사람들은 어떻게 되는지 모르겠습니다.

그들은 원할 때마다 경매를 켰습니다. 때로는 10:00, 때로는 10:03 또는 10:05입니다.

분명히 그들은 늦잠을 자고 커피를 마신 다음 켭니다))


 

세레자!

TimeCurrent에 대한 도움말 읽기 - 이것은 SERVER 시간 이라고 말합니다.

Возвращает последнее известное время сервера , время прихода последней котировки по одному из выбранных в "Обзоре рынка" символов.
사유: