TradingBoxing - Sistem Trading Terbaik untuk MetaTrader 5

Mike 2018.06.18 22:58 13 0 0
Lampiran

Dalam membangunkan sistem ini, kami mendapat inspirasi daripada TradingBoxing. Namun, kod yang kami sediakan di bawah hanya berdasarkan idea asal, manakala semua pelaksanaan dilakukan dalam MQL5 dengan kelas trading yang baharu.

Papan perdagangan ini mempunyai satu parameter input sahaja, iaitu nombor magik - pengenalan unik untuk EA.

Berikut adalah penampilan papan perdagangan:

TradingBoxing

Untuk memaparkan jumlah (bagi posisi dan pesanan tertunda), kelas standard CSpinEdit telah sedikit diubahsuai dan disimpan sebagai CSpinEditDouble. Malangnya, kami tidak dapat menciptanya menggunakan pewarisan, kerana kami terpaksa mengubah ahli kelas yang ditentukan sebagai "swasta".

Seperti yang anda lihat dari nama kelas, ia dicipta untuk memaparkan data jenis double. Oleh itu, kami telah menambah kaedah DisplayedDigits - yang menentukan ketepatan paparan teks dalam kawalan.

Medan teks dalam kawalan ini juga boleh diedit. Sebagai contoh, ini mungkin berguna apabila anda perlu memasukkan harga atau jumlah yang berbeza jauh daripada nilai dalam medan teks. Untuk memastikan teks dari medan teks disimpan sebagai nilai, kaedah EndEdit telah ditambah ke kelas CSpinEditDouble:

   int               m_digits;              // digit yang dipaparkan
   //---
   void              EndEdit() { Value(StringToDouble(Text())); }

public:
                     CSpinEditDouble(void);

Kaedah ini mengingati teks yang dimasukkan sebagai nilai.


Kaedah EndEdit dipanggil dari kelas OnEvent CSpinEditDouble:

//+------------------------------------------------------------------+
//| Pengendali umum bagi acara carta                                   |
//+------------------------------------------------------------------+
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)

Untuk memastikan pesanan perdagangan diproses secepat mungkin (walaupun di pasaran yang sangat tenang di mana tick datang pada selang waktu yang besar), setiap klik pada butang papan perdagangan akan memanggil pengendali dalaman CTradingBoxingDialog::OnTick() secara paksa.

Senarai
Komen 0