MQL Praticamente. Botão de Pânico, parte I [Curso de Programação]
Bem-vindo ao segundo episódio do MQL Practically! Na segunda parte do nosso curso, começaremos novamente com uma folha de papel em branco e escreveremos um novo aplicativo passo a passo. Vamos conhecer os elementos que cada programador usa no seu trabalho diário, como funções, operadores lógicos e loops, que é o que cada um de vocês deve ter ouvido falar, mas não sabia exatamente o que é. Felizmente, em nossa série, damos a teoria saborosa e sem exageros, e nos concentramos no que é mais importante, ou seja, programação na prática.
Esta semana vamos escrever a primeira parte da aplicação "Botão de pânico"cujo nome eu acho que já explica muito. A tarefa do nosso programa será, depois de pressionar um botão, fechar imediatamente todas as posições e pedidos abertos, quando um suor frio aparece em nossa testa, o mundo fica em silêncio e a imagem se reduz a um campo pequeno e nebuloso com uma taxa oscilante de um dólar correndo após um dos tweets fofos de um dos nossos políticos favoritos.
Vamos arregaçar as mangas e ligar o MetaEditor
Vamos começar criando um arquivo de tipo vazio no editor Expert nomeado Panic Button.mq4. O arquivo estará no diretório MQL4 \ Experts. Em seguida, coloque todos os arquivos que você precisa hoje nas pastas certas.
BAIXAR UM CONJUNTO DE ARQUIVOS MQL
Primeiros personagens
Vamos mudar o código da nossa aplicação, ou seja, o arquivo Panic Button.mq4 do catálogo Especialistas. Deixe-nos informar ao compilador que usamos a sintaxe mais recente da linguagem MQL4 digitando:
Três vezes "e"
#include
Usando a palavra-chave #include podemos anexar outros arquivos de origem ao seu código. No arquivo Przydatne_funkcje.mqh nós preparamos a função necessária na seguinte parte:
bool Zamknij_pozycje_i_zlecenia (bool tylko_ten_instrument)
Para que possamos usar o código adicional, devemos adicioná-lo ao nosso arquivo digitando #include e o caminho de acesso. Exatamente como na caixa abaixo.
# Importar
Palavra chave # Importar no entanto, nos permite usar bibliotecas externas. As bibliotecas são algoritmos separados e compilados que compartilham suas funções e recursos com outros programas. Abaixo nós importamos uma biblioteca chamada Biblioteka_panic_button.ex4que contém elementos gráficos e funções para o nosso botão. Entre elementos # Importar Colocamos uma lista de definições de funções que a biblioteca deve nos fornecer.
A importação correta da biblioteca é assim:
entrada
Depois de adicionar os arquivos de origem e as bibliotecas, podemos continuar a criar as funções do nosso programa. Vamos começar adicionando a seguinte linha:
Element entrada informa ao compilador que estamos criando um parâmetro que estará disponível na janela de configurações do aplicativo, e seu valor dependerá da escolha do usuário. O parâmetro que criamos leva o valor do tipo bool czyli verdadeiro lub falso. Nós o chamamos Tylko_ten_instrument e usando esse nome, poderemos nos referir ao seu valor no futuro, o que nos ajudará a decidir se fecharemos todas as posições ou apenas a posição do instrumento no qual nosso programa está sendo executado.
Primeira função
Vamos adicionar o seguinte trecho de código ao nosso arquivo:
O registro acima significa que criamos uma função chamada OnInitque retornará valores de tipo int, isso é inteiros. Funções retornam valores usando uma palavra-chave retorno.
Nós mencionamos que usar a palavra retorno nossa função retorna valores na forma de inteiros. Então, o que é um registro misterioso? INIT_SUCCEEDED ? Para nossa conveniência na linguagem, há muitos valores definidos automaticamente e INIT_SUCCEEDED é apenas um deles. Sob seu nome está um número inteiro, conhecido pelo compilador como "tudo está ok".
função Oninit () faz parte da API MQL, ou seja, uma função disponível como parte do idioma. As funções da API MQL estão marcadas no código em arroxeada. Depois de iniciar o aplicativo, nosso algoritmo chamará automaticamente a função Oninit () e ele fará isso apenas uma vez, no início, para nos permitir executar as operações necessárias para executar e executar nosso programa.
O conteúdo da função
Entre as chaves de cada função, inserimos as instruções que uma determinada função deve executar. Nossa função Oninit () já contém uma instrução - retorno INIT_SUCCEEDED;
Vamos expandir a função da função Oninit (), lembrando-se de codificar retorno INIT_SUCCEEDED; ele sempre permaneceu na parte inferior da função, porque queremos chamá-lo apenas quando todas as outras instruções forem bem-sucedidas.
Operador condicional se
O código acima, usando um operador condicional if, verifica se o ambiente para nossos experimentos é seguro e trabalhamos em uma conta de demonstração.
Construção do operador if é sempre muito parecido. Um registro entre os parênteses após o operador, ou seja, o registro IsDemo () == falso chamamos de expressão condicional. É uma expressão lógica que pode retornar um de dois valores - verdadeiro lub falso. Quando a expressão condicional retorna um valor verdadeiro este será o código entre as chaves que aparecem diretamente após o operador if.
O símbolo == em uma expressão condicional faz uma pergunta se o valor à sua esquerda é igual ao valor à direita. Porque a função IsDemo () retornará o valor falsoquando ativamos o programa na conta ativa, nossa expressão condicional, como um todo, retornará o valor verdadeiroporque o valor à esquerda do símbolo == corresponderá ao valor à direita. Quando uma expressão condicional é atendida, um código será executado entre as chaves do operador if e o programa retornará informações sobre falhas com a ajuda do operador retorno e valor gerado automaticamente sob o nome INIT_FAILED.
Nós desenhamos um botão
Nós desenhamos nosso botão usando a função Przycisku_utworz_sie (int x, int y, bool wybieram_niebieski)que vem da biblioteca previamente importada. A função aceita dois parâmetros com um tipo de dados int (inteiros) com nomes x oraz yque servem como coordenadas da posição do botão no gráfico em relação ao canto superior direito da janela.
Além disso, a função assume um parâmetro de tipo bool (verdadeiro lub falso) nomeado wybieram_niebieski. Como nosso aplicativo poderá operar em dois modos, para toda a conta ou um instrumento, nosso botão terá a cor apropriada, dependendo das configurações selecionadas.
Nós gostamos de ify
Vamos determinar que queremos que o botão seja azul quando funcionar no modo de um único instrumento e vermelho para toda a conta. Vamos habilitar a coloração do botão, adicionando as seguintes instruções para a função Oninit ():
Para que o algoritmo determine a cor do botão, para começar, definimos a variável bool nomeado azul e nós atribuímos um valor a ele falso. Então usamos o operador condicional ifque verifica o parâmetro de configurações do aplicativo Tylko_ten_instrument foi definido pelo usuário para um valor verdadeiro. Se este for o caso, o código que define o valor da variável é executado azul também em verdadeiro. Uma variável preparada desta maneira azul nós podemos servir a função Przycisku_utworz_sie (..) adicionando a seguinte linha de código à função Oninit ().
Última função (para hoje)
Quando o programa termina ou algo muda nas configurações, a função da API MQL será chamada anular OnDeinit(const int razão).
Usando a função OnDeinit () realizamos operações que são necessárias para finalizar corretamente o programa. No nosso caso, depois de desligar o algoritmo, é necessário remover o botão usando a função previamente importada da biblioteca Przycisku_bye_bye ().
Observe que há uma palavra na frente do nome da função anular. Isso significa que nossa função não retornará nenhum valor.
Adicione o ponto-e-vírgula, esfregue suas mãos e pressione compilar
Após a compilação bem sucedida, o código que escrevemos hoje desenhará um botão no gráfico e dará a ele uma aparência adequada, dependendo da configuração inserida pelo usuário na janela de configurações. Parabéns, concluímos o primeiro estágio de criação de nosso aplicativo, criamos uma interface de usuário.
Na próxima semana, desenvolveremos nosso programa para processamento de pedidos e adicionaremos alguns gadgets interessantes.