量化交易策略大体上可以分为两类,一类是判断趋势进行高抛低吸的策略,即趋势策略;另一类是消除系统性的风险获取相对稳健收益的策略,即策略。
自动交易机器人在云服务器上24小时运行。初始化设置参数之后,机器人将按照策略进行自动交易。达到设定条件自动买入或者卖出,无须长时间盯盘。
机器人内置多种交易策略,满足不同的类型。
void Calibration::_initMaps(){
_featureInfo.clear();
_opInfo.clear();
_tensorMap.clear();
//run mnn once,initialize featureMap,opInfo map
//MNN提供了每个op计算的callback,一个计算前一个是计算后
//计算前的callback完成的工作是为input tensor创建TensorStatistic对象;op info的填充op->input,output的映射
MNN::TensorCallBackWithInfo before=&{
_opInfo[info->name()].first=nTensors;
if(Helper::gNeedFeatureOp.find(info->type())!=Helper::gNeedFeatureOp.end()){
for(auto t:nTensors){开发需求及案例:MrsFu123
if(_featureInfo.find(t)==_featureInfo.end()){
_featureInfo[t]=std::shared_ptr(
new TensorStatistic(t,_featureQuantizeMethod,info->name()+"__input"));
}
}
}
return false;
};
//计算后的callback完成的工作是为output tensor创建TensorStatistic对象;op info的填充op->input,output的映射
MNN::TensorCallBackWithInfo after=[this](const std::vector<MNN::Tensor*>&nTensors,
const MNN::OperatorInfo*info){
_opInfo[info->name()].second=nTensors;
if(Helper::gNeedFeatureOp.find(info->type())!=Helper::gNeedFeatureOp.end()){
for(auto t:nTensors){
if(_featureInfo.find(t)==_featureInfo.end()){
_featureInfo[t]=
std::shared_ptr(new TensorStatistic(t,_featureQuantizeMethod,info->name()));
}
}
}
return true;
};
_interpreter->runSessionWithCallBackInfo(_session,before,after);
//遍历op,由op的<input/output index,input/output>加入到tensorMap
for(auto&op:_originaleModel->oplists){
if(_opInfo.find(op->name)==_opInfo.end()){
continue;
}
for(int i=0;iinputIndexes.size();++i){
_tensorMap[op->inputIndexes]=_opInfo[op->name].first;
}
for(int i=0;ioutputIndexes.size();++i){
_tensorMap[op->outputIndexes]=_opInfo[op->name].second;
}
}
if(_featureQuantizeMethod=="KL"){
//set the tensor-statistic method of input tensor as THRESHOLD_MAX
auto inputTensorStatistic=_featureInfo.find(_inputTensor);
if(inputTensorStatistic!=_featureInfo.end()){
inputTensorStatistic->second->setThresholdMethod(THRESHOLD_MAX);
}
}
}