量化交易是指将计算机程序和系统性交易策略结合起来,使用数学模型和统计分析,通过算法自动判断交易买卖时机,并自动执行交易的过程。量化交易具有高效性、精确性和纪律性的特点,能够在瞬间完成决策并执行交易,减少人为干预,提高交易决策的精准性和稳定性。
量化交易通常分为以下几个步骤:
1、设定交易策略:在程序设计之前,需要根据市场行情和个别zheng juan的历史价格、成交量、基本面数据等信息,制定各种算法和交易策略,为程序提供适当的规则基础。
2、编写程序:根据交易策略,编写程序代码,并在计算机平台上进行测试和确认,以确保程序的稳定性和有效性。
3、监控市场:程序会自动收集并分析市场数据,进而确定是否开仓,调整仓位和止损。
4、执行交易:程序根据预先设定好的交易规则,自动执行开仓、平仓、调整仓位和止损等操作,
class Calibration{
public:
//参数原始模型,模型uint8_t buffer,size,json配置文件
Calibration(MNN::NetTmodel,uint8_tmodelBuffer,const int bufferSize,const std::string&configPath);
void runQuantizeModel();
private:
Calibration();
MNN::NetT*_originaleModel;//需要量化的模型
std::shared_ptr<MNN::CV::ImageProcess>_process;//负责image到tensor的转化类
const int _binNums=2048;
int _imageNum=0;
int _width;
int _height;
std::vector<std::string>_imgaes;//图片,用于校正特征量化系数的
//Tensor and Info
//tensor到对应的TensorStatistic,TensorStatistic是描述tensor在量化过程中需要的统计数据,后面有解释
std::map<const MNN::Tensor*,std::shared_ptr<TensorStatistic>>_featureInfo;
//所有的tensor
std::map<int,const MNN::Tensor*>_tensorMap;
//Op's name,Inputs,Outputs
//op到input/output tensor的映射
std::map<std::string,std::pair<std::vector<MNN::Tensor>,std::vector<MNN::Tensor>>>_opInfo;
//The scale results
std::map<const MNN::Tensor*,std::vector<float>>_scales;
std::shared_ptr<MNN::Interpreter>_interpreter;
//keep mnn forward information
MNN::Session*_session;
MNN::Tensor*_inputTensor;
std::vector<int>_inputTensorDims;
std::string _featureQuantizeMethod="KL";
std::string _weightQuantizeMethod="MAX_ABS";
void _initMNNSession(const uint8_t*modelBuffer,const int bufferSize,const int channels);
void _initMaps();
void _computeFeatureMapsRange();
void _collectFeatureMapsDistribution();
void _computeFeatureScaleKL();
void _computeFeatureScaleADMM();
void _updateScale();
//insert the dequantization op before the not supported op(int8),and insert dequantization op
//after the output op,so that get original float data conveniently
void _insertDequantize();
};
#endif//CALIBRATION_HPP