Portanto, se estou tentando negociar entre 23:00 e 01:00 ou qualquer período que passe da meia-noite, uso a função OR em vez da função AND para comparar, certo? (TimeCurrent() gt;= StartTime || TimeCurrent() lt; StopTime)
Portanto, se estou tentando negociar entre 23:00 e 01:00 ou qualquer período que passe da meia-noite, uso a função OR em vez da função AND para comparar, certo? (TimeCurrent() gt;= StartTime || TimeCurrent() lt; StopTime)
É aqui que geralmente é uma ideia melhor quebrar a lógica do tempo. Código inserido datetime StartTime = StrToTime(23:00); datetime StopTime = StrToTime(01:00); string TimeCheck = Fora dos Horários de Negociação; if(StartTime lt; StopTime TimeCurrent() gt;= StartTime TimeCurrent lt; StopTime) TimeCheck = Inside Trading Times; if(StartTime gt; StopTime (TimeCurrent() gt;= StartTime || TimeCurrent lt; StopTime) TimeCheck = Inside Trading Times; if(TimeCheck == Inside Trading Times) Order = OP_BUY;
Então, qual é o código para negociar apenas quando o horário estiver entre 23:00 e 01:00 todos os dias?
Não. Você parece estar perdendo o ponto. Para a EA, as 01h00 e as 23h00 acontecem no mesmo dia. O EA efetivamente ignora a meia-noite. Para compensar isso, você precisa verificar usando StrToTime para determinar se a hora de parada vem antes ou depois da hora de início e ajustar a lógica de acordo.
O código ainda funcionaria independentemente do dia? Isso significa que ele negocia todas as vezes entre 23:00 e 01:00?
23:00 e 01:00 seriam do mesmo dia (digamos 1º de janeiro) em vez de 1º de janeiro, 23:00 e 2 de janeiro, 01:00
Que problema posso enfrentar com a meia-noite? Teria problemas se estivesse tentando especificar um período de tempo entre 23:00 e 01:00? Assim? datetime TimeCheck1 = StrToTime(23:00); datetime TimeCheck2 = StrToTime(01:00); if (TimeCurrent() gt; TimeCheck1 TimeCurrent() lt; TimeCheck2 Buy1 gt; Buy2 Buy3 lt; Buy4) { Order = SIGNAL_BUY; }
Sim. No entanto, depois de fazer algo assim, certifique-se de que o horário especificado esteja no dia adequado. Você precisa ter certeza de lidar com a meia-noite corretamente.
Portanto, se eu quiser abrir uma ordem de compra com a condição de que o horário seja entre 19:00 e 19:30, devo usar o seguinte código, certo? datetime TimeCheck1 = StrToTime(19:00); datetime TimeCheck2 = StrToTime(19:30); if (TimeCurrent() gt; TimeCheck1 TimeCurrent() lt; TimeCheck2 Buy1 gt; Buy2 Buy3 lt; Buy4) { Order = SIGNAL_BUY; }
é aqui que você pode querer começar a usar conversões de string. datetime TimeCheck = StrToTime(12:34); a comparação TimeCheck com TimeCurrent()