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
12. Obter/definir programaticamente os limites de valor docontrole deslizante e docampo com botões (_V_MIN, _V_MAX, _V_STEP, _DIGITS).
1. vamos abrir uma janela com elementos com os parâmetros acima:
2. Vamos escrever os valores de _V_MIN, _V_MAX, _V_STEP, _DIGITS e enviá-los para o registro:
Resultado: os valores das propriedades dos parâmetros do controle deslizante são registrados.
//---------------------------------------------------------------------------------------------------------------------------------------
3. Vamos repetir a operação com o campo com botões. Ao contrário do controle deslizante, o campo tem outros limites numéricos e seu tipo de valor é duplo.
Resultado:os valores das propriedades de parâmetro do campo com botões são exibidos no registro.
//---------------------------------------------------------------------------------------------------------------------------------------
4. Defina outros limites do intervalo do controle deslizante (testado pela primeira vez, o resultado é desconhecido).
Resultado: *Encontrado umproblema com o intervalo em números negativos (correção na próxima versão).
Vamos verificar com limites de intervalo positivos:
Resultado: os limites do intervalo foram alterados com sucesso.
Ponto principal: O intervalo do controle deslizante pode ser alterado usando sua função.
**Importante:você não pode alterar retroativamente o tipo de valor do parâmetro de int para double ou vice-versa.
//-------------------------------------------------------------------------------------------------
Vamos realizar um experimento semelhante com o campo de entrada:
Resultado: Funciona como planejado. O campo com botões aceita o intervalo e a etapa especificados. Se o intervalo for excedido, ele relatará um erro no registro.
//--------------------------------------------------------------------------------------------------
5. Por fim, vamos definir o value_DIGITS para o campo com botões (o controle deslizante não funcionará porque seu tipo de parâmetro é int):
Resultado:
Resultados:
Isso conclui este tópico.
13. Consultando o estado dos elementos _GET_STATE.
Muitas vezes, há situações em que é necessário obter programaticamente o estado de um ou outro elemento da interface. Para resolver esse problema, foi criado o identificador _GET_STATE.
//--------------------------------------------------------------------------------------------------------------------
*Importante:na função request_GET_STATE, a função retorna o índice do estado atual do elemento.
//--------------------------------------------------------------------------------------------------------------------
A imagem abaixo mostra a lista de estados do elemento.
1. identificadores de estado :
(*napróxima versão, o prefixo v_ será substituído pelo prefixo s_)
Saída de índices para o registro:
Vamos testar a consulta e a recuperação de estados de elementos:
1. abra a janela e obtenha o estado inicial do botão "Iniciar":
Resultado: é obtido o valor 15 correspondente ao estado v_NEUTRAL_STATE.
2. Vamos registrar os estados do botão quando ele for pressionado e liberado:
Para fazer isso:
Resultado: no evento pressionado/liberado, o índice do estado atual é impresso no registro.
Lembrete:
//----------------------------------------------------------------------------------------------------------------
3. Vamos repetir a consulta com a caixa de seleção.
1. Vamos obter o estado da caixa de seleção no evento de abertura da janela:
Resultado: o valor 15 é obtido, correspondendo ao estado neutro v_NEUTRAL_STATE (onde está a caixa de seleção).
2. Em seguida, vamos consultar os estados da caixa de seleção no evento de pressionar e liberar.
Para fazer isso:
Resultado: obtemos os valores 66 (v_NEUTRAL_HIGHLIGHTED) e 67 (v_ACTIVATED_HIGHLIGHTED), que significam o estado neutro destacado e o estado pressionado destacado.
//-----------------------------------------------------------------------------------------------
Isso conclui a primeira parte do tópico.
Na segunda parte, retornaremos os estados da lista suspensa D_LIST, do controle deslizante H_SLIDER e dos campos de entrada S_EDIT e EDIT.
13. Solicitação de status _GET_STATE.
Parte 2: Obtendo os estados dos elementos D_LIST, H_SLIDER, EDIT, S_EDIT.
Na última parte, vimos como retornar programaticamente os estados do botão BUTTON e da caixa de seleção CHECKBOX . A consulta _GET_STATE foi usada e a lista de nomes de estados retornados pelas funções foi mostrada. Há seis nomes no total, e cada um começa com o prefixo v_. (Uma abreviação de value, que será substituída por s_ - uma abreviação de state).
Lembre-se dos índices de estado:
Nesse caso, os números de índice específicos não são importantes. Quando o usuário precisa colocar um determinado estado em uma condição, ele usa um identificador.
Exemplo 1:
Exemplo 2:
//-----------------------------------------------------------------------------------------------------------------
*Muito importante:
Vou explicar a diferença essencial entre os estados v_NEUTRAL_STATE e v_NEUTRAL_HIGHLIGHTED, e entre v_ACTIVATED_STATE e v_ACTIVATED_HIGHLIGHTED:
v_NEUTRAL_STATE - это нейтральное состояние в котором элемент находится неопределенное время. v_NEUTRAL_HIGHLIGHTED - это нейтральное состояние в которое элемент перешел ТОЛЬКО ЧТО, после отжатия пользователя. Поэтому элемент подсвечен - HIGHLIGHTED.o mesmo se aplica ao estado ativado:
v_ACTIVATED_STATE - это активированное состояние в котором элемент находится неопределенное время. v_ACTIVATED_HIGHLIGHTED - это активированное состояние в которое элемент перешел ТОЛЬКО ЧТО, после нажатия пользователя. Поэтому элемент подсвечен - HIGHLIGHTED.Essa diferença faz uma grande diferença.
Atualmente, o botão e alguns outros elementos retornam apenas v_NEUTRAL_STATE e v_ACTIVATED_STATE, e não retornam estados REALÇADOS como uma caixa de seleção. Isso significa que o usuário não tem como saber se os itens foram clicados/desclocados agora ou quando, há um tempo indefinido. No entanto, o usuário pode capturar o momento em que eles foram pressionados no arquivo da API. Sim, mas esse recurso ainda não está disponível no restante do programa. Na próxima versão, o retorno de estado em DESTAQUE será adicionado a todos os elementos interativos. Dessa forma, de qualquer lugar do programa, o usuário poderá saber se um elemento acabou de ser pressionado/despressurizado ou se está em seu estado há muito tempo.
//----------------------------------------------------------------------------------------------------------
Vamos passar para a parte prática:
1. abra as janelas:
2. Vamos obter os estados dos elementos:
Resultado: todos os elementos do cnome D_LISTtêm o índice de estado 15 (estado neutro v_NEUTRAL_STATE). D_LIST retornou um erro (-1).
Motivo: o retorno dos estados desse elemento não está especificado na função central. Defeito técnico.Ele será corrigido na próxima versão.
Como a função D_LIST ainda não retorna o índice de estado, vamos nos concentrar em três itens cujos estados foram recebidos com êxito: EDIT , S_EDIT e H_SLIDER.
O que verificar:
Acabamos de verificar que as funções de elemento EDIT, S_EDIT e H_SLIDER retornam um índice do estado neutro quando a janela é aberta. Resta verificar os outros estados. Como esses tipos de elementos, em teoria, só podem estar nos estados neutro, bloqueado e realçado (ao contrário dos botões e caixas de seleção, que têm mais estados), temos que verificar os dois estados possíveis a seguir: bloqueado e realçado. Há também um grupo de estados"sob o cursor", que não quero adicionar ainda para evitar confusão. Nas próximas versões, criarei um prefixo especial que abre uma lista individual de possíveis estados de cada tipo de elemento. Isso facilitará o trabalho programático.
Como verificaremos o retorno dos estados bloqueados e destacadosEDIT, S_EDIT e H_SLIDER:
1. Localize a caixa de seleção "Set an option" (Definir uma opção) no arquivo de API e escreva o bloqueio/desbloqueio dos elementosEDIT, S_EDIT e H_SLIDER em seu caso.Em seguida, produza os estados por meio de Print().
Resultado:
//--------------------------------------------------------------------------------------------------
2. Segunda tarefa:
Primeiros passos:
Resultado:
//-----------------------------------------------------------------------------------------------------
Resultados:
Em geral, os resultados podem ser avaliados como satisfatórios. Os elementos retornam índices de estados neutros e bloqueados conforme pretendido. No entanto, há algumas deficiências:
Conclusões:
Potencialmente, é possível adicionar novos estados de elementos. Por exemplo, Neutro apontado e Ativado apontado ( neutro sob o cursor e ativado sob o cursor), mas há uma questão de praticidade e a necessidade real do usuário de ter esses recursos. Até que tais requisitos não sejam recebidos, não adicionarei novos estados.
Esse é o fim deste tópico.
Mais adiante, nos tópicos a seguir.
Passei a última semana pesquisando como escrever uma interface usando o WinForm e incorporá-la aos gráficos do MT5. Hoje, finalmente, consegui fazer isso.
Uma lista geral de tópicos a serem considerados:
1. orientação na lista do intellisense e seleção da função da janela correta.
2. Abertura e fechamento de janelas de forma programática.
3. abertura de uma lista de elementos de janela disponíveis programaticamente.
4. abertura de uma lista de propriedades de elementos individuais.
5. Analisar o nome do elemento e a função do wrapper da janela.
6. retorno do valor de um parâmetro de elemento para uma variável de seu tipo.
7. Definir valores para parâmetros de elementos de tipos diferentes.
8. Retorno, alteração e encaminhamento de valores entre parâmetros de diferentes elementos. Considere diferentes tipos de elementos e valores e teste o encaminhamento entre diferentes tipos de elementos em diferentes janelas.
9. Retornar o valor anterior (_V_LAST). Quando e para quais casos o último valor é necessário (não confundir com o valor atual).
10. Teste de configuração dos estados ON, OFF, LOCK_ON, LOCK_OFF, LOCK, UNLOCK para diferentes tipos de elementos.
11. Teste de vinculação e sincronização de valores variáveis de elementos: por exemplo, campo de entrada com botões e controle deslizante. Assim, quando o valor de um elemento (manual ou de software) for alterado, o valor do segundo elemento será alterado de acordo.
12. teste de obtenção/definição de software dos limites de intervalo do controle deslizante e do campo com botões (propriedades _V_MIN, _V_MAX, _V_STEP, _DIGITS).
13. Teste da operação da consulta de status do item (_GET_STATE).
14. Vinculação das cores do texto e da borda aos limites espaçados dos valores.
15. Orientação no arquivo API.
16.implementação da lógica de programa simples da aparência das janelas de mensagem e aviso.
//------------------------------------------
Os tópicos que foram considerados estão destacados em amarelo.
No momento, ainda restam alguns a serem considerados:
14. Vinculação das cores do texto e do quadro aos limites de valores espaçados.
15. Orientação no arquivo API.
16.implementação da lógica de programa simples da aparência das janelas de mensagem e aviso.
//------------------------------------------
Sugiro vincular o tópico 14 ao tópico 16. Ultrapassar os limites definidos dos valores dos parâmetros primeiro causará sinais na forma de alteração da cor de partes dos elementos (texto, base, moldura, faixa etc.), depois abrirá uma janela de diálogo e, em seguida, uma janela de aviso. Ao mesmo tempo, a janela de aviso bloqueará as alterações nos valores dos elementos até que seja fechada manualmente pelo usuário.
Além disso, gostaria de adicionar um tema à lista:
17. cancelamento das configurações inseridas quando o usuário clica no botão "Cancelar".
Há muito tempo, a tecnologia de cancelamento das configurações do usuário ao clicar no botão "Cancelar" foi desenvolvida e, até certo ponto, testada. No momento, não se sabe o quanto a funcionalidade anterior funciona. Portanto, é necessário um teste.
Como resultado da sobreposição de tópicos, a ordem de revisão será a seguinte:
14. Implementação de proteção de limite de parâmetro escalonado:
15. Vamos considerar a nova impressão do arquivo API em detalhes.
//----------------------------------------------------------------------------------------------------
Em seguida, coletarei todos os bugs ou defeitos encontrados e farei uma lista de tarefas para a próxima versão.
Após a próxima versão com correções e adições, vou me concentrar nas tabelas, nas quais vejo uma das principais direções de desenvolvimento adicional do mecanismo.
Passei a última semana aprendendo a escrever uma interface usando o WinForm e a incorporá-la aos gráficos do MT5. Hoje, finalmente, descobri como fazer isso.
E como você fará para que a interface se comunique com seu código de programação?