public TradeIdeasSentiment GetSentiment(TradeIdeaRule ruleMatch, HistoricalData historicalData) { TradeIdeasSentiment tradeIdeasSentiment = TradeIdeasSentiment.Bullish; if (ruleMatch != TradeIdeaRule.None) { tradeIdeasSentiment = ruleMatch.GetSentiment(); return(tradeIdeasSentiment); } if (historicalData == null) { return(tradeIdeasSentiment); } Tuple <int?, int?> sentimentValues = _signalsProxyService.GetSyrahSentimentTermValues(historicalData); Tuple <SignalInterpretation, SignalInterpretation> sentimentInterpretations = _signalsProxyService.MakeInterpretationOfSyrahSentiments(sentimentValues); SignalInterpretation shortTermInterpretation = sentimentInterpretations.Item1; SignalInterpretation longTermInterpretation = sentimentInterpretations.Item2; if (shortTermInterpretation == null || longTermInterpretation == null) { return(tradeIdeasSentiment); } SentimentInterpretationValue shortTermSentimentInterpretationValue = (SentimentInterpretationValue)shortTermInterpretation.Interpretation; SentimentInterpretationValue longTermSentimentInterpretationValue = (SentimentInterpretationValue)longTermInterpretation.Interpretation; if (longTermSentimentInterpretationValue == SentimentInterpretationValue.Neutral) { switch (shortTermSentimentInterpretationValue) { case SentimentInterpretationValue.Bullish: case SentimentInterpretationValue.MildlyBullish: case SentimentInterpretationValue.Neutral: return(TradeIdeasSentiment.Bullish); case SentimentInterpretationValue.Bearish: case SentimentInterpretationValue.MildlyBearish: return(TradeIdeasSentiment.Bearish); default: throw new ArgumentOutOfRangeException(); } } switch (longTermSentimentInterpretationValue) { case SentimentInterpretationValue.Bullish: case SentimentInterpretationValue.MildlyBullish: return(TradeIdeasSentiment.Bullish); case SentimentInterpretationValue.Bearish: case SentimentInterpretationValue.MildlyBearish: return(TradeIdeasSentiment.Bearish); default: throw new ArgumentOutOfRangeException(); } }
public static SignalInterpretation MakeInterpretationBasedOnValue(IIndicator indicator, int value) { SignalInterpretation result = new SignalInterpretation(indicator); SentimentInterpretationValue interpretation = SentimentInterpretationValue.Neutral; switch (value) { case -4: interpretation = SentimentInterpretationValue.Bearish; result.SecondaryTag = SecondaryTagValue.Overextended; break; case -3: interpretation = SentimentInterpretationValue.Bearish; result.SecondaryTag = SecondaryTagValue.Continuation; break; case -2: interpretation = SentimentInterpretationValue.Bearish; result.SecondaryTag = SecondaryTagValue.Start; break; case -1: interpretation = SentimentInterpretationValue.Neutral; result.SecondaryTag = SecondaryTagValue.BearishTurningNeutral; break; case 0: interpretation = SentimentInterpretationValue.MildlyBearish; break; case 1: interpretation = SentimentInterpretationValue.MildlyBullish; break; case 2: interpretation = SentimentInterpretationValue.Neutral; result.SecondaryTag = SecondaryTagValue.BullishTurningNeutral; break; case 3: interpretation = SentimentInterpretationValue.Bullish; result.SecondaryTag = SecondaryTagValue.Start; break; case 4: interpretation = SentimentInterpretationValue.Bullish; result.SecondaryTag = SecondaryTagValue.Continuation; break; case 5: interpretation = SentimentInterpretationValue.Bullish; result.SecondaryTag = SecondaryTagValue.Overextended; break; } result.Interpretation = (SignalInterpretationValue)interpretation; return(result); }