Bladeren bron

加入调试日志等

KarsusNeko 6 jaren geleden
bovenliggende
commit
08b6699941
3 gewijzigde bestanden met toevoegingen van 104 en 4 verwijderingen
  1. 2 2
      MT5MonkPAMM/MT5MonkPAMM.vcxproj
  2. 99 2
      MT5MonkPAMM/PluginInstance.cpp
  3. 3 0
      MT5MonkPAMM/pch.h

+ 2 - 2
MT5MonkPAMM/MT5MonkPAMM.vcxproj

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

+ 99 - 2
MT5MonkPAMM/PluginInstance.cpp

@@ -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()

+ 3 - 0
MT5MonkPAMM/pch.h

@@ -10,6 +10,9 @@
 #define PCH_H
 
 // TODO: 添加要在此处预编译的标头
+#define WIN32_LEAN_AND_MEAN
+#include <Windows.h>
+
 #include "MT5APIServer.h"
 #include "MT5APITools.h"