Quaisquer perguntas de recém-chegados sobre MQL4 e MQL5, ajuda e discussão sobre algoritmos e códigos - página 273
Você está perdendo oportunidades de negociação:
- Aplicativos de negociação gratuitos
- 8 000+ sinais para cópia
- Notícias econômicas para análise dos mercados financeiros
Registro
Login
Você concorda com a política do site e com os termos de uso
Se você não tem uma conta, por favor registre-se
int tip=OrderType();
if(OrderSelect(nomber,SELECT_BY_POS,MODE_HISTORY))
Já foi dito que a segunda linha deste fragmento contém um erro: Antes da função OrderType() ser chamada, a ordem deve ser selecionada usando a função OrderSelect().
Há um erro na linha 3: Mas existe uma ordem com o número 1? Se o número mínimo fosse 1, ou seja, a conta começa com 1, então o número máximo seria igual ao número (que haja 5 ordens no total: ordens 1, 2, 3, 4, 5). Mas as ordens são numeradas a partir de 0 - coloque o cursor sobre OrderHistoryTotal e pressione F1 para ver um exemplo. Então, qual é o número máximo de pedidos?
Anteriormente, você sugeriu dividir a data do mês por 7 e arredondamento, o que é feito na segunda tabela.
Eu não entendo seu algoritmo.
Agora aqui está o que estou pensando:
1. determinar o dia da semana do primeiro dia do mês.
2. Descubra quantos dias faltam para o final da semana (era quarta-feira (3) a segunda-feira 7-3 = 4).
3. O 5º dia é o início da segunda semana
4. então, no loop, estamos procurando uma semana, se o número estiver dentro da faixa de 5 + 7 * x a 5 + 7 * (x +1), onde x - número da semana menos um, então encontramos a semana
Mas é complicado, talvez haja uma maneira mais fácil...
Alexey, estamos falando de coisas diferentes. O problema não era determinar qual semana do mês é o número do mês, mas o primeiro dia da semana com este nome no mês. Estas são tarefas diferentes e, conseqüentemente, soluções diferentes.
Durante 63 anos eu ainda não consigo descobrir como calcular o número de semanas do mês. Por exemplo, na Rússia, a segunda-feira é considerada o primeiro dia da semana. Se o mês começa no domingo, então como você conta na segunda-feira? A segunda semana já começou? Ou o quê???? A questão é retórica, não há necessidade de iniciar uma polêmica sobre isso.
Alexei, estamos falando de coisas diferentes. O problema não era determinar em que semana do mês está o número do mês, mas se é o primeiro dia da semana com esse nome naquele mês. Estas são tarefas diferentes e, conseqüentemente, soluções diferentes.
Durante 63 anos eu ainda não entendo como contar o número da semana do mês. Digamos que na Rússia o primeiro dia da semana é segunda-feira. Se o mês começa no domingo, então como é contada a segunda-feira? A segunda semana já começou? Ou o quê???? A questão é retórica, não há necessidade de iniciar uma polêmica sobre isso.
Estou vendo. É uma pergunta definitiva para mim...
Alexei, estamos falando de coisas diferentes. O problema não era determinar em que semana do mês está o número do mês, mas se é o primeiro dia da semana com esse nome naquele mês. Estas são tarefas diferentes e, conseqüentemente, soluções diferentes.
Durante 63 anos eu ainda não consigo descobrir como calcular o número de semanas do mês. Por exemplo, na Rússia, a segunda-feira é considerada o primeiro dia da semana. Se o mês começa no domingo, então como você conta na segunda-feira? A segunda semana já começou? Ou o quê???? A questão é retórica, não há necessidade de iniciar uma polêmica sobre isso.
Já foi dito que a segunda linha deste fragmento contém um erro: Antes da função OrderType() ser chamada, a ordem deve ser selecionada usando a função OrderSelect().
Há um erro na linha 3: Mas existe uma ordem com o número 1? Se o número mínimo fosse 1, ou seja, a conta começa com 1, então o número máximo seria igual ao número (que haja 5 ordens no total: ordens 1, 2, 3, 4, 5). Mas as ordens são numeradas a partir de 0 - coloque o cursor sobre OrderHistoryTotal e pressione F1 para ver um exemplo. Então, qual é o número máximo de pedidos?
if (OrderSelect(1,SELECT_BY_POS,MODE_HISTORY))
int tip=OrderType();
Está correto agora?
if (OrderSelect(1,SELECT_BY_POS,MODE_HISTORY)) - так какой наибольший номер ордера?
int tip=OrderType();
e agora está certo?
escreva um script e depois que cada operador imprimir as informações + GetLastError() com Alert() - veja o script de exemplo acima
mas é melhor pegar o código de erro da variável _LastError para imprimi-lo, caso contrário você pode destruir a lógica com uma leve "impressão de depuração".
GetLastError() ao mesmo tempo faz uma coisa não óbvia para GetXXX() - muda seu código de erro interno de reinicialização de estado para 0.
somente para impressão é melhor tirar o código de erro da variável _LastError, caso contrário é possível destruir a lógica por uma "impressão de depuração" leve
GetLastError() ao mesmo tempo faz uma coisa não óbvia para GetXXX() - ele muda o estado interno, redefinindo o código de erro para 0.
bem, é uma questão de gosto - ou armazenar o código de erro em uma variável e reiniciar o erro ou armazená-lo em _LastError para uso posterior
aqui está o algoritmo acima para ler de baixo para cima