Example #1
0
 public void Create_ParamsSet__CorrectBackBufferLength()
 {
     const int periodValue = 125;
     StatBB testObj = new StatBB("");
     testObj.StatParams.Set(StatBBParams.Period, periodValue);
     testObj.BackBufferLength.ShouldBe(periodValue);
 }
Example #2
0
 public void Create__HasDefaultValues()
 {
     StatBB testObj = new StatBB("");
     testObj.StatParams.Get(StatBBParams.Period).As<int>().ShouldBeGreaterThan(0);
     testObj.StatParams.Get(StatBBParams.SigmaWidth).As<float>().ShouldBeGreaterThan(0);
     testObj.BackBufferLength.ShouldBe(testObj.StatParams.Get(StatBBParams.Period).As<int>());
 }
Example #3
0
 public static void Initialize(BBTrendFundsData data, string[] fundsNames, int bbPeriod, float bbSigmaWidth, int hlPeriod, IStockDataProvider dataProvider)
 {
     for (int i = 0; i < fundsNames.Length; i++)
     {
         data.Stocks[i] = dataProvider.GetStockDefinition(fundsNames[i]);
         StockStat statBB = new StatBB("")
                            .SetParam(StatBBParams.Period, new MOParamInt()
         {
             Value = bbPeriod
         })
                            .SetParam(StatBBParams.SigmaWidth, new MOParamFloat()
         {
             Value = bbSigmaWidth
         });
         data.StatsBB[i]             = (StatBB)statBB;
         data.CurrentTrends[i]       = BBTrendType.Unknown;
         data.CurrentExpectations[i] = BBTrendExpectation.Unknown;
         StockStat statHL = new StatHLChannel("")
                            .SetParam(StatHLChannelParams.Period, new MOParamInt()
         {
             Value = hlPeriod
         });
         data.StatsHLChannel[i]     = (StatHLChannel)statHL;
         data.ExpectationChanged[i] = false;
     }
 }
Example #4
0
 public static BBTrendExpectation GetExpectation(StockPricesData data, StatBB statBB, int leadingIndex, BBTrendType currentTrend)
 {
     if (currentTrend == BBTrendType.Up)
     {
         return(data.C[leadingIndex] > statBB.Data(StatBBData.SMA)[leadingIndex - statBB.BackBufferLength + 1]
             ? BBTrendExpectation.UpAndRaising
             : BBTrendExpectation.UpButPossibleChange);
     }
     if (currentTrend == BBTrendType.Down)
     {
         return(data.C[leadingIndex] <= statBB.Data(StatBBData.SMA)[leadingIndex - statBB.BackBufferLength + 1]
             ? BBTrendExpectation.DownAndFalling
             : BBTrendExpectation.DownButPossibleChange);
     }
     return(BBTrendExpectation.Unknown);
 }
Example #5
0
 public static BBTrendType RecognizeTrend(StockPricesData data, StatBB statBB, int leadingIndex, BBTrendType currentTrend, out float trendStartLevel)
 {
     trendStartLevel = 0;
     if (((currentTrend == BBTrendType.Unknown) || (currentTrend == BBTrendType.Up)) &&
         ((data.L[leadingIndex] < statBB.Data(StatBBData.BBL)[leadingIndex - statBB.BackBufferLength + 1]) || (data.L[leadingIndex] < statBB.Data(StatBBData.BBL)[leadingIndex - statBB.BackBufferLength])))
     {
         trendStartLevel = Math.Max(statBB.Data(StatBBData.BBL)[leadingIndex - statBB.BackBufferLength + 1], statBB.Data(StatBBData.BBL)[leadingIndex - statBB.BackBufferLength]);
         return(BBTrendType.Down);
     }
     if (((currentTrend == BBTrendType.Unknown) || (currentTrend == BBTrendType.Down)) &&
         ((data.H[leadingIndex] > statBB.Data(StatBBData.BBH)[leadingIndex - statBB.BackBufferLength + 1]) || (data.H[leadingIndex] > statBB.Data(StatBBData.BBH)[leadingIndex - statBB.BackBufferLength])))
     {
         trendStartLevel = Math.Min(statBB.Data(StatBBData.BBH)[leadingIndex - statBB.BackBufferLength + 1], statBB.Data(StatBBData.BBH)[leadingIndex - statBB.BackBufferLength]);
         return(BBTrendType.Up);
     }
     return(currentTrend);
 }