시장이 언제 문을 닫는지 어떻게 알 수 있습니까? (mql4) - 페이지 3

 

그리고 이러한 모든 검사에 대한 실질적인 필요성은 무엇입니까?

예를 들어 Expert Advisor의 거래 허용 여부를 확인하는 이유는 무엇입니까? 누가 계산하고 있습니까? 사용자별 다운? 무역 허가 플래그는 터미널에 한 번만 설정됩니다. 매 틱마다 확인하는 이유는 무엇입니까? 아니면 n초마다 확인하시겠습니까? 고문이 할 일이 따로 있나요?

시장이 열려 있는지 확인하는 이유는 무엇입니까? 시장은 원할 때 열리나요? 아니면 오늘 16시부터 어떤 종목이 거래되고 내일은 14시부터 거래되는데 이런 난장판이 계속되는 건가요? 알려져 있고 절대 변경되지 않는 거래 일정으로 시장이 열려 있는 경우 모든 틱 또는 n초마다 확인하는 이유는 무엇입니까?

그리고 시장이 열려 있는지 이해하기 위해 거래 요청을 보내는 것에 대한 이 재미있는 팁은 무엇입니까? 웃는거 좋아하시는 분들은? 아니면 만족스러운 사용자를 위해?

틱 없음, 거래 없음.

 
abolk :

그리고 이러한 모든 점검에 대한 실질적인 필요성은 무엇입니까?

예를 들어 Expert Advisor의 거래 허용 여부를 확인하는 이유는 무엇입니까? 누가 계산하고 있습니까? 사용자별 다운? 무역 허가 플래그는 터미널에 한 번만 설정됩니다. 매 틱마다 확인하는 이유는 무엇입니까? 아니면 n초마다 확인하시겠습니까? 고문이 할 일이 따로 있나요?

시장이 열려 있는지 확인하는 이유는 무엇입니까? 시장은 원할 때 열리나요? 아니면 오늘 16시부터 어떤 종목이 거래되고, 내일은 14시부터 거래되는데 이런 난장판이 계속되는 건가요? 알려져 있고 절대 변경되지 않는 거래 일정으로 시장이 열려 있는 경우 모든 틱 또는 n초마다 확인하는 이유는 무엇입니까?

그리고 시장이 열려 있는지 이해하기 위해 거래 요청을 보내는 이 트릭은 무엇입니까?

틱 없음, 거래 없음.

작업이 다릅니다. 모든 사람을 대변하지는 않겠지만 하나의 EA에서 다양한 상품에 대한 주문을 시작하는 작업이 있었고 그 중 일부는 다른 거래 세션을 가졌습니다(우리는 계정에 사용할 수 있는 모든 상품 세트로 작업할 수 있는 기능에 대해 이야기하고 있습니다). .

따라서 모든 검사는 OnTick이 아니라 OnTimer에서 이루어졌습니다. 이전 페이지에서 내 버전을 설명했습니다. 원칙적으로는 일종의 수표 "틱 없음 - 거래 없음"입니다.

 
abolk :

... 시장이 원할 때 열립니다? 아니면 오늘 16시부터 어떤 종목이 거래되고, 내일은 14시부터 거래되는데 이런 난장판이 계속되는 건가요?

...

그것은 발생합니다 ... 휴일은 그곳에서 다릅니다 ... 다른 나라에서. 예를 들어 최근 "Amer President's Day"가 있습니다. Forex는 작동했지만 금과 은은 작동하지 않았습니다.

그리고 Forex 외에도 선물을 사용할 수 있는 경우 세션의 조기 마감, 한도 초과 시 종료 및 기타 트릭이 여기에서 발생합니다.

 
papaklass :

다음은 4개의 다른 옵션입니다.

 bool flag;
//-----------------------------------------------------------------------------+

bool RealSymbol( string str)
{
   return (MarketInfo(str, MODE_BID) != 0 );
} //----------------------------------------------------------------------------+
 
void init()
{
   flag = RealSymbol( Symbol ());
         
   return ;  
} //----------------------------------------------------------------------------+
 
void deinit()
{
   return ;
} //----------------------------------------------------------------------------+
 
void start()
{
   if (!flag)
   {
       return ;
   }
   
   //дальше Ваш рабочий код
     
   return ;  
} //----------------------------------------------------------------------------+

놀라운 옵션 - 가장 중요한 것은 시장이 열리기 전에 어드바이저를 시작하는 것입니다 - 끄지 않고 과부하를 일으키지 않고 기간을 변경하지 않으면 플래그가 항상 표시되기 때문에 어드바이저가 작동하지 않습니다. "아니오"상태

ps 팁을 위한 재미있는 스레드

PS2. 닫힌 시장에서 그들이 말할 때 특히 이상합니다.

MarketInfo( Symbol (), MODE_BID)

NULL을 제공합니다.

 

틱 사이의 지연을 확인하고 이를 기반으로 거래가 마감되었다는 결론을 내리는 것은 잘못된 결정입니다.

 
avtomat :

틱 사이의 지연을 확인하고 이를 기반으로 거래가 마감되었다는 결론을 내리는 것은 잘못된 결정입니다.

하지만:
1) "경매가 종료되었는지 여부"라는 질문에 대답하지 않고 "주어진 가격으로 거래를 열 수 있습니까?"라는 질문에 대답하는 경우(현재 상황에서)
2) 견적이 xx분보다 오래된 경우 서버가 주문을 열려고 할 때 견적을 반환할 것임을 미리 알 수 있습니다.
그러면 충분히 견딜 수 있습니다. 물론입니다.
 

MT5에 대해 이 문제에 대한 토론 있었습니다.

나에게 맞는 옵션은 SymbolInfoSessionTrade() 함수를 사용하여 거래 가능 여부를 결정하는 것입니다.


 //+------------------------------------------------------------------+
//|Открыта ли торговая сессия                                        |
//|                                                 Copyright,Sergeev|
//|                           https://login.mql5.com/ru/users/sergeev|                 
//+------------------------------------------------------------------+
bool IsTradeSessionOpen()
  {
   MqlDateTime _DateTime;
   datetime _TimeCurrent= TimeTradeServer (_DateTime);

// проверяем время торгов по инструменту
   datetime _TradeEnd=( datetime ) SymbolInfoInteger ( _Symbol , SYMBOL_EXPIRATION_TIME );
   if (_TimeCurrent>_TradeEnd && _TradeEnd> 0 ) return ( false );

   datetime _TradeStart=( datetime ) SymbolInfoInteger ( _Symbol , SYMBOL_START_TIME );
   if (_TimeCurrent<_TradeStart && _TradeStart> 0 ) return ( false );

// проверяем сессии инструмента
   datetime _DayStart=_TimeCurrent/( 60 * 60 * 24 ); _DayStart*=( 60 * 60 * 24 ); // начало текущего дня
   datetime _sec=_TimeCurrent-_DayStart; // число секунд от начала дня

   for ( int i= 0 ; i< 10 ; i++) // подразумеваем, что админ сделал не более 10 сессий в сутки
     {
       datetime _from,_to;
       if (! SymbolInfoSessionTrade ( _Symbol ,( ENUM_DAY_OF_WEEK )_DateTime.day_of_week,i,_from,_to)) break ; // данные сессии
       if (_sec>=_from && _sec<=_to) return ( true );
     }
   return ( false );
  }
Как узнать, что по выходным нет торговли?
Как узнать, что по выходным нет торговли?
  • www.mql5.com
Пытаюсь дать понять советнику, что по выходным дням торговать не нужно :). - - Категория: общее обсуждение
 
Kino :

어드바이저를 OnTimer() 작동 모드로 전환했습니다. 이제 시장이 닫힐 때 그는 이것을 이해하지 못하고 거래를 시도합니다. 일반적으로 그는 서버에 접속하고 자연스럽게 오류를 수신하고 로그 로그를 막습니다. GetLastError() = 시장이 마감되었습니다. 쉬는 날이나 시장이 닫힌 날을 확인하기 위한 다른 조건은 무엇입니까?

기간 = (밀리초 단위로 값을 직접 설정하십시오. 예를 들어 6시간 = 1000*60*60*6)

if(GetLastError()==132( 시장 마감 ) ) 휴면(지속시간);

 

SymbolInfoSessionTrade() 및 Quote로 실험을 한 결과 이러한 함수의 데이터는 실제와 거의 일치하며 경우에 따라 일치하지 않는 것으로 나타났습니다.

아마도 여러 수표의 조합이 거래가 종료되었는지 여부에 대한 질문에 대한 명확한 답을 줄 것입니까?

SymbolInfoSessionTrade - Документация на MQL4
  • docs.mql4.com
SymbolInfoSessionTrade - Документация на MQL4
 

와우, 텍스트가 너무 많습니다.

MarketInfo( Symbol() ,MODE_TRADEALLOWED)