|
|
@@ -88,16 +88,113 @@ void CPluginInstance::OnPluginUpdate(const IMTConPlugin * plugin)
|
|
|
LoadParam();
|
|
|
}
|
|
|
|
|
|
+void CPluginInstance::OnOrderAdd(const IMTOrder * order)
|
|
|
+{
|
|
|
+ if (order == nullptr) return;
|
|
|
+
|
|
|
+ std::lock_guard<decltype(m_lock)> lk(m_lock);
|
|
|
+ if (!m_enable) return;
|
|
|
+ if (order->Login() != m_trader) return;
|
|
|
+
|
|
|
+ m_api->LoggerOut(MTLogOK, L"OnOrderAdd, login: %l64d, ord: %l64d, pos: %l64d, state: %l64d, vol_init: %l64d, vol_cur: %l64d",
|
|
|
+ order->Login(), order->Order(), order->PositionID(), order->State(), order->VolumeInitial(), order->VolumeCurrent());
|
|
|
+}
|
|
|
+
|
|
|
+void CPluginInstance::OnOrderUpdate(const IMTOrder * order)
|
|
|
+{
|
|
|
+ if (order == nullptr) return;
|
|
|
+
|
|
|
+ std::lock_guard<decltype(m_lock)> lk(m_lock);
|
|
|
+ if (!m_enable) return;
|
|
|
+ if (order->Login() != m_trader) return;
|
|
|
+
|
|
|
+ m_api->LoggerOut(MTLogOK, L"OnOrderAdd, login: %l64d, ord: %l64d, pos: %l64d, state: %l64d, vol_init: %l64d, vol_cur: %l64d",
|
|
|
+ order->Login(), order->Order(), order->PositionID(), order->State(), order->VolumeInitial(), order->VolumeCurrent());
|
|
|
+}
|
|
|
+
|
|
|
+void CPluginInstance::OnOrderDelete(const IMTOrder * order)
|
|
|
+{
|
|
|
+ if (order == nullptr) return;
|
|
|
+
|
|
|
+ std::lock_guard<decltype(m_lock)> lk(m_lock);
|
|
|
+ if (!m_enable) return;
|
|
|
+ if (order->Login() != m_trader) return;
|
|
|
+
|
|
|
+ m_api->LoggerOut(MTLogOK, L"OnOrderDelete, login: %l64d, ord: %l64d, pos: %l64d, state: %d, vol_init: %l64d, vol_cur: %l64d",
|
|
|
+ order->Login(), order->Order(), order->PositionID(), order->State(), order->VolumeInitial(), order->VolumeCurrent());
|
|
|
+}
|
|
|
+
|
|
|
+void CPluginInstance::OnOrderClean(const UINT64 login)
|
|
|
+{
|
|
|
+ std::lock_guard<decltype(m_lock)> lk(m_lock);
|
|
|
+ if (!m_enable) return;
|
|
|
+ if (login != m_trader) return;
|
|
|
+
|
|
|
+ m_api->LoggerOut(MTLogOK, L"OnOrderClean, Login: %d", login);
|
|
|
+}
|
|
|
+
|
|
|
+void CPluginInstance::OnDealAdd(const IMTDeal * deal)
|
|
|
+{
|
|
|
+ if (deal == nullptr) return;
|
|
|
+
|
|
|
+ std::lock_guard<decltype(m_lock)> lk(m_lock);
|
|
|
+ if (!m_enable) return;
|
|
|
+ if (deal->Login() != m_trader) return;
|
|
|
+
|
|
|
+ m_api->LoggerOut(MTLogOK, L"OnDealAdd, login: %l64d, deal: %l64d, ord: %l64d, pos: %l64d, vol: %l64d, volc: %l64d",
|
|
|
+ deal->Login(), deal->Deal(), deal->Order(), deal->PositionID(), deal->Volume(), deal->VolumeClosed());
|
|
|
+}
|
|
|
+
|
|
|
+void CPluginInstance::OnDealUpdate(const IMTDeal * deal)
|
|
|
+{
|
|
|
+ if (deal == nullptr) return;
|
|
|
+
|
|
|
+ std::lock_guard<decltype(m_lock)> lk(m_lock);
|
|
|
+ if (!m_enable) return;
|
|
|
+ if (deal->Login() != m_trader) return;
|
|
|
+
|
|
|
+ m_api->LoggerOut(MTLogOK, L"OnDealUpdate, login: %l64d, deal: %l64d, ord: %l64d, pos: %l64d, vol: %l64d, volc: %l64d",
|
|
|
+ deal->Login(), deal->Deal(), deal->Order(), deal->PositionID(), deal->Volume(), deal->VolumeClosed());
|
|
|
+}
|
|
|
+
|
|
|
+void CPluginInstance::OnDealDelete(const IMTDeal * deal)
|
|
|
+{
|
|
|
+ if (deal == nullptr) return;
|
|
|
+
|
|
|
+ std::lock_guard<decltype(m_lock)> lk(m_lock);
|
|
|
+ if (!m_enable) return;
|
|
|
+ if (deal->Login() != m_trader) return;
|
|
|
+
|
|
|
+ m_api->LoggerOut(MTLogOK, L"OnDealDelete, login: %l64d, deal: %l64d, ord: %l64d, pos: %l64d, vol: %l64d, volc: %l64d",
|
|
|
+ deal->Login(), deal->Deal(), deal->Order(), deal->PositionID(), deal->Volume(), deal->VolumeClosed());
|
|
|
+}
|
|
|
+
|
|
|
+void CPluginInstance::OnDealClean(const UINT64 login)
|
|
|
+{
|
|
|
+ std::lock_guard<decltype(m_lock)> lk(m_lock);
|
|
|
+ if (!m_enable) return;
|
|
|
+ if (login != m_trader) return;
|
|
|
+
|
|
|
+ m_api->LoggerOut(MTLogOK, L"OndealClean, Login: %d", login);
|
|
|
+}
|
|
|
+
|
|
|
void CPluginInstance::OnDealPerform(const IMTDeal * deal, IMTAccount * account, IMTPosition * position)
|
|
|
{
|
|
|
- // position为nullptr时,
|
|
|
+ // position为nullptr时,说明该deal不是由交易本身触发
|
|
|
+ // account是deal完成后的用户状况
|
|
|
+ // position是交易完成后的持仓状况
|
|
|
+ // 对于deal是关闭一个持仓的情况,该position的volume会是0
|
|
|
if (position == nullptr
|
|
|
|| deal == nullptr
|
|
|
|| account == nullptr)
|
|
|
return;
|
|
|
|
|
|
std::lock_guard<decltype(m_lock)> lk(m_lock);
|
|
|
- if (m_enable) return;
|
|
|
+ if (!m_enable) return;
|
|
|
+ if (deal->Login() != m_trader) return;
|
|
|
+
|
|
|
+ m_api->LoggerOut(MTLogOK, L"OnDealPerform, login: %l64d, deal: %l64d, ord: %l64d, pos: %l64d, vol: %l64d, volc: %l64d",
|
|
|
+ deal->Login(), deal->Deal(), deal->Order(), deal->PositionID(), deal->Volume(), deal->VolumeClosed());
|
|
|
}
|
|
|
|
|
|
MTAPIRES CPluginInstance::LoadParam()
|