diff --git a/OpenQuant.API/BarSeries.cs b/OpenQuant.API/BarSeries.cs index a9ab8e6..5ed6b00 100644 --- a/OpenQuant.API/BarSeries.cs +++ b/OpenQuant.API/BarSeries.cs @@ -246,7 +246,7 @@ public BarSeries GetRange(DateTime dateTime1, DateTime dateTime2) { BarSeries barSeries = new BarSeries(); int index = this.series.GetIndex(dateTime1, EIndexOption.Next); - int index2 = this.series.GetIndex(dateTime1, EIndexOption.Prev); + int index2 = this.series.GetIndex(dateTime2, EIndexOption.Prev); if (index != -1 && index2 != -1) { for (int i = index; i <= index2; i++) diff --git a/OpenQuant.API/TimeSeries.cs b/OpenQuant.API/TimeSeries.cs index ae90cb6..02dfed8 100644 --- a/OpenQuant.API/TimeSeries.cs +++ b/OpenQuant.API/TimeSeries.cs @@ -312,17 +312,49 @@ public double GetVariance(DateTime dateTime1, DateTime dateTime2) { return new TimeSeries(series1.series + series2.series); } + public static TimeSeries operator +(TimeSeries series, double value) + { + return new TimeSeries(series.series + value); + } + public static TimeSeries operator +(double value, TimeSeries series) + { + return new TimeSeries(value + series.series); + } public static TimeSeries operator -(TimeSeries series1, TimeSeries series2) { return new TimeSeries(series1.series - series2.series); } + public static TimeSeries operator -(TimeSeries series, double value) + { + return new TimeSeries(series.series - value); + } + public static TimeSeries operator -(double value, TimeSeries series) + { + return new TimeSeries(value - series.series); + } public static TimeSeries operator *(TimeSeries series1, TimeSeries series2) { return new TimeSeries(series1.series * series2.series); } + public static TimeSeries operator *(TimeSeries series, double value) + { + return new TimeSeries(series.series * value); + } + public static TimeSeries operator *(double value, TimeSeries series) + { + return new TimeSeries(value * series.series); + } public static TimeSeries operator /(TimeSeries series1, TimeSeries series2) { return new TimeSeries(series1.series + series2.series); } + public static TimeSeries operator /(TimeSeries series, double value) + { + return new TimeSeries(series.series / value); + } + public static TimeSeries operator /(double value, TimeSeries series) + { + return new TimeSeries(value / series.series); + } } } diff --git a/README.md b/README.md index 4dcfaef..67d361f 100644 --- a/README.md +++ b/README.md @@ -3,11 +3,20 @@ OpenQuant.API加强版 此OpenQuant.API.dll是由ILSpy反编译后,经过部分修改,用Visual Studio重新编译而成。 -针对OpenQuant 3.9.2版本(会在OpenQuant新版本出来后跟进合并,OpenQuant 2014除外),x32/x64可通用。 +随时跟进OpenQuant最新版本,OpenQuant 2014除外,x32/x64可通用。 ## Features -1. 增加Bar constructor:`Bar(DateTime dateTime, double open, double high, double low, double close, long volume, long openInt, long size)` +* 增加Bar constructor:`Bar(DateTime dateTime, double open, double high, double low, double close, long volume, long openInt, long size)` + +* 增加BarSeries的Crosses系重载函数: + - `Cross Crosses(double level, Bar bar)` + - `bool CrossesAbove(double level, Bar bar)` + - `bool CrossesBelow(double level, Bar bar)` + +* 为BarSeries和Indicator增加Implicit Conversion Operator,分别转换为BarSeries.Last.Close和Indicator.Last,支持如`indicator + bars * 0.001`等语句; + +* 增加TimeSeries的加减乘除运算符重载,支持`timeseries + 42`或`42 + timeseries`运算,返回TimeSeries类型。 ## Developer's Guide