Discussão do artigo "Guia passo a passo para iniciantes para escrever um Expert Advisor no MQL5" - página 30
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
Testador - "Modo de preenchimento não suportado"
Tentei em 3 corretoras diferentes. Qual é o problema?
Tente substituir SYMBOL_FILLING_FOK por SYMBOL_FILLING_IOC.
Atenciosamente, Vladimir.
Olá a todos (especialmente ao querido autor)
Eu codifiquei junto com este artigo. Gostei muito e aprendi muito com ele.
Obrigado por escrever um artigo tão informativo.
No entanto, estou com um problema. Meu EA não fez nenhuma ordem. Baixei o código do autor, mas ele também não fez nenhuma ordem.
Como o artigo tem 13 anos, presumo que o código esteja desatualizado. Alguém pode me ajudar?
Meu código está no arquivo abaixo. Desde já, agradeço a todos.
Visite a página em inglês sem tradução, que é o download correto.
Faça o download a partir desta página: Guia passo a passo para escrever um Expert Advisor em MQL5 para iniciantes - MQL5 Articles
https://www.mql5.com/en/articles/100
Prezados colegas;
Neste artigo, na parte inferior, ele tem o código completo mlq5 para download.
Fiz o download para verificar a função e descobri que o programa tem um algoritmo incorreto.
A configuração é EURUSD, M1, 100USD, com início em 2025/01/01 a 2025/01/31
A primeira ordem é de venda e, depois, há várias ordens de compra.
O conceito é que deve haver apenas uma ordem, mas isso ocorre a partir da linha 165
O sinalizador para verificar se já existe ou não uma ordem está separado em duas variáveis de sinalizador (Buy_opned, Sell_opened).
Se agora já houver uma ordem de venda, então, na linha 216 (Ordersend), será criada uma nova ordem de compra, mesmo que agora haja uma ordem de venda.
Aguardar a próxima vela O sinalizador Buy_open na instrução da linha 172 não pode ser definido como on novamente. Porque a primeira ordem é de venda, a segunda ordem é de compra.
E sim, a próxima vela novamente, a ordem de compra na linha 216 (Ordersend) ocorrerá e continuará, muitas ordens de compra ocorrerão até que não haja dinheiro.
Veja o gráfico aqui.
Veja a lista de ordens.
Obrigado.
Niwath Jeamphue.
Prezados colegas;
Neste artigo, na parte inferior, ele tem o código completo mlq5 para download.
Fiz o download para verificar a função e descobri que o programa tem um algoritmo incorreto.
A configuração é EURUSD, M1, 100USD, com início em 2025/01/01 a 2025/01/31
A primeira ordem é de venda e, posteriormente, há muitas ordens de compra.
O conceito é que deve haver apenas uma ordem, mas isso está ocorrendo a partir da linha 165
O sinalizador para verificar se há ordem ou não está separado em duas variáveis de sinalizador (Buy_opned, Sell_opened).
Se agora já houver uma ordem de venda, a linha 216 (Ordersend) criará uma nova ordem de compra, mesmo que agora haja uma ordem de venda.
Aguardar a próxima vela O sinalizador Buy_open na instrução da linha 172 não pode ser definido como on novamente. Porque a primeira ordem é de venda, a segunda é de compra.
E sim, na próxima vela, a ordem de compra na linha 216 (Ordersend) ocorrerá e continuará, muitas ordens de compra ocorrerão até que não haja dinheiro.
Veja o gráfico aqui.
Veja a lista de pedidos.
Obrigado.
Niwath Jeamphue.
Você não deve usar PositionSelect(_Symbol) a menos que esteja usando uma conta de compensação.
Em uma conta de hedge, você precisa selecionar sua posição corretamente, com PositionGetTicket() ou PositionSelectByTicket(). Consulte a documentação.
Não se deve usar PositionSelect(_Symbol) a menos que se esteja usando uma conta de compensação.
Em uma conta de hedge, você precisa selecionar sua posição corretamente, com PositionGetTicket() ou PositionSelectByTicket(). Consulte a documentação.
Obrigado por seu comentário. Mas gostaria de informar a todos que o código-fonte é a versão final completa deste artigo.
https://www.mql5.com/pt/articles/download/100/my_first_ea.mq5
Tente você mesmo, pois entenderá meu ponto principal.
Obrigado.
Obrigado por seu comentário. Mas gostaria de informar a todos que o código-fonte é o código final completo deste artigo.
https://www.mql5.com/pt/articles/download/100/my_first_ea.mq5
Tente você mesmo, pois entenderá meu ponto principal.
Obrigado.
Este artigo é de 2010. Naquela época, TODAS as contas eram contas de compensação no MT5, inclusive para Forex.
As contas de cobertura foram introduzidas em 2016: https: //www.mql5.com/en/articles/2299
Niwath Jeamphue #:
Experimente você mesmo e entenderá meu ponto de vista.
Obrigado.
Olá. Entendo seu ponto de vista. No arquivo anexo, alterei o código-fonte do Expert Advisor para que apenas uma posição seja aberta, independentemente da conta usada - compensação ou hedge.
Atenciosamente, Vladimir.
Olá. Entendo seu ponto de vista. No arquivo anexo, alterei o código-fonte do Expert Advisor para que apenas uma posição seja aberta, independentemente da conta que você usar - compensação ou hedge.
Atenciosamente, Vladimir.
Conta de hedge, MrBrooklin. Obrigado. Mas eu prefiro receber apenas uma ordem, não tantas ordens.
Mudei o algo. do original
Limpar a bandeira aberta de compra e venda
Se (PositionSelect(_Symbol)==true)
Se for constatado que se trata de uma posição de compra, definir o sinalizador Buy_opened
Else If found that is sell position then set Sell_opened flag
Zona1 : Tenta abrir a ordem de compra na condição e no sinalizador Buy_opened
Zona2 : Tenta abrir a ordem de venda na condição e o sinalizador Sell_opened
Para o novo algoritmo e ele funciona bem agora.
If (PositionsTotal() > 0) return
Limpar o sinalizador de abertura de compra e venda
Se for encontrada uma posição de compra, defina o sinalizador Buy_opened
Else If found that is sell position then set Sell_opened
Zona1 : Tenta abrir a ordem de compra na condição e !sinaliza Buy_opened
Zona2 : Tenta abrir uma ordem de venda na condição e !flag Sell_opened