WtCtaStraFact.h
source: wtcpp/folder98/folder06/folder1/file01.md
实现了CTA策略接口
#pragma once
#include "../Includes/CtaStrategyDefs.h"
USING_NS_WTP;
class WtStraFact : public ICtaStrategyFact
{
public:
WtStraFact();
virtual ~WtStraFact();
public:
virtual const char* getName() override;
virtual CtaStrategy* createStrategy(const char* name, const char* id) override;
virtual void enumStrategy(FuncEnumStrategyCallback cb) override;
virtual bool deleteStrategy(CtaStrategy* stra) override;
};
WtCtaStraFact.cpp
#include "WtCtaStraFact.h"
#include "WtStraDualThrust.h"
#include <string.h>
#include <boost/config.hpp>
// CTA策略工厂名称
const char* FACT_NAME = "WtCtaStraFact";
extern "C"
{
// 导出策略工厂dll
EXPORT_FLAG ICtaStrategyFact* createStrategyFact()
{
ICtaStrategyFact* fact = new WtStraFact();
return fact;
}
// 删除策略
EXPORT_FLAG void deleteStrategyFact(ICtaStrategyFact* fact)
{
if (fact != NULL)
delete fact;
}
};
WtStraFact::WtStraFact()
{}
WtStraFact::~WtStraFact()
{}
// 创建策略, 策略名称被定死了
CtaStrategy* WtStraFact::createStrategy(const char* name, const char* id)
{
if (strcmp(name, "DualThrust") == 0)
return new WtStraDualThrust(id);
return NULL;
}
// 删除策略
bool WtStraFact::deleteStrategy(CtaStrategy* stra)
{
if (stra == NULL)
return true;
if (strcmp(stra->getFactName(), FACT_NAME) != 0)
return false;
delete stra;
return true;
}
void WtStraFact::enumStrategy(FuncEnumStrategyCallback cb)
{
cb(FACT_NAME, "DualThrust", false);
cb(FACT_NAME, "PairTradingFci", false);
cb(FACT_NAME, "CtaXPA", true);
}
// 获取策略工厂名称
const char* WtStraFact::getName()
{
return FACT_NAME;
}