[ARQUIVO] Qualquer pergunta de novato, de modo a não desorganizar o fórum. Profissionais, não passem por aqui. Em nenhum lugar sem você - 3. - página 308
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
A solução é realmente original, devemos experimentá-la. Mas quando a matriz for reinicializada, os dados não serão perdidos devido à reinicialização?
Se você aumentar o tamanho da matriz, os dados inseridos anteriormente não serão perdidos. E as células "capturadas" (novas) conterão lixo de RAM. E se você encolher a matriz, os dados que estavam nas células encolhidas serão irremediavelmente perdidos. Este é o básico da programação.
Quanto tempo leva para que uma ordem MODE_TRADE_TRADE pendente se torne uma ordem MODE_HISTÓRIA?
Em pouco tempo. As ordens pendentes não são armazenadas no histórico.
Assim que for transformada em uma ordem de mercado e for fechada - então se tornará história, mas com um tipo de ordem de mercado.
Por exemplo:
Se havia OP_BUYSTOP, então ele foi convertido para OP_BUY. Após seu fechamento, ele será colocado na história.
MAS, após a conversão de OP_BUYSTOP para OP_BUY, o OP_BUYSTOP original não ficará na história.
Boa noite, por favor, avise. Há dois valores indicadores em barras diferentes. Como traçar uma linha através deles e como trabalhar com ele no indicador? Obrigado!
A linha entre eles pode ser traçada usando o objeto OBJ_TREND. A primeira coordenada é a hora e o preço da primeira barra, a segunda coordenada é a hora e o preço da segunda barra.
Função:
Espero que tudo esteja claro nele.
cl - cor do objeto, nm - nome do objeto, t1, p1 - coordenadas de origem, t2, p2 - coordenadas finais, st - estilo de linha, sz - tamanho.
Você também pode adicionar raio: 1 - raio, 0 - segmento. A última linha desta função define um segmento. Ao invés de 0 você pode colocar o nome do parâmetro a ser passado.
Quanto a como trabalhar com ele (esta linha) no indicador - você precisa saber o que precisa dele. Mas os dados sobre ela (a linha) podem ser obtidos usando a função padrão
ObjectGet("nome do objeto", propriedade do objeto requerido);
Você pode traçar uma linha entre eles usando o objeto OBJ_TREND. A primeira coordenada é a hora e o preço da primeira barra, a segunda coordenada é a hora e o preço da segunda barra.
Função:
Espero que tudo esteja claro nele.
cl - cor do objeto, nm - nome do objeto, t1, p1 - coordenadas de origem, t2, p2 - coordenadas finais, st - estilo de linha, sz - tamanho.
Você também pode adicionar raio: 1 - raio, 0 - segmento. A última linha desta função contém um segmento. Ao invés de 0 você pode colocar o nome do parâmetro a ser passado.
Quanto a como trabalhar com ele (esta linha) no indicador - você precisa saber o que precisa dele. No entanto, os dados sobre ela (a linha) podem ser obtidos usando a função padrão
ObjectGet("nome do objeto", a propriedade do objeto necessário);
Muito obrigado! Outra pergunta, se possível. Como trabalhar (preciso saber qual o valor que a tendência assume em uma determinada barra), como trabalhar a tendência na EA. Quero transferir uma parte do indicador para o Consultor Especialista (cálculos).
A solução é realmente original, devemos experimentá-la.
Vou citar apenas um pequeno texto do tutorial da Delphi. Não vai doer saber disso.
"Matrizes dinâmicas" são estruturas de dados dinâmicas, portanto o programa deve prever explicitamente a sua remoção da memória do computador quando você terminar de usá-las. O processo de remoção de variáveis dinâmicas desnecessárias da memória do computador é às vezes chamado de coleta de lixo".
Uma variante que funcionará na MQL4 é redimensionar uma matriz dinâmica para comprimento zero usando a função ArrayResize() https://docs.mql4.com/ru/array/ArrayResize quando o programa terminar de trabalhar com ela.
Acho que vou citar um pequeno trecho do tutorial da Delphi. É bom saber.
"Matrizes dinâmicas" são estruturas de dados dinâmicas, portanto o programa deve prever explicitamente a sua remoção da memória do computador quando você terminar de usá-las. O processo de remoção de variáveis dinâmicas desnecessárias da memória do computador é às vezes chamado de coleta de lixo".
Uma variante adequada para a linguagem MQL4 é redimensionar uma matriz dinâmica para comprimento zero usando a função ArrayResize() https://docs.mql4.com/ru/array/ArrayResize depois que você terminar de trabalhar com ela.
Isso é tudo verdade: limpar o lixo é uma boa regra de ouro.
Mas neste contexto, como determinar se devemos limpar o "lixo" agora ou vice-versa: não é lixo, mas dados necessários para os cálculos posteriores.
Como eu entendo, deinit() deve ser usado para limpar o lixo, mas... é executado não apenas quando o gráfico de um instrumento comercial é apagado e a EA é removida, mas também quando a TF é alterada. Neste caso, todos os dados acumulados para a TF serão perdidos e o Consultor Especialista começará a trabalhar novamente com uma matriz zero quando retornar ao cronograma anterior. O mesmo acontecerá se alterarmos qualquer um dos parâmetros da EA.
Acontece que, em algumas situações, a 'limpeza' é um processo lógico complexo, ao invés de simplesmente mudar o tamanho de uma matriz.
Muito obrigado! Outra pergunta, se me permitem. Como trabalhar(preciso saber qual o valor que a tendência assume em uma determinada barra), como trabalhar com a tendência na EA. Quero transferir uma parte do indicador para o Consultor Especialista (cálculo).
ObjectGetValueByShift() para ajudar você
E como você vai trabalhar com ele - só você sabe...