public WaveRange(List <Rate> range, double pointSize, BarsPeriodType period) : base() { this.Period = period; this.PointSize = pointSize; this.Range = range; Count = range.Count; if (Count == 0) { return; } StartDate = range[0].StartDate; EndDate = range.Last().StartDate; if (EndDate < StartDate) { throw new InvalidOperationException("StartDate;{0} must be less then EndDate:{1}".Formater(StartDate, EndDate)); } Max = range.Max(r => r.PriceAvg); Min = range.Min(r => r.PriceAvg); Distance = range.Distances(r => r.PriceAvg).TakeLast(1).Select(t => t.Item2).DefaultIfEmpty().Single() / pointSize; DistanceCma = range.Distances(r => r.PriceCMALast).TakeLast(1).Select(t => t.Item2).DefaultIfEmpty().Single() / pointSize; TotalSeconds = range.Duration(r => r.StartDate).TotalSeconds; TotalMinutes = TotalSeconds / 60; PipsPerMinute = Distance / TotalMinutes; CalcTrendLine(range, pointSize, period); _stDevForhsd = StDevForHsd(range) / pointSize; //this.Fatness = AlgLib.correlation.pearsoncorrelation(priceAvgs, lastCmas).Abs(); }
public static FuzzyInstrument GetFuzzyInstrument(this Indicator indicator, BarsPeriodType periodType, int value, string tradingHours) { if (indicator == null) { throw new ArgumentNullException("no indicator for fuzzy insturment (?)"); } FuzzyInstrument myFuzzyInstrument = new FuzzyInstrument { Period = new BarsPeriod { BarsPeriodType = periodType, Value = value }, TradingHours = tradingHours }; try { myFuzzyInstrument.InstrumentName = indicator.Instrument.FullName; } catch { myFuzzyInstrument.InstrumentName = DefaultInstrumentName; #if DEBUG NinjaScript.Log(string.Format("{0} Had to use default data series when adding {1} ({2})", indicator.Name, myFuzzyInstrument.InstrumentName, myFuzzyInstrument.Period), LogLevel.Error); #endif } return(myFuzzyInstrument); }
internal void AddDataSeriesFuzzy(Indicator indicator, BarsPeriodType periodType, int value, string tradingHours) { FuzzyInstrument fuzzy = indicator.GetFuzzyInstrument(periodType, value, tradingHours); base.AddDataSeries(fuzzy.InstrumentName, fuzzy.Period, fuzzy.TradingHours); indicator.CopyTo(indicator); }
void CalcTrendLine(List <Rate> range, double pointSize, BarsPeriodType period) { if (range.Count == 0) { return; } var minutes = (range.Last().StartDate - range[0].StartDate).Duration().TotalMinutes; Func <TimeSpan, IEnumerable <double> > groupped = ts => range.GroupedDistinct(rate => rate.StartDate.AddMilliseconds(-rate.StartDate.Millisecond), g => g.Average(rate => rate.PriceAvg)); var doubles = period == BarsPeriodType.t1 ? groupped(1.FromSeconds()).ToArray() : range.Select(r => r.PriceAvg).ToArray(); if (doubles.Length < 2 && range.Count > 1) { doubles = groupped(1.FromSeconds()).ToArray(); } var coeffs = doubles.Linear(); this.Slope = coeffs.LineSlope(); this.Angle = Slope.Angle(period == BarsPeriodType.t1 ? 1.0 / 60 : (int)period, pointSize); this.StDev = doubles.StDevByRegressoin(coeffs) / pointSize; this.InterseptStart = coeffs.RegressionValue(0); this.InterseptEnd = coeffs.RegressionValue(doubles.Length - 1); this.DistanceByRegression = DistanceByHeightAndAngle(InterseptStart.Abs(InterseptEnd), Angle).Abs() / pointSize; }
public static string ToLocalizedObject(BarsPeriodType value, CultureInfo cultureInfo = null) { return((string)null); }
public Indicators.DivergenceInputSeriesNT8 DivergenceInputSeriesNT8(ISeries <double> input, int pricePeriod, int stoffset0, int swingoffset, int sigoffset, bool hl_mode, bool displaymsg, bool barSig_mode, int bbefore0, int bafter0, bool displayswings0, int dotsize, BarsPeriodType priceDataType0, Brush uparrowcolor, Brush dnarrowcolor, Brush swinghighcolor, Brush swinglowcolor) { return(indicator.DivergenceInputSeriesNT8(input, pricePeriod, stoffset0, swingoffset, sigoffset, hl_mode, displaymsg, barSig_mode, bbefore0, bafter0, displayswings0, dotsize, priceDataType0, uparrowcolor, dnarrowcolor, swinghighcolor, swinglowcolor)); }
public DivergenceInputSeriesNT8 DivergenceInputSeriesNT8(ISeries <double> input, int pricePeriod, int stoffset0, int swingoffset, int sigoffset, bool hl_mode, bool displaymsg, bool barSig_mode, int bbefore0, int bafter0, bool displayswings0, int dotsize, BarsPeriodType priceDataType0, Brush uparrowcolor, Brush dnarrowcolor, Brush swinghighcolor, Brush swinglowcolor) { if (cacheDivergenceInputSeriesNT8 != null) { for (int idx = 0; idx < cacheDivergenceInputSeriesNT8.Length; idx++) { if (cacheDivergenceInputSeriesNT8[idx] != null && cacheDivergenceInputSeriesNT8[idx].PricePeriod == pricePeriod && cacheDivergenceInputSeriesNT8[idx].Stoffset0 == stoffset0 && cacheDivergenceInputSeriesNT8[idx].Swingoffset == swingoffset && cacheDivergenceInputSeriesNT8[idx].Sigoffset == sigoffset && cacheDivergenceInputSeriesNT8[idx].Hl_mode == hl_mode && cacheDivergenceInputSeriesNT8[idx].Displaymsg == displaymsg && cacheDivergenceInputSeriesNT8[idx].BarSig_mode == barSig_mode && cacheDivergenceInputSeriesNT8[idx].Bbefore0 == bbefore0 && cacheDivergenceInputSeriesNT8[idx].Bafter0 == bafter0 && cacheDivergenceInputSeriesNT8[idx].Displayswings0 == displayswings0 && cacheDivergenceInputSeriesNT8[idx].Dotsize == dotsize && cacheDivergenceInputSeriesNT8[idx].PriceDataType0 == priceDataType0 && cacheDivergenceInputSeriesNT8[idx].Uparrowcolor == uparrowcolor && cacheDivergenceInputSeriesNT8[idx].Dnarrowcolor == dnarrowcolor && cacheDivergenceInputSeriesNT8[idx].Swinghighcolor == swinghighcolor && cacheDivergenceInputSeriesNT8[idx].Swinglowcolor == swinglowcolor && cacheDivergenceInputSeriesNT8[idx].EqualsInput(input)) { return(cacheDivergenceInputSeriesNT8[idx]); } } } return(CacheIndicator <DivergenceInputSeriesNT8>(new DivergenceInputSeriesNT8() { PricePeriod = pricePeriod, Stoffset0 = stoffset0, Swingoffset = swingoffset, Sigoffset = sigoffset, Hl_mode = hl_mode, Displaymsg = displaymsg, BarSig_mode = barSig_mode, Bbefore0 = bbefore0, Bafter0 = bafter0, Displayswings0 = displayswings0, Dotsize = dotsize, PriceDataType0 = priceDataType0, Uparrowcolor = uparrowcolor, Dnarrowcolor = dnarrowcolor, Swinghighcolor = swinghighcolor, Swinglowcolor = swinglowcolor }, input, ref cacheDivergenceInputSeriesNT8)); }
public Indicators.Spread Spread(ISeries <double> input, double qty1, double qty2, bool useMultiplier, string symbol2, BarsPeriodType barsPeriodTypeProp, int barsPeriodValueProp) { return(indicator.Spread(input, qty1, qty2, useMultiplier, symbol2, barsPeriodTypeProp, barsPeriodValueProp)); }
public Spread Spread(ISeries <double> input, double qty1, double qty2, bool useMultiplier, string symbol2, BarsPeriodType barsPeriodTypeProp, int barsPeriodValueProp) { if (cacheSpread != null) { for (int idx = 0; idx < cacheSpread.Length; idx++) { if (cacheSpread[idx] != null && cacheSpread[idx].Qty1 == qty1 && cacheSpread[idx].Qty2 == qty2 && cacheSpread[idx].UseMultiplier == useMultiplier && cacheSpread[idx].Symbol2 == symbol2 && cacheSpread[idx].BarsPeriodTypeProp == barsPeriodTypeProp && cacheSpread[idx].BarsPeriodValueProp == barsPeriodValueProp && cacheSpread[idx].EqualsInput(input)) { return(cacheSpread[idx]); } } } return(CacheIndicator <Spread>(new Spread() { Qty1 = qty1, Qty2 = qty2, UseMultiplier = useMultiplier, Symbol2 = symbol2, BarsPeriodTypeProp = barsPeriodTypeProp, BarsPeriodValueProp = barsPeriodValueProp }, input, ref cacheSpread)); }
public Spread Spread(double qty1, double qty2, bool useMultiplier, string symbol2, BarsPeriodType barsPeriodTypeProp, int barsPeriodValueProp) { return(Spread(Input, qty1, qty2, useMultiplier, symbol2, barsPeriodTypeProp, barsPeriodValueProp)); }