HFT策略工厂
source: wtcpp/folder98/folder06/folder2/file01.md
实现了HFT策略接口
#pragma once
#include "../Includes/HftStrategyDefs.h"
USING_NS_WTP;
class WtHftStraFact : public IHftStrategyFact
{
public:
WtHftStraFact();
virtual ~WtHftStraFact();
public:
virtual const char* getName() override;
virtual void enumStrategy(FuncEnumHftStrategyCallback cb) override;
virtual HftStrategy* createStrategy(const char* name, const char* id) override;
virtual bool deleteStrategy(HftStrategy* stra) override;
};
WtHftStraFact.cpp
#include "WtHftStraFact.h"
#include "WtHftStraDemo.h"
#include <string.h>
// HFT策略工厂名称
const char* FACT_NAME = "WtHftStraFact";
extern "C"
{
// 导出策略工厂dll
EXPORT_FLAG IHftStrategyFact* createStrategyFact()
{
IHftStrategyFact* fact = new WtHftStraFact();
return fact;
}
EXPORT_FLAG void deleteStrategyFact(IHftStrategyFact* fact)
{
if (fact != NULL)
delete fact;
}
}
WtHftStraFact::WtHftStraFact()
{}
WtHftStraFact::~WtHftStraFact()
{}
const char* WtHftStraFact::getName()
{
return FACT_NAME;
}
void WtHftStraFact::enumStrategy(FuncEnumHftStrategyCallback cb)
{
cb(FACT_NAME, "HftDemoStrategy", true);
}
// 创建策略对象
HftStrategy* WtHftStraFact::createStrategy(const char* name, const char* id)
{
if(strcmp(name, "HftDemoStrategy") == 0)
{
return new WtHftStraDemo(id);
}
return NULL;
}
// 删除策略
bool WtHftStraFact::deleteStrategy(HftStrategy* stra)
{
if (stra == NULL)
return true;
if (strcmp(stra->getFactName(), FACT_NAME) != 0)
return false;
delete stra;
return true;
}