Quaisquer perguntas de recém-chegados sobre MQL4 e MQL5, ajuda e discussão sobre algoritmos e códigos - página 271

 
Alexey Viktorov:

E depois há esta idéia.

Se você quiser a primeira sexta-feira, o número deve ser inferior a 8. Se a primeira sexta-feira do mês for sexta-feira, a próxima sexta-feira será a oitava. Assim, você pode facilmente recalcular a qualquer dia da semana e a qualquer dia do mês, segundo, terceiro...


//+------------------------------------------------------------------+
//| expert start function                                            |
//+------------------------------------------------------------------+
void start() {
  int bs=0;

  if (DayOfWeek()==5 && Minute()<5) {  Добавьте сюда пожалуйста 
    bs=GetSignal();
    if (Hour()==lHourOpenPos && bs>0) OpenPosition();
    if (Hour()==sHourOpenPos && bs<0) OpenPosition();
  }

  if (bLastBuy) {
    if (DayOfWeek()==lDayForClose && Hour()>=lHourClosePos) CloseAllPositions();
    TrailingStop=lTrailingStop;
    if (lUseTrailing) TrailingPositions();
  } else {
    if (DayOfWeek()==sDayForClose && Hour()>=sHourClosePos) CloseAllPositions();
    TrailingStop=sTrailingStop;
    if (sUseTrailing) TrailingPositions();
  }
}
 
Darirunu:

Não tenho nenhum desejo de me lembrar das antigas funções do mql4. Aqui está a segunda versão de trabalho do roteiro

/********************Script program start function********************/
void OnStart()
{
 MqlDateTime mqlDateTime;
 datetime arrDateTime[1];
 CopyTime(_Symbol, PERIOD_D1, 1, 1, arrDateTime);
 TimeToStruct(arrDateTime[0], mqlDateTime);
 if(mqlDateTime.day_of_week == FRIDAY && mqlDateTime.day < 8)
  {
   Print("Ура!!! Вчера была первая пятница");
   
  }
}/********************************************************************/
 
Alexey Viktorov:

Não tenho nenhum desejo de me lembrar das antigas funções do mql4. Aqui está a segunda versão de trabalho do roteiro


Como saber em que semana estamos?

 

É tudo clássico. Uma vez feita uma pergunta um pouco acima da média, o resultado é sempre o mesmo, mas obrigado.

 
Aleksey Vyazmikin:

Pergunto-me como você descobrirá em que semana o número é hoje.

Divida o número de hoje por 7 e arredonde para o número mais alto, independentemente do restante.

A última sexta-feira foi 11 dividida por 7, portanto 1 semana + 4 dias é a segunda semana. O número de terça-feira era 15 dividido por 7, então era 2 semanas + 1 dia, tornando-a a terceira semana. Certo?

Podemos fazer sem arredondamento. Se o restante da divisão for maior que zero, então temos a semana inteira mais 1. Certo?

 
Alexey Viktorov:

Divida o número de hoje por 7 e arredonde para o número mais alto, independentemente do restante.

A última sexta-feira foi 11 dividida por 7, portanto 1 semana + 4 dias é a segunda semana. O número da terça-feira é 15 dividido por 7, portanto são 2 semanas + 1 dia, portanto a semana 3. Certo?

Você pode passar sem arredondamento. Se o restante da divisão for maior que zero, então o número resultante de semanas completas mais 1. Certo?


Não é uma aula de matemática ou estou escrevendo no lugar errado?

 
Darirunu:

Em resumo, é um clássico. Você faz uma pergunta um pouco acima da média, o resultado é sempre o mesmo, mas obrigado.

O que isso tem a ver com os clássicos? Que ressentimentos? A lógica de seu código é incompreensível para mim, por que eu deveria tentar entendê-lo? A questão era.

Fórum sobre comércio, sistemas automatizados de comércio e testes estratégicos.

Qualquer pergunta para iniciantes em MQL4, ajuda e discussão sobre algoritmos e códigos

Darirunu, 2017.08.12 16:00

Tarde ...

Como escrever a condição no quad:se a primeira sexta-feira do mês foi em alta, e

Asegunda segunda-feira é de baixa, abrimos um comércio de venda.

Eu lhe mostrei como determinar a primeira sexta-feira. Em que dia você tem que contar, depende de você.

Diga-me por favor: por que você verifica as atas ao definir o dia da semana? Em seguida, você verifica as horas. Penso que é mais lógico determinar o dia da semana, depois dentro da condição cumprida verificar a hora, os minutos (se necessário), depois verificar em alta ou em baixa e decidir onde abrir.

Talvez seja melhor você obter um nível mais alto de programação, em vez de eu voltar ao mql3?

 
Darirunu:

Isto não é uma aula de matemática, é, ou estou escrevendo no lugar errado?

Olá... Como você pode ser um programador sem habilidades matemáticas acima da média??? Note que não estou falando de matemática avançada.

 
Alexey Viktorov:

Olá... Como você pode ser um programador sem habilidades matemáticas acima da média? Note que não estou falando de matemática superior.


Depois acrescente que é bom saber sobre trigonometria e redação. E um pouco de filosofia.

 
Alexey Viktorov:

Dividir o número de hoje por 7 e arredondar para o número mais alto, independentemente do restante.

A última sexta-feira foi 11 dividida por 7, portanto 1 semana + 4 dias é a segunda semana. O número da terça-feira é 15 dividido por 7, portanto são 2 semanas + 1 dia, portanto a semana 3. Certo?

Você pode fazer sem arredondamento. Se o restante da divisão for maior que zero, então o número resultante de semanas completas mais 1. Certo?


Estou tentando reproduzir o método que você sugere - onde estou errado?

1 Semana2 semanas3 semanas4 semanas5 semanas1 Semana2 semanas3 semanas4 semanas5 semanas
1 8 15 22 29 0 1 2 3 4
2 9 16 23 30 0 1 2 3 4
3 10 17 24 31 0 1 2 3 4
4 11 18 25 1 2 3 4
5 12 19 26 1 2 3 4
6 13 20 27 1 2 3 4
7 14 21 28 1 2 3 4
Razão: