Discussão do artigo "Guia passo a passo para iniciantes para escrever um Expert Advisor no MQL5" - página 2

 
wefgoncalves:
Alguém poderia me ajudar na execução de otimização do EA?
Quais o valor inicial, final e passo que eu utilizo?
Posso utilizar otimização genética?

Olá! meu amigo, sou iniciante também mas tem um canal no Youtube que me ajudou bastante sobre otimização, o canal do Vilela!

Encontrei bastante coisa útil por lá com didática excelente, posso te chamar no bate papo para trocarmos experiências?
bons estudos!!!

 
Sella170:
Alguém sabe se posso utilizar esse EA para mini-índice ou mini-dólar ?
Sim, é possível utilizar o EA com o mouse arrastando para gráfico ou menu > inserir > Expert advisor > {nomedoseurobo}.

Espero esclarecido sua dúvida.

 

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.


OF      0       12:44:39.040    EA_ADX (XAUUSD,H1)      2020.01.03 19:00:00   Alert: The Buy order request could not be completed -error:4756
ED      2       12:44:39.043    Trades  2020.01.03 20:00:00   failed market buy 0.1 XAUUSD sl: 1549.09 tp: 1549.16 [Invalid stops]
JP      0       12:44:39.043    EA_ADX (XAUUSD,H1)      2020.01.03 20:00:00   Alert: The Buy order request could not be completed -error:4756
ER      2       12:44:39.049    Trades  2020.01.03 21:00:00   failed market buy 0.1 XAUUSD sl: 1549.90 tp: 1549.97 [Invalid stops]
MR      0       12:44:39.049    EA_ADX (XAUUSD,H1)      2020.01.03 21:00:00   Alert: The Buy order request could not be completed -error:4756
PP      2       12:44:39.053    Trades  2020.01.03 22:00:00   failed market buy 0.1 XAUUSD sl: 1548.16 tp: 1548.23 [Invalid stops]


O arquivo é o do final do Guia.

Como resolver este problema?

 
Há um erro na lógica do algoritmo aqui:
 //--- Do we have positions opened already?
     bool Buy_opened= false ;   // variable to hold the result of Buy opened position
     bool Sell_opened= false ; // variable to hold the result of Sell opened position
    
     if ( PositionSelect ( _Symbol ) == true )   // we have an opened position
    {
         if ( PositionGetInteger ( POSITION_TYPE ) == POSITION_TYPE_BUY )
         {
            Buy_opened = true ;   //It is a Buy
         }
         else if ( PositionGetInteger ( POSITION_TYPE ) == POSITION_TYPE_SELL )
         {
            Sell_opened = true ; // It is a Sell
         }
    }

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:

 //--- Do we have positions opened already?
   bool Buy_opened = false ;   // variable to hold the result of Buy opened position
   bool Sell_opened = false ; // variables to hold the result of Sell opened position

   if ( PositionSelect ( _Symbol ) == true ) // we have an opened position
   {
       for ( int i= 0 ;i< PositionsTotal ();i++){
	 
         PositionSelectByTicket ( PositionGetTicket (i));

         if ( PositionGetInteger ( POSITION_TYPE ) == POSITION_TYPE_SELL )
         {
            Sell_opened = true ; // It is a Sell
         } else if ( PositionGetInteger ( POSITION_TYPE ) == POSITION_TYPE_BUY )
         {
            Buy_opened = true ; //It is a Buy
         }
      }
   
Documentação sobre MQL5: Funções de Negociação / PositionSelect
Documentação sobre MQL5: Funções de Negociação / PositionSelect
  • www.mql5.com
PositionSelect - Funções de Negociação - Referência MQL5 - Referência sobre algorítimo/automatização de negociação na linguagem para MetaTrader 5
 
Vitor Gama Barreto:

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

mrequest.type_filling = ORDER_FILLING_FOK;                               // Order execution type

para:

mrequest.type_filling = ORDER_FILLING_IOC;                               // Order execution type


Alguns papeis tem regras de Stop Loss minimo, leia mais aqui: https://www.mql5.com/pt/forum/319474

ERRO 4756 - INVALID PRICE
ERRO 4756 - INVALID PRICE
  • 2019.08.06
  • www.mql5.com
Ja tentei de tudo, por favor, preciso muito da ajuda de voces!! alguem pode me dar uma luz??? E retorna o : 2019.08.05 13:42:51.236 Core 1 2019.08...
 

Embora em alguns indicadores o tamanho do MQL5 esteja menor que o MQL4,

a impressão que dá é que o MQL5 ficou mais complicado e poluido que o MQL4