Quaisquer perguntas de recém-chegados sobre MQL4 e MQL5, ajuda e discussão sobre algoritmos e códigos - página 531
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
Compare a próxima barra, e se a seqüência for quebrada, reinicialize a bandeira e registre quantos estavam corretos, e continue no loop.
É suficiente descobrir que a barra está em alta e a próxima está em baixa, a próxima, se for a mesma que a anterior, você anota o valor e zera a bandeira. E assim por diante até o final.
Mas o primeiro pode não ser ousado.
mas o primeiro pode não ser um touro, mas não há como.
Aqui está uma variante, embora não muito correta, sempre contando de uma vela de baixa
Aqui está uma variante, embora não muito correta, sempre contando de uma vela de baixa
Obrigado. Se você ajustar este número e adicionar um, o resultado é correto.
É verificado se(i%2==0)?mas o primeiro pode não ser um touro, nem pensar.
Aqui está um exemplo de encontrar as mesmas velas e mudar a direção da corrente:
Agora onde a corrente continua, você pode contar o número de velas na corrente e salvar em uma lista, e onde a corrente muda para uma nova, iniciar uma nova contagem.
O número de velas em cada cadeia pode ser armazenado em uma lista ordenada. Então, ordenando a lista, é possível encontrar as seqüências máxima e mínima.
Obrigado. Se o número obtido for ao quadrado e um for adicionado, o resultado é correto.
É isso que estamos verificando se(i%2==0)?Se eu for um múltiplo de dois.
É o restante de i dividido por 2
Aqui o tamanho das variáveis locais é muito grande (mais de 512kb) durante a compilação.
Onde procurar e o que fazer? Há um conjunto de fios CArrayString na função, eu suspeito que possa ser um erro.
Eu o preencho usando o método Add(), depois faço Clear( ) e Shutdown() novamente. E então eu o preencho novamente com novos dados usando o método Add(). Neste caso, a matriz será preenchida com zero itens novamente?
Temos que remover tais membros das classes que já ocupam memória na fase de compilação. Estes dados serão alocados na memória da pilha, que é sempre muito pequena. A solução para este problema é alocar memória para os membros da classe que ocupam muita memória de forma dinâmica.
Por exemplo, se houver um membro da classe:
deve ser substituído por:
Precisamos remover das classes os membros que já ocupam memória na fase de compilação. Estes dados serão colocados na memória da pilha, que é sempre muito pequena. A solução para este problema é alocar memória para os membros da classe que ocupam muita memória de forma dinâmica.
Por exemplo, se houver um membro da classe:
então deve ser substituído por:
Obrigado. De alguma forma eu me livrei deste problema removendo a classe dos parâmetros em cada função. Em geral, foi possível rubricar este objeto de uma vez por todas.
Tenho outra pergunta sobre a classe CArray, mais especificamente sobre o CArrayObj. Existe um método Delete(), mas ele não move o elemento da matriz? Isto é, eu apago Delete(18), ele remove um item nesta posição e mais tarde, se eu quiser consultar o item por este índice, eu recebo um ponteiro inválido. Existe tal método que apague e mova elementos para que, neste caso, o 18º elemento seja o 19º após a eliminação?
Obrigado. De alguma forma eu me livrei deste problema removendo a classe dos parâmetros em cada uma das funções. Em geral, foi possível inicializar este objeto de uma vez por todas.
Tenho outra pergunta sobre a classe CArray, mais especificamente sobre o CArrayObj. Existe um método Delete(), mas ele não move um elemento da matriz? Isto é, eu apago Delete(18), ele remove um item nesta posição e mais tarde, se eu quiser consultar o item por este índice, eu recebo um ponteiro inválido. Existe tal método que apague e mova itens para que o 18º item seja o 19º após a eliminação?
Eu não trabalhei com a biblioteca padrão, mas de acordo com a ajuda, o método Delete() deve remover fisicamente o elemento, mudando o tamanho da matriz. Exceção: se o mecanismo de gerenciamento de memória estiver desativado. Por padrão, este mecanismo é ativado. O método FreeMode é usado para verificar o estado da bandeira de gerenciamento de memória.
De minha parte, eu recomendaria usar minhas próprias matrizes em MQL (embora em C++ eu mesmo use vetores e listas) e gerenciamento de memória, porque não vejo nenhuma conveniência ou vantagem particular na classe CArray. Eu excluo itens de matriz em minhas próprias matrizes muito rapidamente usando este método:
Sua única desvantagem é que não mantém a seqüência de itens de matriz. Ou seja, ele pode ser aplicado a todas as matrizes, exceto as ordenadas (ordenadas).
Olá, você poderia me dizer onde posso encontrar um roteiro que me permita colocar pedidos pendentes de compra e venda na MT4 de uma vez por um certo número de pips do preço atual, ou seja, não contar manualmente e talvez nem mesmo entrar na janela de pedidos? Não quero ir para a janela do pedido. Obrigado.
PS: talvez eu esteja perguntando algo errado, eu nunca usei scripts antes.
Por favor, explique-me o ponto -"Ordens de mercado não podem ser fechadas se seus valores StopLoss ou TakeProfit violarem o parâmetro FreezeLevel".
Isto significa literalmente que uma ordem de mercado não pode ser fechada se seu TakeProfit ou StopLoss não atingir o nível FreezeLevel? Eu simplesmente não entendo bem como uma ordem de mercado aberto pode ter paradas que violam as regras do StopLevel ou FreezeLevel? Afinal de contas, se as paradas erradas forem definidas, o servidor apenas dará um erro e nenhuma parada será definida.
Além disso, por favor, informe o que mais precisamos saber ao fechar uma ordem de mercado, quando um corretor utiliza o FreezeLevel?