Exemple #1
0
        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();
            }
        }
Exemple #2
0
        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);
        }