Discussão do artigo "Guia passo a passo para iniciantes para escrever um Expert Advisor no MQL5" - página 22
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
Alguém sabe se posso utilizar esse EA para mini-índice ou mini-dólar ?
Olá pessoal, bom dia.
Estou no "Testador de Estratégia" com este arquivo do final do Guia e ele aparece o seguinte erro:
*o erro já foi conversado aqui neste artigo, porém nenhuma solução escrita deu certo comigo e preciso de suas ajudas.
O arquivo é o do final do Guia.
Como resolver este problema?
Também continuo com esse erro depois de fazer as duas correções sugeridas:
ZeroMemory(mrequest);
e também
if(Buy_opened || Sell_opened)
Alguém pode me ajudar com o erro 4756? Parece que não é possível colocar uma ordem de compra.
Verifique se você usou a função SymbolInfoTick e escreveu essa parte do código:
Como PositionSelect seleciona a primeira posição para _Symbol, se o EA abrir uma posição de compra, a variável Sell_opened sempre será falsa enquanto a posição de compra estiver aberta, fazendo com que várias posições de venda sejam realizadas sempre que houver um sinal de venda.
Para corrigir isso e saber se há posições de compra e venda abertas simultaneamente, a seguinte lógica pode ser usada:
Olá pessoal, bom dia.
Estou no "Testador de Estratégia" com este arquivo do final do Guia e ele aparece o seguinte erro:
*o erro já foi conversado aqui neste artigo, porém nenhuma solução escrita deu certo comigo e preciso de suas ajudas.
O arquivo é o do final do Guia.
Como resolver este problema?
Verifique o preço de venda que está solicitando, para isso use breakpoint para depurar as variáveis mrequest.price, mrequest.sl e mrequest.tp
Tente mudar
para:
Alguns papeis tem regras de Stop Loss minimo, leia mais aqui: https://www.mql5.com/pt/forum/319474
Olá,
Muito obrigado pelo artigo, Samuel, você é demais!
Foi um pouco difícil fazê-lo funcionar com minha corretora porque o artigo está no modo "net" e tive que procurar informações para colocá-lo no modo "hedging". O primeiro problema que encontrei foi com o mrequest.type_filling .
Para o corretor XM, o que funciona é:
Se você não souber qual deles o seu MT5 permite, minha recomendação é usar a função TypeFilling() em um Print(TypeFilling()) ou um Comment( TypeFilling()) e ele retorna o tipo; se ele informar que é 1 (ORDER_FILLING_FOK) ou 2 (ORDER_FILLING_IOC), você saberá qual deles deve colocar(https://www.mql5.com/docs/constants/tradingconstants/orderproperties#enum_order_type_filling) porqueORDER_FILLING_FOK (1) não funciona para mim com essa corretora.
Depois que isso for corrigido, o problema é que o PositionSelect abre muitas posições. Embora Samuel não diga isso em sua estratégia, entendo que o objetivo é abrir uma única posição de compra ou venda (o que vier primeiro) com os critérios estabelecidos (as 4 etapas booleanas) e que, até que essa posição seja fechada, não podemos abrir outra.
O que eu fiz foi alterar esse código ...
Para este...
Observação: Logo após vem a linha...
Dessa forma, funcionou bem para mim. Espero que seja útil para você.
Com os melhores cumprimentos.
Também continuo com esse erro depois de fazer as duas correções sugeridas:
ZeroMemory(mrequest);
e também
if(Buy_opened || Sell_opened)
Alguém pode me ajudar com o erro 4756? Parece que não é possível colocar uma ordem de compra.
Talvez o tipo de preenchimento de sua corretora seja ORDER_FILLING_IOC, você pode tentar editar o código a partir de:
mrequest.type_filling = ORDER_FILLING_FOK;Para:
mrequest.type_filling = ORDER_FILLING_IOC;Eu tive o mesmo problema e agora o resolvi com sucesso