TradingBoxing: Un EA Innovativo per MetaTrader 5

Mike 2018.06.18 22:58 13 0 0
Allegato

Quando abbiamo sviluppato TradingBoxing, ci siamo ispirati al codice di TradingBoxing, ma il codice che vi presentiamo è completamente realizzato in MQL5 e si basa su nuove classi di trading.

Il pannello di trading ha un solo parametro di input, il magic number, che funge da identificatore unico per l'EA.

Di seguito potete vedere l'aspetto del pannello di trading:

TradingBoxing

Per visualizzare i volumi (sia per le posizioni che per gli ordini pendenti), abbiamo leggermente modificato la classe standard CSpinEdit, salvandola come CSpinEditDouble. Purtroppo, non siamo riusciti a crearla tramite ereditarietà, poiché abbiamo dovuto modificare i membri della classe dichiarati come "private".

Come suggerisce il nome della classe, è stata creata per visualizzare dati di tipo double. Abbiamo così aggiunto il metodo DisplayedDigits, che definisce la precisione del testo visualizzato nel controllo.

Il campo di testo in questo controllo è stato reso modificabile, il che può essere utile quando è necessario inserire un prezzo o un volume che differiscono molto dal valore visualizzato. Per fare in modo che il testo inserito nel campo venga salvato come valore, abbiamo aggiunto il metodo EndEdit alla classe CSpinEditDouble:

   int               m_digits;              // cifre visualizzate
   //---
   void              EndEdit() { Value(StringToDouble(Text())); }

public:
                     CSpinEditDouble(void);

Questo metodo memorizza il testo inserito come valore.


Il metodo EndEdit viene chiamato dalla classe OnEvent CSpinEditDouble:

//+------------------------------------------------------------------+
//| Gestore comune degli eventi del grafico                                   |
//+------------------------------------------------------------------+
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)

Per garantire che gli ordini di trading vengano elaborati il prima possibile (anche in un mercato molto tranquillo dove i tick arrivano a intervalli lunghi), ogni clic sul pulsante del pannello di trading invoca forzatamente il gestore interno CTradingBoxingDialog::OnTick().

Elenco
Commento 0