فهرست منبع

注释部分注释代码,加入部分功能代码

KarsusNeko 6 سال پیش
والد
کامیت
2d2c85a846
4فایلهای تغییر یافته به همراه107 افزوده شده و 90 حذف شده
  1. 4 1
      MT5MonkPAMM/MT5MonkMAM.cpp
  2. 2 2
      MT5MonkPAMM/MT5MonkPAMM.vcxproj
  3. 82 80
      MT5MonkPAMM/PluginInstance.cpp
  4. 19 7
      MT5MonkPAMM/PluginInstance.h

+ 4 - 1
MT5MonkPAMM/MT5MonkMAM.cpp

@@ -15,7 +15,10 @@ MTPluginInfo ExtPluginInfo =
 
 MTPluginParam ExtPluginDefaults[] =
 {
-	{ MTPluginParam::TYPE_INT, L"Trader Login", L"-" },
+	{ MTPluginParam::TYPE_STRING, L"Redis Server", L"-" },
+	{ MTPluginParam::TYPE_STRING, L"Redis User", L"-" },
+	{ MTPluginParam::TYPE_STRING, L"Redis Password", L"-" },
+	{ MTPluginParam::TYPE_INT, L"Trader", L"-" },
 	{ MTPluginParam::TYPE_INT, L"Step", L"-" },
 	{ MTPluginParam::TYPE_INT, L"Tolerance", L"-" },
 	{ MTPluginParam::TYPE_STRING, L"Groups", L"-" },

+ 2 - 2
MT5MonkPAMM/MT5MonkPAMM.vcxproj

@@ -47,9 +47,9 @@
     <CharacterSet>Unicode</CharacterSet>
   </PropertyGroup>
   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
-    <ConfigurationType>Application</ConfigurationType>
+    <ConfigurationType>DynamicLibrary</ConfigurationType>
     <UseDebugLibraries>false</UseDebugLibraries>
-    <PlatformToolset>v141</PlatformToolset>
+    <PlatformToolset>v140</PlatformToolset>
     <WholeProgramOptimization>true</WholeProgramOptimization>
     <CharacterSet>Unicode</CharacterSet>
   </PropertyGroup>

+ 82 - 80
MT5MonkPAMM/PluginInstance.cpp

@@ -88,29 +88,29 @@ 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::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: %lld, ord: %lld, pos: %lld, state: %lld, vol_init: %lld, vol_cur: %lld",
+//		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: %lld, ord: %lld, pos: %lld, state: %lld, vol_init: %lld, vol_cur: %lld",
+//		order->Login(), order->Order(), order->PositionID(), order->State(), order->VolumeInitial(), order->VolumeCurrent());
+//}
 
 void CPluginInstance::OnOrderDelete(const IMTOrder * order)
 {
@@ -120,63 +120,65 @@ void CPluginInstance::OnOrderDelete(const IMTOrder * order)
 	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());
+	//m_api->LoggerOut(MTLogOK, L"OnOrderDelete, login: %lld, ord: %lld, pos: %lld, state: %d, vol_init: %lld, vol_cur: %lld",
+	//	order->Login(), order->Order(), order->PositionID(), order->State(), order->VolumeInitial(), order->VolumeCurrent());
+	
+	// 订单在进入filled状态时,也会产生一个order delete回调
 }
 
-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::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: %lld, deal: %lld, ord: %lld, pos: %lld, vol: %lld, volc: %lld",
+//		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: %lld, deal: %lld, ord: %lld, pos: %lld, vol: %lld, volc: %lld",
+//		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: %lld, deal: %lld, ord: %lld, pos: %lld, vol: %lld, volc: %lld",
+//		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)
 {
@@ -193,8 +195,8 @@ void CPluginInstance::OnDealPerform(const IMTDeal * deal, IMTAccount * account,
 	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());
+	//m_api->LoggerOut(MTLogOK, L"OnDealPerform, login: %lld, deal: %lld, ord: %lld, pos: %lld, vol: %lld, volc: %lld",
+	//	deal->Login(), deal->Deal(), deal->Order(), deal->PositionID(), deal->Volume(), deal->VolumeClosed());
 }
 
 MTAPIRES CPluginInstance::LoadParam()

+ 19 - 7
MT5MonkPAMM/PluginInstance.h

@@ -4,6 +4,14 @@
 #include <mutex>
 #include <ScopeGuard.hpp>
 
+struct order_info
+{
+	UINT32	level;
+	UINT64	position;
+	UINT64	cur_ord;
+	UINT64	volume;
+};
+
 class CPluginInstance
 	: public IMTServerPlugin
 	, public IMTConPluginSink
@@ -20,15 +28,15 @@ public:
 
 	virtual void OnPluginUpdate(const IMTConPlugin* plugin);
 
-	virtual void OnOrderAdd(const IMTOrder* order);
-	virtual void OnOrderUpdate(const IMTOrder* order);
+	//virtual void OnOrderAdd(const IMTOrder* order);
+	//virtual void OnOrderUpdate(const IMTOrder* order);
 	virtual void OnOrderDelete(const IMTOrder* order);
-	virtual void OnOrderClean(const UINT64 login);
+	//virtual void OnOrderClean(const UINT64 login);
 
-	virtual void OnDealAdd(const IMTDeal* deal);
-	virtual void OnDealUpdate(const IMTDeal* deal);
-	virtual void OnDealDelete(const IMTDeal* deal);
-	virtual void OnDealClean(const UINT64 login);
+	//virtual void OnDealAdd(const IMTDeal* deal);
+	//virtual void OnDealUpdate(const IMTDeal* deal);
+	//virtual void OnDealDelete(const IMTDeal* deal);
+	//virtual void OnDealClean(const UINT64 login);
 	virtual void OnDealPerform(const IMTDeal* deal, IMTAccount* account, IMTPosition* position);
 
 protected:
@@ -41,8 +49,12 @@ private:
 
 	std::mutex		m_lock;
 	bool			m_enable;
+
 	std::wstring	m_groups;
 	std::wstring	m_logins;
+	std::wstring	m_redis_server;
+	std::wstring	m_redis_user;
+	std::wstring	m_redis_password;
 	UINT64			m_trader;
 	int				m_step;
 	int				m_tolerance;