現貨量化交易機器人開發穩定版丨現貨量化交易機器人系統開發(成熟及方案)

xiaofufu發表於2023-02-28

   量化交易策略大體上可以分為兩類,一類是判斷趨勢進行高拋低吸的策略,即趨勢策略;另一類是消除系統性的風險獲取相對穩健收益的策略,即策略。


  自動交易機器人在雲伺服器上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=[&](const std::vector<MNN::Tensor*>&nTensors,const MNN::OperatorInfo*info){


  _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<TensorStatistic>(


  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<TensorStatistic>(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;i<op->inputIndexes.size();++i){


  _tensorMap[op->inputIndexes<i>]=_opInfo[op->name].first<i>;


  }


  for(int i=0;i<op->outputIndexes.size();++i){


  _tensorMap[op->outputIndexes<i>]=_opInfo[op->name].second<i>;


  }


  }


  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);


  }


  }


  }


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69956839/viewspace-2937451/,如需轉載,請註明出處,否則將追究法律責任。

相關文章