Como saber se o mercado está fechado? (mql4) - página 5

 

Eu ainda não descobri como obter informações adequadas da "DayOfWeek". Ele dá o valor correto no dia em que o robô inicia e em alguns outros casos (às vezes). Parece-me que isso dá um valor correto quando abro pedidos. Se você não abrir nada, isso lhe dará o clima.

Eu resolvi o problema desta maneira:

...
int realDay=DayOfWeek();
int curHour=TimeHour(TimeLocal());
   while(!IsStopped())
      {
      if (TimeHour(TimeLocal())<curHour) realDay++; 
      curHour=TimeHour(TimeLocal());
      if (realDay==7) realDay=0;        
...     

Mas ainda não o testei )))) Deve funcionar.

 
winsight:

Eu ainda não descobri como obter informações adequadas da "DayOfWeek". Ele dá o valor correto no dia em que o robô inicia e em alguns outros casos (às vezes). Parece-me que isso dá um valor correto quando abro pedidos. Se você não abrir nada, isso lhe dará o clima.

Eu resolvi o problema desta maneira:

Mas eu ainda não o testei )))) Deve funcionar.

É mais fácil - use o TimeDayOfWeek:

int dayOfWeek = TimeDayOfWeek(TimeCurrent());
 
Ihor Herasko:
Desta forma, você obterá apenas o status de permissão de comércio do instrumento. Se o instrumento for negociado, você se tornará fiel a ele em qualquer dia da semana.

Alert(bool(MarketInfo(Symbol(),MODE_TRADEALLOWED));

falso

 
Vasyl Nosal:

Alert(bool(MarketInfo(Symbol(),MODE_TRADEALLOWED));

falso

Minha versão é a seguinte:

   Alert("Trade allowed by MarketInfo: ", bool(MarketInfo(Symbol(),MODE_TRADEALLOWED)));
   Alert("Trade allowed by IsTradeAllowed: ", bool(IsTradeAllowed()));
   Alert("Trade allowed by IsTradeAllowed 2-nd version: ", bool(IsTradeAllowed(Symbol(), TimeLocal())));

Resultado:

2015.12.20 16:41:21.196 Test EURUSD,H1: Alert: Trade allowed by IsTradeAllowed 2-nd version: false
2015.12.20 16:41:21.196 Test EURUSD,H1: Alert: Trade allowed by IsTradeAllowed: true
2015.12.20 16:41:21.196 Test EURUSD,H1: Alert: Trade allowed by MarketInfo: true

No meu computador a hora é GMT+2.

É por isso que eu não entendo como você conseguiu ser falso no primeiro caso. Talvez, você pegou um instrumento que, em princípio, não é comercializado.

As conclusões são as seguintes:

  1. A primeira e a segunda opções são essencialmente indenéticas. Eles apenas apontam para o fato de que a auto-comercialização para o instrumento está habilitada e há um fluxo de livre comércio.
  2. A terceira variante é exatamente o que precisamos. Ela permite conhecer a permissão para negociar em um instrumento, dado seu cronograma de trabalho.
 
Ihor Herasko:

Minha versão é esta:

Resultado:

No meu computador a hora é GMT+2.

Portanto, não está claro como você conseguiu se enganar na primeira opção. Talvez, você pegou um instrumento que, em princípio, não é comercializado.

As conclusões são as seguintes:

  1. A primeira e a segunda opções são essencialmente indenéticas. Eles apenas apontam para o fato de que a auto-comercialização para o instrumento está habilitada e há um fluxo de livre comércio.
  2. A terceira variante é exatamente o que precisamos. Ela permite conhecer a permissão para negociar em um instrumento no que diz respeito ao seu horário de trabalho.
EURUSD fxOpen
 
Vasyl Nosal:
EURUSD fxOpen

De fato, este corretor tem o resultado do roteiro acima:

2015.12.20 17:19:18.685 Test GBPUSD,H4: Alert: Trade allowed by IsTradeAllowed 2-nd version: false
2015.12.20 17:19:18.685 Test GBPUSD,H4: Alert: Trade allowed by IsTradeAllowed: false
2015.12.20 17:19:18.685 Test GBPUSD,H4: Alert: Trade allowed by MarketInfo: false

Começou a verificar outros corretores. Corretor G**X:

2015.12.20 17:18:14.339 Test EURUSD,M314: Alert: Trade allowed by IsTradeAllowed 2-nd version: false
2015.12.20 17:18:14.339 Test EURUSD,M314: Alert: Trade allowed by IsTradeAllowed: false
2015.12.20 17:18:14.339 Test EURUSD,M314: Alert: Trade allowed by MarketInfo: true

Corretor A****i:

2015.12.20 17:20:40.372 Test EURUSD,M15: Alert: Trade allowed by IsTradeAllowed 2-nd version: false
2015.12.20 17:20:40.372 Test EURUSD,M15: Alert: Trade allowed by IsTradeAllowed: true
2015.12.20 17:20:40.372 Test EURUSD,M15: Alert: Trade allowed by MarketInfo: true

Corretor I****a F****x:

2015.12.20 17:21:38.663 test GBPUSD,H1: Alert: Trade allowed by IsTradeAllowed 2-nd version: false
2015.12.20 17:21:38.663 test GBPUSD,H1: Alert: Trade allowed by IsTradeAllowed: false
2015.12.20 17:21:38.663 test GBPUSD,H1: Alert: Trade allowed by MarketInfo: false

Meu primeiro teste hoje foi em A*****l M*****s.

Assim, obtemos que nem todos os corretores têm o IsTradeAllowed (primeira versão) e MODE_TRADEALLOWED funcionando corretamente. E por outro lado, a segunda versão do IsTradeAllowed funciona corretamente em todos os lugares. Portanto, é melhor usá-lo.

 
Ihor Herasko:

De fato, este corretor tem o resultado do roteiro acima:

Começou a verificar outros corretores. Corretor G**X:

Corretor A****i:

Corretor I****a F****x:

Meu primeiro teste hoje foi em A*****l M*****s.

Assim, obtemos que nem todos os corretores têm o IsTradeAllowed (primeira versão) e MODE_TRADEALLOWED funcionando corretamente. E por outro lado, a segunda versão do IsTradeAllowed funciona corretamente em todos os lugares. Portanto, é melhor usá-lo.

E hoje

IsTradeAllowed(Símbolo(), TimeCurrent())

mostra-se covarde

A propósito, por que você tem hora local?

 
Vasyl Nosal:

E hoje

IsTradeAllowed(Símbolo(), TimeCurrent())

mostra covardemente

A propósito, por que você tem hora local?

Hoje é um feriado, por isso é difícil.
 
Alexey Busygin:
É um fim de semana de férias, por isso é difícil.
O fato é que nenhuma das características de reconhecimento está funcionando 100%.
 
Vasyl Nosal:
O fato é que nenhuma das funções de reconhecimento funciona 100%.
Em alguns casos, a resposta deve vir do servidor DC! E os CDs realmente não se importam com isso. É por isso que funciona de alguma forma.