static IEnumerable <Models.Rate> GetRsi(List <Rate> rates, int func, int index) { if (rates.Count == index) { yield break; } var date = DateTime.Now; var rsi = new Rsi(func); for (int i = index; i < func + index; i++) { rsi.AddValue(rates[index].Value); date = rates[index].Time; } yield return(new Models.Rate { Date = date, Value = rsi.Last }); foreach (var r in GetRate(rates, func, index + 1)) { yield return(r); } }
public TwoLegArbitrage(string name, StartProgram startProgram) : base(name, startProgram) { TabCreate(BotTabType.Index); _tabIndex = TabsIndex[0]; TabCreate(BotTabType.Simple); _tab1 = TabsSimple[0]; TabCreate(BotTabType.Simple); _tab2 = TabsSimple[1]; _tab1.CandleFinishedEvent += Tab1_CandleFinishedEvent; _tab2.CandleFinishedEvent += Tab2_CandleFinishedEvent; _tabIndex.SpreadChangeEvent += TabIndex_CandleFinishedEvent; Regime = CreateParameter("Regime", "Off", new[] { "Off", "On", "OnlyLong", "OnlyShort", "OnlyClosePosition" }); Upline = CreateParameter("Upline", 10, 50, 80, 3); Downline = CreateParameter("Downline", 10, 25, 50, 2); Volume = CreateParameter("Volume", 3, 1, 50, 4); Slippage = CreateParameter("Slipage", 0, 0, 20, 1); RsiLength = CreateParameter("RsiLength", 10, 5, 150, 2); _rsi = new Rsi(name + "RSI", false) { Lenght = 20, ColorBase = Color.Gold, }; _rsi = (Rsi)_tabIndex.CreateCandleIndicator(_rsi, "RsiArea"); _rsi.Lenght = RsiLength.ValueInt; _rsi.Save(); ParametrsChangeByUser += TwoLegArbitrage_ParametrsChangeByUser; }
public void AverageLoss_PeriodBiggerOrEqualToDataLength_ReturnZero() { //When var result = Rsi.AverageLoss(ascending_data, period: 10); //Then Assert.Equal(0, result); }
public void RsiSingle_PeriodBiggerOrEqualToDataLength_ReturnNull() { //When var result = Rsi.RsiSingle(descending_data, period: 10); //Then Assert.Null(result); }
public void Rsi_SimpleValues_Calculated(int period, params double?[] expected) { //When var result = Rsi.RSI(_ascendingData, period); //Then Assert.Equal(expected, result); }
public void AverageLoss_SimpleValues_Calculated(int period, double expected) { //When var result = Rsi.AverageLoss(_descendingData, period); //Then Assert.Equal(expected, result); }
public void AverageGain_Must_Return_Zero_On_Descending_Values(int period, double expected) { //When var result = Rsi.AverageGain(_descendingData, period); //Then Assert.Equal(expected, result); }
public void AverageLoss_SimpleValues_Calculated() { //When var result = Rsi.AverageLoss(descending_data, period: 9); //Then Assert.Equal(1, result); }
public void Rsi_Test_14() { var rsi = new Rsi(BuildCandleSticks(), 14, ""); Assert.AreEqual(37.77m, Math.Round(rsi.Value, 2)); var results = rsi.rsi.Select(value => Math.Round(value, 2)).ToList(); Compare(RsiResults().ToList(), results); }
public static List <decimal?> Rsi(this IEnumerable <ICandle> candles, int?period = null) { period ??= 14; IIndicatorOptions options = new RsiOptions(period.Value); Rsi rsi = new Rsi(); return(rsi.Get(candles, options)); }
public void Rsi_Simplevalues_Calculated() { //When var result = Rsi.RSI(ascending_data, period: 9); double?[] expected = { null, null, null, null, null, null, null, null, null, 100 }; //Then Assert.Equal(expected, result); }
public DataNode Write(ISerializationManager serializationManager, Rsi value, bool alwaysWrite = false, ISerializationContext?context = null) { var mapping = new MappingDataNode(); mapping.Add("sprite", serializationManager.WriteValue(value.RsiPath)); mapping.Add("state", new ValueDataNode(value.RsiState)); return(mapping); }
public void RsiSingle_SimpleValues_Calculated(int period) { //When var result = Rsi.RsiSingle(_descendingData, period); var result2 = Rsi.RsiSingle(_ascendingData, period); //Then Assert.Equal(0D, result); Assert.Equal(100D, result2); }
public void RsiSingle_SimpleValues_Calculated() { //When var result = Rsi.RsiSingle(descending_data, period: 9); var result2 = Rsi.RsiSingle(ascending_data, period: 9); //Then Assert.Equal(0D, result); Assert.Equal(100D, result2); }
/// <summary> /// Called on every new bar of data. /// </summary> /// <param name="currentBar">The current bar of the simulation</param> protected override void OnBarUpdate(int currentBar) { base.OnBarUpdate(currentBar); Rsi rsi = (Rsi)Dependents[0]; if (DataSeries.CrossBelow(rsi.Value, 70, currentBar, 0) != -1) { WasFound[currentBar] = true; } }
/// <summary> /// Called on every new bar of data. /// </summary> /// <param name="currentBar">The current bar of the simulation</param> protected override void OnBarUpdate(int currentBar) { base.OnBarUpdate(currentBar); Rsi rsi = (Rsi)Dependents[0]; if (DataSeries.IsAboutToCrossAbove(rsi.Value, 30, currentBar) == true) { WasFound[currentBar] = true; } }
public RsiContrtrend(string name, StartProgram startProgram) : base(name, startProgram) { TabCreate(BotTabType.Simple); _tab = TabsSimple[0]; _ma = new MovingAverage(name + "MA", false) { Lenght = 50, ColorBase = Color.CornflowerBlue, }; _ma = (MovingAverage)_tab.CreateCandleIndicator(_ma, "Prime"); _rsi = new Rsi(name + "RSI", false) { Lenght = 20, ColorBase = Color.Gold, }; _rsi = (Rsi)_tab.CreateCandleIndicator(_rsi, "RsiArea"); Upline = new LineHorisontal("upline", "RsiArea", false) { Color = Color.Green, Value = 0, }; _tab.SetChartElement(Upline); Downline = new LineHorisontal("downline", "RsiArea", false) { Color = Color.Yellow, Value = 0 }; _tab.SetChartElement(Downline); _rsi.Save(); _ma.Save(); _tab.CandleFinishedEvent += Strateg_CandleFinishedEvent; Slipage = 0; VolumeFix = 1; Upline.Value = 65; Downline.Value = 35; Load(); Upline.TimeEnd = DateTime.Now; Downline.TimeEnd = DateTime.Now; DeleteEvent += Strategy_DeleteEvent; }
public StochRsi(IEnumerable <Candlestick> candleSticks, int rsiLength, int shochRsiLength, int smoothK, int smoothD, string ticker) { this._candleSticks = candleSticks; this._rsiLength = rsiLength; this._shochRsiLength = shochRsiLength; this._smoothK = smoothK; this._smoothD = smoothD; rsi = new Rsi(candleSticks, _rsiLength, ""); var candlesticks = _candleSticks.Skip(_rsiLength + _shochRsiLength - 1).ToList(); CalculateShochRsi(candlesticks); }
static Models.Rate GetRsi(List <Rate> rates, int func) { var date = DateTime.Now; var rsi = new Rsi(func); foreach (var rate in rates) { rsi.AddValue(rate.Value); date = rate.Time; } return(new Models.Rate { Date = date, Value = rsi.Last }); }
public DataNode Write(ISerializationManager serializationManager, SpriteSpecifier value, bool alwaysWrite = false, ISerializationContext?context = null) { return(value switch { Rsi rsi => Write(serializationManager, rsi, alwaysWrite, context), Texture texture => Write(serializationManager, texture, alwaysWrite, context), EntityPrototype entityPrototype => Write(serializationManager, entityPrototype, alwaysWrite, context), _ => throw new InvalidOperationException("Invalid SpriteSpecifier specified!") });
public Prices() { Type = Price.Close; Map = new Dictionary <Price, List <double> >(); foreach (Price type in Enum.GetValues(typeof(Price))) { Map[type] = new List <double>(); } FastEma = new Ema(Const.DIRECTIONAL_FAST_EMA_LENGTH); SlowEma = new Ema(Const.DIRECTIONAL_SLOW_EMA_LENGTH); Bb = new Bb(Const.BB_WIDTH, Const.BB_PERIOD); //Kc = new Kc(Const.BB_WIDTH, Const.BB_PERIOD); //Mc = new Mc(Const.BB_PERIOD); Macd = new Macd(FastEma, SlowEma, Const.MACD_SIGNAL_LENGTH); Rsi = new Rsi(Const.RSI_LENGTH); StochRsi = new StochRsi(Rsi, Const.STOCH_RSI_LENGTH, Const.STOCH_RSI_D_LENGTH); Indicators = new List <IIndicator> { FastEma, SlowEma, Bb, /*Kc,*/ /*Mc,*/ Macd, Rsi, StochRsi }; }
private void BuildIndicators() { Sma.Add(5, new Sma(_candleSticks, 5, pair)); Sma.Add(10, new Sma(_candleSticks, 10, pair)); Sma.Add(15, new Sma(_candleSticks, 15, pair)); Sma.Add(20, new Sma(_candleSticks, 20, pair)); Sma.Add(40, new Sma(_candleSticks, 40, pair)); Sma.Add(100, new Sma(_candleSticks, 100, pair)); Ema.Add(5, new Ema(_candleSticks, 5, pair)); Ema.Add(10, new Ema(_candleSticks, 10, pair)); Ema.Add(15, new Ema(_candleSticks, 15, pair)); Ema.Add(20, new Ema(_candleSticks, 20, pair)); Ema.Add(40, new Ema(_candleSticks, 40, pair)); Ema.Add(80, new Ema(_candleSticks, 80, pair)); Gsma.Add(20, new Gsma(_candleSticks, 20, 10, pair)); stochRsi = new StochRsi(_candleSticks, 14, 14, 8, 8, pair); rsi = new Rsi(_candleSticks, 14, pair); macd = new Macd(_candleSticks, 12, 26, 9, pair); }
/// <summary> /// If the runnable has already been created, returns that object. If not then /// returns an new runnable object based on the name and the instrument. /// </summary> /// <param name="nameAndParameters">Name of the runnable</param> /// <returns>The runnable object</returns> public Runnable GetRunnable(string nameAndParameters) { Runnable requestedItem = null; // The name can have parameters to pass to the runnable construtor // and are separated by commas. // Ex: Rsi,11,3 would create the Rsi and pass the numbers to it in a // list. Its up to the indicator to do what it will with each number. string[] splitParams = nameAndParameters.Split(','); string runnableName = splitParams[0]; string[] runnableParams = splitParams.Skip(1).Take(splitParams.Length - 1).ToArray(); // See if the runnable is created already and return that object if it is. int key = nameAndParameters.GetHashCode(); if (_createdItems.ContainsKey(key)) { requestedItem = _createdItems[key]; } else { switch (runnableName) { // Indicators. case "Bollinger": requestedItem = new Bollinger(_tickerData, this); Simulator.DataOutput.SaveIndicator((Indicator)requestedItem); break; case "BressertDss": requestedItem = new BressertDss(_tickerData, this, runnableParams); Simulator.DataOutput.SaveIndicator((Indicator)requestedItem); break; case "BressertTimingBands": requestedItem = new BressertTimingBands(_tickerData, this); Simulator.DataOutput.SaveIndicator((Indicator)requestedItem); break; case "BearBeltHold": requestedItem = new BearBeltHold(_tickerData, this); Simulator.DataOutput.SaveIndicator((Indicator)requestedItem); break; case "BearEngulfing": requestedItem = new BearEngulfing(_tickerData, this); Simulator.DataOutput.SaveIndicator((Indicator)requestedItem); break; case "BearHarami": requestedItem = new BearHarami(_tickerData, this); Simulator.DataOutput.SaveIndicator((Indicator)requestedItem); break; case "BearHaramiCross": requestedItem = new BearHaramiCross(_tickerData, this); Simulator.DataOutput.SaveIndicator((Indicator)requestedItem); break; case "BullBeltHold": requestedItem = new BullBeltHold(_tickerData, this); Simulator.DataOutput.SaveIndicator((Indicator)requestedItem); break; case "BullEngulfing": requestedItem = new BullEngulfing(_tickerData, this); Simulator.DataOutput.SaveIndicator((Indicator)requestedItem); break; case "BullHarami": requestedItem = new BullHarami(_tickerData, this); Simulator.DataOutput.SaveIndicator((Indicator)requestedItem); break; case "BullHaramiCross": requestedItem = new BullHaramiCross(_tickerData, this); Simulator.DataOutput.SaveIndicator((Indicator)requestedItem); break; case "Cci14": requestedItem = new Cci(_tickerData, this, 14); Simulator.DataOutput.SaveIndicator((Indicator)requestedItem); break; case "DarkCloudCover": requestedItem = new DarkCloudCover(_tickerData, this); Simulator.DataOutput.SaveIndicator((Indicator)requestedItem); break; case "Doji": requestedItem = new Doji(_tickerData, this); Simulator.DataOutput.SaveIndicator((Indicator)requestedItem); break; case "BearDoji": requestedItem = new BearDoji(_tickerData, this); Simulator.DataOutput.SaveIndicator((Indicator)requestedItem); break; case "DownsideTasukiGap": requestedItem = new DownsideTasukiGap(_tickerData, this); Simulator.DataOutput.SaveIndicator((Indicator)requestedItem); break; case "EaseOfMovement": requestedItem = new EaseOfMovement(_tickerData, this); Simulator.DataOutput.SaveIndicator((Indicator)requestedItem); break; case "EveningStar": requestedItem = new EveningStar(_tickerData, this); Simulator.DataOutput.SaveIndicator((Indicator)requestedItem); break; case "FallingThreeMethods": requestedItem = new FallingThreeMethods(_tickerData, this); Simulator.DataOutput.SaveIndicator((Indicator)requestedItem); break; case "Hammer": requestedItem = new Hammer(_tickerData, this); Simulator.DataOutput.SaveIndicator((Indicator)requestedItem); break; case "HangingMan": requestedItem = new HangingMan(_tickerData, this); Simulator.DataOutput.SaveIndicator((Indicator)requestedItem); break; case "InvertedHammer": requestedItem = new InvertedHammer(_tickerData, this); Simulator.DataOutput.SaveIndicator((Indicator)requestedItem); break; case "KeltnerChannel": requestedItem = new KeltnerChannel(_tickerData, this); Simulator.DataOutput.SaveIndicator((Indicator)requestedItem); break; case "Macd": requestedItem = new Macd(_tickerData, this); Simulator.DataOutput.SaveIndicator((Indicator)requestedItem); break; case "Momentum14": requestedItem = new Momentum(_tickerData, this, 14); Simulator.DataOutput.SaveIndicator((Indicator)requestedItem); break; case "MorningStar": requestedItem = new MorningStar(_tickerData, this); Simulator.DataOutput.SaveIndicator((Indicator)requestedItem); break; case "PiercingLine": requestedItem = new PiercingLine(_tickerData, this); Simulator.DataOutput.SaveIndicator((Indicator)requestedItem); break; case "PriceOscillator": requestedItem = new PriceOscillator(_tickerData, this); Simulator.DataOutput.SaveIndicator((Indicator)requestedItem); break; case "RisingThreeMethods": requestedItem = new RisingThreeMethods(_tickerData, this); Simulator.DataOutput.SaveIndicator((Indicator)requestedItem); break; case "Rsi": requestedItem = new Rsi(_tickerData, this, runnableParams); Simulator.DataOutput.SaveIndicator((Indicator)requestedItem); break; case "Rsi3m3": requestedItem = new Rsi3m3(_tickerData, this); Simulator.DataOutput.SaveIndicator((Indicator)requestedItem); break; case "ShootingStar": requestedItem = new ShootingStar(_tickerData, this); Simulator.DataOutput.SaveIndicator((Indicator)requestedItem); break; case "Sma": requestedItem = new Sma(_tickerData, this); Simulator.DataOutput.SaveIndicator((Indicator)requestedItem); break; case "StickSandwitch": requestedItem = new StickSandwitch(_tickerData, this); Simulator.DataOutput.SaveIndicator((Indicator)requestedItem); break; case "StochasticsFast": requestedItem = new StochasticsFast(_tickerData, this); Simulator.DataOutput.SaveIndicator((Indicator)requestedItem); break; case "Stochastics": requestedItem = new Stochastics(_tickerData, this); Simulator.DataOutput.SaveIndicator((Indicator)requestedItem); break; case "StochRsi": requestedItem = new StochRsi(_tickerData, this); Simulator.DataOutput.SaveIndicator((Indicator)requestedItem); break; case "Trend": requestedItem = new Trend(_tickerData, this); Simulator.DataOutput.SaveIndicator((Indicator)requestedItem); break; case "ThreeBlackCrows": requestedItem = new ThreeBlackCrows(_tickerData, this); Simulator.DataOutput.SaveIndicator((Indicator)requestedItem); break; case "ThreeWhiteSoldiers": requestedItem = new ThreeWhiteSoldiers(_tickerData, this); Simulator.DataOutput.SaveIndicator((Indicator)requestedItem); break; case "Trix": requestedItem = new Trix(_tickerData, this); Simulator.DataOutput.SaveIndicator((Indicator)requestedItem); break; case "UpsideGapTwoCrows": requestedItem = new UpsideGapTwoCrows(_tickerData, this); Simulator.DataOutput.SaveIndicator((Indicator)requestedItem); break; case "UpsideTasukiGap": requestedItem = new UpsideTasukiGap(_tickerData, this); Simulator.DataOutput.SaveIndicator((Indicator)requestedItem); break; case "WilliamsR": requestedItem = new WilliamsR(_tickerData, this); Simulator.DataOutput.SaveIndicator((Indicator)requestedItem); break; case "Dmi": requestedItem = new Dmi(_tickerData, this); Simulator.DataOutput.SaveIndicator((Indicator)requestedItem); break; case "DtOscillator": requestedItem = new DtOscillator(_tickerData, this, runnableParams); Simulator.DataOutput.SaveIndicator((Indicator)requestedItem); break; case "FibonacciZones": requestedItem = new FibonacciZones(_tickerData, this); Simulator.DataOutput.SaveIndicator((Indicator)requestedItem); break; case "ElliotWaves": requestedItem = new ElliotWaves(_tickerData, this); Simulator.DataOutput.SaveIndicator((Indicator)requestedItem); break; case "ZigZag": requestedItem = new ZigZag(_tickerData, this, runnableParams); Simulator.DataOutput.SaveIndicator((Indicator)requestedItem); break; ///////////////////////////// Strategies //////////////////////////// case "BestOfRootStrategies": requestedItem = new BestOfRootStrategies(_tickerData, this); break; case "ComboStrategy": requestedItem = new ComboStrategy(_tickerData, this); break; case "BressertApproach": requestedItem = new BressertApproach(_tickerData, this); break; case "BressertComboStrategy": requestedItem = new BressertComboStrategy(_tickerData, this); break; case "FibonacciRsi3m3": requestedItem = new FibonacciRsi3m3(_tickerData, this); break; case "FibonacciDtOscillator": requestedItem = new FibonacciDtOscillator(_tickerData, this); break; case "ElliotWavesStrategy": requestedItem = new ElliotWavesStrategy(_tickerData, this); break; // // Bull // case "BullBollingerExtended": requestedItem = new BullBollingerExtended(_tickerData, this); break; case "BullBeltHoldFound": requestedItem = new BullBeltHoldFound(_tickerData, this); break; case "BullEngulfingFound": requestedItem = new BullEngulfingFound(_tickerData, this); break; case "BullHaramiFound": requestedItem = new BullHaramiFound(_tickerData, this); break; case "BullHaramiCrossFound": requestedItem = new BullHaramiCrossFound(_tickerData, this); break; case "BullCciCrossover": requestedItem = new BullCciCrossover(_tickerData, this); break; case "BullEaseOfMovement": requestedItem = new BullEaseOfMovement(_tickerData, this); break; case "BullDojiFound": requestedItem = new BullDojiFound(_tickerData, this); break; case "HammerFound": requestedItem = new HammerFound(_tickerData, this); break; case "BullKeltnerExtended": requestedItem = new BullKeltnerExtended(_tickerData, this); break; case "BullMacdCrossover": requestedItem = new BullMacdCrossover(_tickerData, this); break; case "BullMacdMomentum": requestedItem = new BullMacdMomentum(_tickerData, this); break; case "BullMomentumCrossover": requestedItem = new BullMomentumCrossover(_tickerData, this); break; case "MorningStarFound": requestedItem = new MorningStarFound(_tickerData, this); break; case "PiercingLineFound": requestedItem = new PiercingLineFound(_tickerData, this); break; case "RisingThreeMethodsFound": requestedItem = new RisingThreeMethodsFound(_tickerData, this); break; case "BullRsiCrossover": requestedItem = new BullRsiCrossover(_tickerData, this); break; case "BullSmaCrossover": requestedItem = new BullSmaCrossover(_tickerData, this); break; case "StickSandwitchFound": requestedItem = new StickSandwitchFound(_tickerData, this); break; case "BullStochasticsFastCrossover": requestedItem = new BullStochasticsFastCrossover(_tickerData, this); break; case "BullStochasticsCrossover": requestedItem = new BullStochasticsCrossover(_tickerData, this); break; case "BullStochRsiCrossover": requestedItem = new BullStochRsiCrossover(_tickerData, this); break; case "ThreeWhiteSoldiersFound": requestedItem = new ThreeWhiteSoldiersFound(_tickerData, this); break; case "BullTrendStart": requestedItem = new BullTrendStart(_tickerData, this); break; case "BullTrixSignalCrossover": requestedItem = new BullTrixSignalCrossover(_tickerData, this); break; case "BullTrixZeroCrossover": requestedItem = new BullTrixZeroCrossover(_tickerData, this); break; case "UpsideTasukiGapFound": requestedItem = new UpsideTasukiGapFound(_tickerData, this); break; case "BullWilliamsRCrossover": requestedItem = new BullWilliamsRCrossover(_tickerData, this); break; case "BullPriceOscillator": requestedItem = new BullPriceOscillator(_tickerData, this); break; case "BullDmi": requestedItem = new BullDmi(_tickerData, this); break; case "BullBressertDss": requestedItem = new BullBressertDss(_tickerData, this, runnableParams); break; case "BullRsi3m3": requestedItem = new BullRsi3m3(_tickerData, this); break; case "BullDtOscillator": requestedItem = new BullDtOscillator(_tickerData, this); break; //////////// Predicted bull strategies /////////// case "BullCciCrossoverPredicted": requestedItem = new BullCciCrossoverPredicted(_tickerData, this); break; case "BullDmiPredicted": requestedItem = new BullDmiPredicted(_tickerData, this); break; case "BullEaseOfMovementPredicted": requestedItem = new BullEaseOfMovementPredicted(_tickerData, this); break; case "BullKeltnerExtendedPredicted": requestedItem = new BullKeltnerExtendedPredicted(_tickerData, this); break; case "BullMacdCrossoverPredicted": requestedItem = new BullMacdCrossoverPredicted(_tickerData, this); break; case "BullMomentumCrossoverPredicted": requestedItem = new BullMomentumCrossoverPredicted(_tickerData, this); break; case "BullPriceOscillatorPredicted": requestedItem = new BullPriceOscillatorPredicted(_tickerData, this); break; case "BullRsiCrossoverPredicted": requestedItem = new BullRsiCrossoverPredicted(_tickerData, this); break; case "BullSmaCrossoverPredicted": requestedItem = new BullSmaCrossoverPredicted(_tickerData, this); break; case "BullStochasticsCrossoverPredicted": requestedItem = new BullStochasticsCrossoverPredicted(_tickerData, this); break; case "BullStochasticsFastCrossoverPredicted": requestedItem = new BullStochasticsFastCrossoverPredicted(_tickerData, this); break; case "BullStochRsiCrossoverPredicted": requestedItem = new BullStochRsiCrossoverPredicted(_tickerData, this); break; case "BullTrixSignalCrossoverPredicted": requestedItem = new BullTrixSignalCrossoverPredicted(_tickerData, this); break; case "BullTrixZeroCrossoverPredicted": requestedItem = new BullTrixZeroCrossoverPredicted(_tickerData, this); break; case "BullWilliamsRCrossoverPredicted": requestedItem = new BullWilliamsRCrossoverPredicted(_tickerData, this); break; // // Bear // case "BearBollingerExtended": requestedItem = new BearBollingerExtended(_tickerData, this); break; case "BearCciCrossover": requestedItem = new BearCciCrossover(_tickerData, this); break; case "BearEaseOfMovement": requestedItem = new BearEaseOfMovement(_tickerData, this); break; case "BearDojiFound": requestedItem = new BearDojiFound(_tickerData, this); break; case "BearKeltnerExtended": requestedItem = new BearKeltnerExtended(_tickerData, this); break; case "BearMacdMomentum": requestedItem = new BearMacdMomentum(_tickerData, this); break; case "BearMacdCrossover": requestedItem = new BearMacdCrossover(_tickerData, this); break; case "BearMomentumCrossover": requestedItem = new BearMomentumCrossover(_tickerData, this); break; case "BearRsiCrossover": requestedItem = new BearRsiCrossover(_tickerData, this); break; case "BearSmaCrossover": requestedItem = new BearSmaCrossover(_tickerData, this); break; case "BearStochasticsCrossover": requestedItem = new BearStochasticsCrossover(_tickerData, this); break; case "BearStochasticsFastCrossover": requestedItem = new BearStochasticsFastCrossover(_tickerData, this); break; case "BearStochRsiCrossover": requestedItem = new BearStochRsiCrossover(_tickerData, this); break; case "BearTrendStart": requestedItem = new BearTrendStart(_tickerData, this); break; case "BearTrixSignalCrossover": requestedItem = new BearTrixSignalCrossover(_tickerData, this); break; case "BearTrixZeroCrossover": requestedItem = new BearTrixZeroCrossover(_tickerData, this); break; case "BearWilliamsRCrossover": requestedItem = new BearWilliamsRCrossover(_tickerData, this); break; case "BearBeltHoldFound": requestedItem = new BearBeltHoldFound(_tickerData, this); break; case "BearEngulfingFound": requestedItem = new BearEngulfingFound(_tickerData, this); break; case "BearHaramiFound": requestedItem = new BearHaramiFound(_tickerData, this); break; case "BearHaramiCrossFound": requestedItem = new BearHaramiCrossFound(_tickerData, this); break; case "DarkCloudCoverFound": requestedItem = new DarkCloudCoverFound(_tickerData, this); break; case "DownsideTasukiGapFound": requestedItem = new DownsideTasukiGapFound(_tickerData, this); break; case "EveningStarFound": requestedItem = new EveningStarFound(_tickerData, this); break; case "FallingThreeMethodsFound": requestedItem = new FallingThreeMethodsFound(_tickerData, this); break; case "HangingManFound": requestedItem = new HangingManFound(_tickerData, this); break; case "InvertedHammerFound": requestedItem = new InvertedHammerFound(_tickerData, this); break; case "ShootingStarFound": requestedItem = new ShootingStarFound(_tickerData, this); break; case "ThreeBlackCrowsFound": requestedItem = new ThreeBlackCrowsFound(_tickerData, this); break; case "UpsideGapTwoCrowsFound": requestedItem = new UpsideGapTwoCrowsFound(_tickerData, this); break; case "BearPriceOscillator": requestedItem = new BearPriceOscillator(_tickerData, this); break; case "BearDmi": requestedItem = new BearDmi(_tickerData, this); break; case "BearBressertDss": requestedItem = new BearBressertDss(_tickerData, this, runnableParams); break; case "BearRsi3m3": requestedItem = new BearRsi3m3(_tickerData, this); break; case "BearDtOscillator": requestedItem = new BearDtOscillator(_tickerData, this); break; //////////// Predicted bear strategies /////////// case "BearCciCrossoverPredicted": requestedItem = new BearCciCrossoverPredicted(_tickerData, this); break; case "BearDmiPredicted": requestedItem = new BearDmiPredicted(_tickerData, this); break; case "BearEaseOfMovementPredicted": requestedItem = new BearEaseOfMovementPredicted(_tickerData, this); break; case "BearKeltnerExtendedPredicted": requestedItem = new BearKeltnerExtendedPredicted(_tickerData, this); break; case "BearMacdCrossoverPredicted": requestedItem = new BearMacdCrossoverPredicted(_tickerData, this); break; case "BearMomentumCrossoverPredicted": requestedItem = new BearMomentumCrossoverPredicted(_tickerData, this); break; case "BearPriceOscillatorPredicted": requestedItem = new BearPriceOscillatorPredicted(_tickerData, this); break; case "BearRsiCrossoverPredicted": requestedItem = new BearRsiCrossoverPredicted(_tickerData, this); break; case "BearSmaCrossoverPredicted": requestedItem = new BearSmaCrossoverPredicted(_tickerData, this); break; case "BearStochasticsCrossoverPredicted": requestedItem = new BearStochasticsCrossoverPredicted(_tickerData, this); break; case "BearStochasticsFastCrossoverPredicted": requestedItem = new BearStochasticsFastCrossoverPredicted(_tickerData, this); break; case "BearStochRsiCrossoverPredicted": requestedItem = new BearStochRsiCrossoverPredicted(_tickerData, this); break; case "BearTrixSignalCrossoverPredicted": requestedItem = new BearTrixSignalCrossoverPredicted(_tickerData, this); break; case "BearTrixZeroCrossoverPredicted": requestedItem = new BearTrixZeroCrossoverPredicted(_tickerData, this); break; case "BearWilliamsRCrossoverPredicted": requestedItem = new BearWilliamsRCrossoverPredicted(_tickerData, this); break; default: throw new Exception(nameAndParameters + " doesn't exist"); } _createdItems[key] = requestedItem; } return(requestedItem); }
public FastDelta(string name, StartProgram startProgram) : base(name, startProgram) { TabCreate(BotTabType.Simple); TabCreate(BotTabType.Simple); _tab = TabsSimple[0]; _tab_Slow = TabsSimple[1]; _tab.CandleFinishedEvent += _tab_CandleFinishedEvent; _tab.PositionOpeningSuccesEvent += _tab_PositionOpeningSuccesEvent; _tab.PositionClosingSuccesEvent += _tab_PositionClosingSuccesEvent; _tab_Slow.CandleFinishedEvent += _tab_Slow_CandleFinishedEvent; this.ParametrsChangeByUser += FastDelta_ParametrsChangeByUser; Regime = CreateParameter("Regime", "Off", new[] { "Off", "On" }); Slippage = CreateParameter("Slippage", 0, 0, 20, 1); TrailStop = CreateParameter("Trail Stop", 0.1m, 0m, 5, 0.1m); MinProfitTraling = CreateParameter("Минимальный профит для трэйлинга", 0.2m, 0.2m, 2, 0.1m); leverage = CreateParameter("Маржинальное плечо", 0.1m, 0.1m, 10, 0.1m); MaxStop = CreateParameter("MaxStop", 1, 1, 10, 0.1m); isContract = CreateParameter("Торгуем контрактами", false); DepoCurrency = CreateParameter("DepoCurrency", "Currency2", new[] { "Currency1", "Currency2" }); TimeFastLenth = CreateParameter("MA Time fast", 10, 5, 200, 5); TimeSlowLenth = CreateParameter("MA Time slow", 10, 5, 200, 5); VolFastLenth = CreateParameter("MA Vol fast", 10, 5, 200, 5); VolSlowLenth = CreateParameter("MA Vol slow", 10, 5, 200, 5); TralingMaLenth = CreateParameter("MA Traling", 10, 5, 200, 5); maLenth = CreateParameter("Период скользящей по объему", 24, 24, 48, 1); DeltaSizeK = CreateParameter("Коэфт для размера дельты", 6, 1, 40, 1); TimeMaFast = new MovingAverage(name + "TimeMaFast", false) { ColorBase = System.Drawing.Color.Yellow, TypePointsToSearch = PriceTypePoints.Time }; TimeMaFast.Lenght = TimeFastLenth.ValueInt; TimeMaFast = (MovingAverage)_tab.CreateCandleIndicator(TimeMaFast, "New1"); TimeMaFast.Save(); TimeMaSlow = new MovingAverage(name + "TimeMaSlow", false) { ColorBase = System.Drawing.Color.Green, TypePointsToSearch = PriceTypePoints.Time }; TimeMaSlow = (MovingAverage)_tab.CreateCandleIndicator(TimeMaSlow, "New1"); TimeMaSlow.Lenght = TimeSlowLenth.ValueInt; TimeMaSlow.Save(); VolMaFast = new MovingAverage(name + "VolMaFast", false) { ColorBase = System.Drawing.Color.Yellow, Lenght = 10, TypePointsToSearch = PriceTypePoints.Volume, TypeCalculationAverage = MovingAverageTypeCalculation.Exponential }; VolMaFast = (MovingAverage)_tab.CreateCandleIndicator(VolMaFast, "New2"); VolMaFast.Lenght = VolFastLenth.ValueInt; VolMaFast.Save(); VolMaSlow = new MovingAverage(name + "VolMaSlow", false) { ColorBase = System.Drawing.Color.Green, TypePointsToSearch = PriceTypePoints.Volume, TypeCalculationAverage = MovingAverageTypeCalculation.Exponential }; VolMaSlow = (MovingAverage)_tab.CreateCandleIndicator(VolMaSlow, "New2"); VolMaSlow.Lenght = VolSlowLenth.ValueInt; VolMaSlow.Save(); TralingStopMa = new MovingAverage(name + "TralingStopMa", false) { ColorBase = System.Drawing.Color.Blue, TypePointsToSearch = PriceTypePoints.Close }; TralingStopMa = (MovingAverage)_tab.CreateCandleIndicator(TralingStopMa, "Prime"); TralingStopMa.Lenght = TralingMaLenth.ValueInt; TralingStopMa.Save(); maVolume = new MovingAverage(name + "_maVolume", false); maVolume = (MovingAverage)_tab_Slow.CreateCandleIndicator(maVolume, "New1"); maVolume.Lenght = maLenth.ValueInt; maVolume.TypeCalculationAverage = MovingAverageTypeCalculation.Exponential; maVolume.TypePointsToSearch = PriceTypePoints.Volume; maVolume.Save(); delta = new Delta(name + "delta", false); delta = (Delta)_tab.CreateCandleIndicator(delta, "New3"); delta.Save(); rsi = new Rsi(name + "Rsi", false); rsi = (Rsi)_tab.CreateCandleIndicator(rsi, "New4"); rsi.Lenght = 21; rsi.Save(); /* * _envelop = new Envelops(name + "Envelop", false); * _envelop = (Envelops)_tab.CreateCandleIndicator(_envelop, "Prime"); * _envelop.MovingAverage.Lenght = 21; * _envelop.Deviation = 0.3m; * _envelop.Save(); */ CanTrade = false; }
public Rsi Copy(ISerializationManager serializationManager, Rsi source, Rsi target, bool skipHook, ISerializationContext?context = null) { return(new(source.RsiPath, source.RsiState)); }
internal static TradeIdeasGeneratorArgument Create(List <Signal> signals, HistoricalData historicalData) { TradeIdeasGeneratorArgument result = new TradeIdeasGeneratorArgument(); SmaVol smaVol20 = new SmaVol(20); Sma sma50 = new Sma(50); Rsi stRsi5 = new Rsi(5); Rsi rsi14 = new Rsi(14); Rsi ltrsi50 = new Rsi(50); Cci stCci5 = new Cci(5); Cci cci14 = new Cci(14); Cci ltCci50 = new Cci(50); Stoch stoch14 = new Stoch(14, 14, 3); WillR willr14 = new WillR(14); Mfi mfi14 = new Mfi(14); Adx adx20 = new Adx(20); Atr atr20 = new Atr(20); //Assuming that signals are sorted by dates descending and all signals are present. otherwize an exception will be thrown during fetching signals (First()) #region Indicators result.Rsi14 = GetValue(signals.LatestForIndicator(rsi14)); result.YesterdayRsi14 = GetValue(signals.PreviousForIndicator(rsi14, 1)); result.StRsi5 = GetValue(signals.LatestForIndicator(stRsi5)); result.YesterdayStRsi5 = GetValue(signals.PreviousForIndicator(stRsi5, 1)); result.LtRsi50 = GetValue(signals.LatestForIndicator(ltrsi50)); result.Cci14 = GetValue(signals.LatestForIndicator(cci14)); result.YesterdayCci14 = GetValue(signals.PreviousForIndicator(cci14, 1)); result.StCci5 = GetValue(signals.LatestForIndicator(stCci5)); result.YesterdayStCci5 = GetValue(signals.PreviousForIndicator(stCci5, 1)); result.LtCci50 = GetValue(signals.LatestForIndicator(ltCci50)); result.Stoch14 = GetValue(signals.LatestForIndicator(stoch14)); result.YesterdayStoch14 = GetValue(signals.PreviousForIndicator(stoch14, 1)); result.WillR14 = GetValue(signals.LatestForIndicator(willr14)); result.YesterdayWillR14 = GetValue(signals.PreviousForIndicator(willr14, 1)); result.Mfi14 = GetValue(signals.LatestForIndicator(mfi14)); result.YesterdayMfi14 = GetValue(signals.PreviousForIndicator(mfi14, 1)); result.SmaVol20 = GetValue(signals.LatestForIndicator(smaVol20)); result.Sma50 = GetValue(signals.LatestForIndicator(sma50)); result.Adx20 = GetValue(signals.LatestForIndicator(adx20)); result.Atr20 = GetValue(signals.LatestForIndicator(atr20)); //Long Term Sentiment(6 months) Signal syrahSentiment = signals.LatestForIndicator(LongTermSentimentForDependencies); int? sentimentValue = syrahSentiment == null ? null : (int?)syrahSentiment.Value; result.LongTermSentiment = SyrahSentiment.MakeInterpretationInTermsOfSentiment(sentimentValue); //Short Term Sentiment(1 month) syrahSentiment = signals.LatestForIndicator(ShortTermSentimentForDependencies); sentimentValue = syrahSentiment == null ? null : (int?)syrahSentiment.Value; result.ShortTermSentiment = SyrahSentiment.MakeInterpretationInTermsOfSentiment(sentimentValue); #endregion //if (expandedQuote == null) //{ // result.LastPrice = historicalData.Close[historicalData.Count - 1]; //} //else //{ // result.LastPrice = expandedQuote.Last; // result.HasOption = expandedQuote.HasOption; //} result.RangeStdDev = historicalData.GetPriceRangeStdDevFor6Months(); //result.NearestSupport = supportAndResistance.GetClosestSupport(expandedQuote.Last); //result.NearestResistance = supportAndResistance.GetClosestResistance(expandedQuote.Last); //TODO: check int yesterdayIndex = historicalData.High.Length - 2; result.YesterdayHigh = historicalData.High[yesterdayIndex]; result.YesterdayLow = historicalData.Low[yesterdayIndex]; return(result); }
public static void CalculateRsiOriginal() { var data = Rsi.CalculateRsi(HistoricalData, 14, CancellationToken.None); Debug.WriteLine(data.ToList().Count); }
public static void CalculateRsiFixed() { var dataFromFixed = Rsi.CalculateRsiFixed(HistoricalData, 14, CancellationToken.None); Debug.WriteLine(dataFromFixed.ToList().Count); }
// Example: // // rax=000007f7d5e4e000 rbx=0000000000000000 rcx=0000000000000000 // rdx=000007fcac628f98 rsi=0000000000000000 rdi=0000000000000000 // rip=000007fcac571e00 rsp=0000000b9879fb78 rbp=0000000000000000 // r8=0000000000000000 r9=000007fcac628f98 r10=0000000000000000 // r11=0000000000000000 r12=0000000000000000 r13=0000000000000000 // r14=0000000000000000 r15=0000000000000000 // iopl=0 nv up ei pl zr na po nc // cs=0033 ss=002b ds=002b es=002b fs=0053 gs=002b efl=00000246 // ntdll!DbgBreakPoint: // public override ColorString ToColorString() { if (null == m_colorString) { ConsoleColor color; ColorString cs = new ColorString("rax="); color = GetColorForDiffAgainstBaseline("rax"); cs.Append(Rax.GetColorizedValueString(color)); cs.Append(" rbx="); color = GetColorForDiffAgainstBaseline("rbx"); cs.Append(Rbx.GetColorizedValueString(color)); cs.Append(" rcx="); color = GetColorForDiffAgainstBaseline("rcx"); cs.Append(Rcx.GetColorizedValueString(color)); cs.AppendLine(); cs.Append("rdx="); color = GetColorForDiffAgainstBaseline("rdx"); cs.Append(Rdx.GetColorizedValueString(color)); cs.Append(" rsi="); color = GetColorForDiffAgainstBaseline("rsi"); cs.Append(Rsi.GetColorizedValueString(color)); cs.Append(" rdi="); color = GetColorForDiffAgainstBaseline("rdi"); cs.Append(Rdi.GetColorizedValueString(color)); cs.AppendLine(); cs.Append("rip="); color = GetColorForDiffAgainstBaseline("rip"); cs.Append(Rip.GetColorizedValueString(color)); cs.Append(" rsp="); color = GetColorForDiffAgainstBaseline("rsp"); cs.Append(Rsp.GetColorizedValueString(color)); cs.Append(" rbp="); color = GetColorForDiffAgainstBaseline("rbp"); cs.Append(Rbp.GetColorizedValueString(color)); cs.AppendLine(); cs.Append(" r8="); color = GetColorForDiffAgainstBaseline("r8"); cs.Append(R8.GetColorizedValueString(color)); cs.Append(" r9="); color = GetColorForDiffAgainstBaseline("r9"); cs.Append(R9.GetColorizedValueString(color)); cs.Append(" r10="); color = GetColorForDiffAgainstBaseline("r10"); cs.Append(R10.GetColorizedValueString(color)); cs.AppendLine(); cs.Append("r11="); color = GetColorForDiffAgainstBaseline("r11"); cs.Append(R11.GetColorizedValueString(color)); cs.Append(" r12="); color = GetColorForDiffAgainstBaseline("r12"); cs.Append(R12.GetColorizedValueString(color)); cs.Append(" r13="); color = GetColorForDiffAgainstBaseline("r13"); cs.Append(R13.GetColorizedValueString(color)); cs.AppendLine(); cs.Append("r14="); color = GetColorForDiffAgainstBaseline("r14"); cs.Append(R14.GetColorizedValueString(color)); cs.Append(" r15="); color = GetColorForDiffAgainstBaseline("r15"); cs.Append(R15.GetColorizedValueString(color)); cs.AppendLine(); cs.Append("iopl="); color = GetColorForDiffAgainstBaseline("iopl"); cs.AppendPushPopFg(color, ((ulong)Iopl.Value).ToString("x")); // TODO: cs.AppendLine(" TBD: flags"); cs.Append("cs="); color = GetColorForDiffAgainstBaseline("cs"); cs.AppendPushPopFg(color, ((ushort)Cs.Value).ToString("x4")); cs.Append(" ss="); color = GetColorForDiffAgainstBaseline("ss"); cs.AppendPushPopFg(color, ((ushort)Ss.Value).ToString("x4")); cs.Append(" ds="); color = GetColorForDiffAgainstBaseline("ds"); cs.AppendPushPopFg(color, ((ushort)Ds.Value).ToString("x4")); cs.Append(" es="); color = GetColorForDiffAgainstBaseline("es"); cs.AppendPushPopFg(color, ((ushort)Es.Value).ToString("x4")); cs.Append(" fs="); color = GetColorForDiffAgainstBaseline("fs"); cs.AppendPushPopFg(color, ((ushort)Fs.Value).ToString("x4")); cs.Append(" gs="); color = GetColorForDiffAgainstBaseline("gs"); cs.AppendPushPopFg(color, ((ushort)Gs.Value).ToString("x4")); cs.Append(" efl="); color = GetColorForDiffAgainstBaseline("efl"); cs.Append(Efl.GetColorizedValueString(color)); cs.AppendLine(); cs.Append(DbgProvider.ColorizeSymbol(StackFrame.SymbolName)); if (0 != StackFrame.Displacement) { cs.Append("+0x"); cs.Append(StackFrame.Displacement.ToString("x")); } cs.AppendLine(":"); cs.Append(Disasm(Rip.ValueAsPointer)); m_colorString = cs; } return(m_colorString); } // end ToString()