TradingBoxing: O Expert Advisor que Revoluciona o MetaTrader 5

Mike 2018.06.18 22:58 21 0 0
Anexo

No desenvolvimento do TradingBoxing, nos inspiramos no código do TradingBoxing original. Contudo, o código abaixo é baseado apenas na ideia, sendo que toda a implementação foi feita em MQL5 com novas classes de trading.

O painel de trading possui apenas um parâmetro de entrada: o número mágico - um identificador único para o EA.

Veja como é a aparência do painel de trading:

TradingBoxing

Para exibir os volumes (tanto para posições quanto para ordens pendentes), utilizamos a classe padrão CSpinEdit, que foi ligeiramente modificada e renomeada para CSpinEditDouble. Infelizmente, não conseguimos criá-la utilizando herança, pois tivemos que alterar os membros da classe que estavam declarados como "privados".

Como o nome da classe sugere, ela foi criada para exibir dados do tipo double. Assim, adicionamos o método DisplayedDigits, que define a precisão da exibição do texto no controle.

O campo de texto neste controle também foi tornado editável. Isso pode ser útil, por exemplo, quando você precisa inserir um preço ou um volume que difere muito do valor mostrado no campo de texto. Para que o texto inserido seja salvo como um valor, adicionamos o método EndEdit à classe CSpinEditDouble:

   int               m_digits;              // dígitos exibidos
   //---
   void              EndEdit() { Value(StringToDouble(Text())); }

public:
                     CSpinEditDouble(void);

Esse método memoriza o texto inserido como um valor.


O método EndEdit é chamado a partir da classe OnEvent da CSpinEditDouble:

//+------------------------------------------------------------------+
//| Manipulador comum de eventos do gráfico                                   |
//+------------------------------------------------------------------+
EVENT_MAP_BEGIN(CSpinEditDouble)
  ON_EVENT(ON_CLICK,m_inc,OnClickInc)
  ON_EVENT(ON_CLICK,m_dec,OnClickDec)
  ON_EVENT(ON_END_EDIT,m_edit,EndEdit)
EVENT_MAP_END(CWndContainer)

Para que as ordens de trading sejam processadas o mais rápido possível (mesmo em um mercado muito tranquilo, onde os ticks chegam com intervalos grandes), cada clique no botão do painel de trading chamará forçosamente o manipulador interno CTradingBoxingDialog::OnTick().

Lista
Comentário 0