最近在qd上实现kelly money management,进行优化时可以参考以下代码。 using System; using RQuant.ParamSet; using RQuant.Optimization; namespace OptimizationTest { class Function : IOptimizable { double x; double y; public Function() { x = 100; y = 100; } public void Init(TParamSet ParamSet) { ParamSet.SetNParam(2); ParamSet.SetParam(0, x); ParamSet.SetParam(1, y); ParamSet.SetLowerBound(0, -100); ParamSet.SetLowerBound(1, -100); ParamSet.SetUpperBound(0, 100); ParamSet.SetUpperBound(1, 100); } public void Update(TParamSet ParamSet) { x = ParamSet.GetParam(0); y = ParamSet.GetParam(1); } public double Objective() { return (x - 10)*(x - 10) + (y + 5) * (y + 5); } public void OnStep () { ; } public void OnCircle() { ; } public void Print() { Console.WriteLine("x = {0}, y = {1}", x, y); } } class MainClass { static void Main(string[] args) { Function F = new Function(); TOptimizer Optimizer = new TCoordinateDescent(F); F.Print(); Optimizer.Optimize(); F.Print(); F = new Function(); Optimizer = new TSimulatedAnnealing(F); F.Print(); Optimizer.Optimize(); F.Print(); } } }