Versão beta do livro online sobre programação MQL4 - por Sergey Kovalev (SK.) - página 3
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
Experimentei a Meta Trader pela primeira vez há uma semana e descobri que é muito mais conveniente do que meus terminais anteriores (Rumus e Forex Trader). Há cerca de dois anos, quando tomei conhecimento do Forex e abri minha primeira conta demo, me perguntei como automatizar tudo. Depois abri o terminal e vi a mensagem Autotrading na seção de correio. E aqui estou eu)))) Intensamente lendo o livro, e espero que em breve escreva meu primeiro Expert Advisor para minha estratégia desenvolvida. Eu não tinha absolutamente nada a ver com programação antes, era até difícil imaginar que alguma vez eu iria aprender programação)))) Enquanto eu lia, surgiram perguntas, mas elas também desapareceram à medida que eu ia avançando. A pergunta apareceu, olhei para frente e fiquei satisfeito, pois vi a resposta após alguns capítulos e voltei a ler tudo em ordem. Fui especialmente atraído pela possibilidade de testar a estratégia em dados históricos e ajustar a estratégia como resultado.
De qualquer forma, muito obrigado pelo livro.
É excelente. Você é um novo usuário de MT. E você não sabe praticamente nada sobre programação no momento.
Permita-me sugerir que você informe pelo menos duas ou três vezes por mês como as coisas estão indo (e mais freqüentemente se você desejar). Isso seria extremamente interessante.
Entretanto, se você me permite, tenho uma pergunta. Você diz que surgiu uma pergunta que é respondida nas seções seguintes. Tentei montar tudo de forma a evitar essa situação. Você poderia esclarecer a que pergunta você está se referindo?
Uma semana atrás instalei e experimentei a Meta Trader pela primeira vez. Acontece que este terminal é muito mais conveniente do que meus anteriores (Rumus e Forex Trader). Há cerca de dois anos, quando tomei conhecimento do Forex e abri minha primeira conta demo, me perguntei como automatizar tudo. Depois abri o terminal e vi a mensagem Autotrading na seção de correio. E aqui estou eu)))) Intensamente lendo o livro, e espero que em breve escreva meu primeiro Expert Advisor para minha estratégia desenvolvida. Eu não tinha absolutamente nada a ver com programação antes, era até difícil imaginar que eu iria estudar programação)))) Enquanto eu lia, surgiram perguntas, mas elas também desapareceram à medida que eu ia avançando. A pergunta surgiu, olhei em frente e fiquei satisfeito, pois vi a resposta após alguns capítulos e voltei para ler tudo em ordem. Fui especialmente atraído pela possibilidade de testar a estratégia em dados históricos e corrigi-la como resultado.
De qualquer forma, muito obrigado pelo livro.
É excelente. Você é um novo usuário de MT. E você não sabe praticamente nada sobre programação no momento.
Permita-me oferecer-lhe: que me informe pelo menos 2 ou 3 vezes por mês como você está indo (ou com mais freqüência, se desejar). Seria muito interessante.
Entretanto, se você me permite, tenho uma pergunta. Você diz que surgiu uma pergunta que é respondida nas seções seguintes. Tentei montar tudo de forma a evitar essa situação. Você poderia esclarecer a que pergunta você está se referindo?
Eu lhe informarei sobre o progresso, como na minha situação e sem comunicação)). Espero um feedback construtivo.
Obrigado por seu tempo e atenção.
Favor dividir as seguintes mensagens em parágrafos, pois é difícil entender o que está sendo escrito.
Mas tendo começado a ler o livro, fiquei um pouco confuso pela estrutura de construção do programa e depois pela função int start (), que se repete a cada tick e se no momento de sua execução eu sei o preço da licitação, então ele é escrito para uma variável e é armazenado nela durante todo o tempo de execução, então como saberei quando o preço mudou e o programa pode realizar qualquer outra ação com base no novo preço? Pensei que o preço em meu programa seria atualizado por algum código de loop, pedindo constantemente por ele.
Você está certo ao dizer que para que o programa possa funcionar em tempo real, é necessário ser informado periodicamente sobre o fato de um novo preço e o próprio preço.
De fato, há duas maneiras de fazer isso:
A primeira maneira é executar em loop infinito alguma função e a partir dela periodicamente solicitar preço.
Mas este método tem desvantagens:
- Se as consultas são feitas com freqüência, o resultado é uma carga pesada no canal de comunicação e um desperdício de recursos de PC;
- Se você fizer consultas com pouca freqüência, pode perder um novo preço entre as consultas.
O método 2-nd (aceito como básico na tecnologia MQ) é bem diferente, pois o lançamento do código necessário pertence ao terminal. O terminal recebe informações do servidor, entende que chegou um novo tick (o fato de um novo preço e o próprio preço) e com base nestas informações, o terminal inicia() a função. Tudo isso é descrito no Programa na seção MQL4.
Agora tenho uma pergunta: percebi que, ao executar a função init, vou chamar a função de cálculo do preço aberto do meu pedido, e também o cálculo do tamanho do lote, com base nos dados do saldo da minha conta; após a execução init, a função start start será iniciada...
Incorreto. init() e start() são funções especiais. Eles são chamados pelo terminal do cliente de acordo com suas próprias propriedades (ou mais simplesmente, de acordo com as regras, condições sob as quais são chamados para execução). Isto é descrito na seção Funções Especiais. A função init() é executada uma vez, quando o programa é carregado na janela. E start() é chamado em cada tick. Isto é muito conveniente. Um tick veio e trouxe um novo preço = o início do lançamento do terminal() que é executado até que ele seja executado. Todos os cálculos devem ser inseridos nele - cálculo do número de lotes, condições de abertura/fecho de pedidos e tudo mais.
Então o mais intrigante para mim é onde escrever o código esperando o preço "fechado" do pedido e voltar ao início, ou seja, novamente, contando o preço de abertura, esperando por este preço, etc. Olhei para a frente nas seções; acho que vi algo nos títulos, que provavelmente responderá à minha pergunta. Gostarei de ler a seção de Abertura e Definição de Pedidos.
A julgar por suas perguntas, você não precisa escrever programas e não precisa ler o que você está lendo agora. Nesta situação, é fortemente recomendado começar a ler o livro novamente. De forma consistente e sem se antecipar. E à medida que você for avançando, digite todos os exemplos apresentados em ME e os execute em seu PC. E não passe para a próxima seção até que cada letra do código seja totalmente compreendida. Procure os conceitos de Tick, Controle, Função, Função Especial, Operador, e geralmente verifique o Dicionário de Termos de tempos em tempos.
Certamente relatarei o progresso como em minha posição e sem comunicação)) Espero um feedback construtivo.
Obrigado por seu feedback.
Espero que você siga o conselho corretamente e o siga.
Então o mais intrigante para mim é onde escrever o código esperando pelo preço "fechado" e voltar ao início, ou seja, contar novamente o preço de abertura, esperar por este preço, etc. Olhei para a frente nas seções; acho que vi algo nos títulos, que provavelmente responderá à minha pergunta. Ainda estou lendo a seção de Abertura e Estabelecimento de Ordens.
A julgar pelas perguntas que você tem, você ainda não precisa escrever programas e também não precisa ler o que você está lendo agora.
Rapidamente rabiscado no vdp, aqui está:
Init
Início
Eu defino o número máximo de ordens abertas = 1;
Verifique quantos pedidos estão abertos;
se 1 estiver aberto, então eu chamo a função para fechar a ordem,
Se nenhum pedido for aberto, então eu chamo a função "calcular preço e número de lotes".
--------------------------
Necessário para calcular um preço favorável de compra e venda e para calcular o número de lotes;
--------------------------
consultando o preço atual;
se o preço atual >= preço de barganha para vender,
depois abrir uma ordem de venda igual ao número de lotes já determinado;
se não, compare o preço atual com o preço da licitação vencedora;
se o preço atual for <= Preço de licitação,
respectivamente, abrir uma ordem de compra;
--------------------------
Função de chamada para fechar o pedido;
retornar
deinit
Entendeu bem?Entendeu bem?
Bem, de modo geral :) Parabéns a você. É sempre bom entender algo mais.
Ainda assim, siga meu conselho: volte ao início e vá desde o início sem pular ou pular, executando metodicamente em seu PC todos os códigos sugeridos no tutorial.
Há um indicador ROC interessante no livro - o indicador da taxa de variação de preço(https://book.mql4.com/ru/samples/iroc). Entendo que este livro é um livro de texto e o autor não é obrigado a dar código fonte de semi- ou mesmo de um quarto de grão, mas a idéia do indicador é muito boa, e eu o afinei um pouco para tornar o atraso ainda mais fraco.
Falta duas vezes o caráter de divisão (desapareceu durante a criação do arquivo html?).
O arquivo indicador vinculado no texto é normal.
Bem, de modo geral :) Parabéns a você. É sempre bom entender algo mais.
Ainda assim, siga meu conselho: você precisa voltar ao início e ir desde o início sem pular e pular, executando metodicamente em seu PC todos os códigos sugeridos no tutorial.
Sim, concordo, é muito importante ver e sentir qualquer resultado do que você lê, isto é, quando ele é fixado na memória a longo prazo, ainda mais sob a influência de conteúdo emocional, mais de uma associação aparece:) A propósito, também queria enfatizar que, para estimular o interesse, é necessário voltar atrás ou usar os capítulos mais importantes, então o próprio interesse levará ao objetivo e expandirá o círculo de conhecimento. O mais difícil em nossa situação é entender o que é interessante à medida que vamos avançando, para chegarmos à ordem que será mais eficaz, pois vemos a eficácia de tudo o que possuímos. Relacionaria a operação da memória associativa com a memória guiada, onde existe uma área distribuída desde que haja pelo menos um link (associação) para ela, quanto mais links, mais provável que a área não seja liberada, garantindo assim sua utilização e subsequente utilidade. É necessário, portanto, reabastecer constantemente o estoque das associações a fim de consolidar o que você leu.
P.S.: Desculpe se fui longe demais:)
O símbolo de divisão está faltando duas vezes (desapareceu ao criar o arquivo html?).
O arquivo indicador vinculado no texto é normal.
Sim, existe tal coisa. Nos códigos fonte ainda não foram detectados erros, mas os códigos de texto estão estragados em alguns lugares por alguma razão. Vamos resolver isso.
P.S.: Desculpe se exagerei:)
Já estou tendo dificuldades com os laços (vou voltar a estas seções mais de uma vez), e depois há aquelas ovelhas.
Apenas minha opinião, se for considerado um exemplo específico de negociação (quase invasão:), ok, negociação, então se o leitor encontrar um exemplo semelhante a sua idéia (que ele não sabe como implementar), ele irá com grande interesse considerar este exemplo e pensar como modificá-lo e personalizá-lo para implementar sua idéia (acho que você sabe o que quero dizer).
Eu tinha tal exemplo, eu estava interessado em como abrir um pedido de 1/3 do saldo. Você não pode imaginar que tipo de operações matemáticas foram realizadas na minha cabeça para converter 1/3 em dólares, de modo que eu consegui a soma em lotes (0,1 ou 3,5 lotes...). E como fiquei feliz quando vi um exemplo deopenbuy.mq4, que abre uma ordem de compra no valor de 35% dos fundos disponíveis, com alguns valores especificados de ordens de parada. Olhei através dele, estudando cada linha, o quê, por quê e onde. Eu olhei as funções padrão utilizadas nele (MathFloor, MarketInfo. ....).