Example #1
0
        public double LevelPrice(FibonacciLevel level)
        {
            double levelPrice = 0;

            int multiplier = FocusPrice > AnchorPrice ? -1 : 1;

            switch (level)
            {
            case FibonacciLevel.R382:
                levelPrice = FocusPrice + (Math.Abs(AnchorPrice - FocusPrice) * 0.382 * multiplier);
                break;

            case FibonacciLevel.R500:
                levelPrice = FocusPrice + (Math.Abs(AnchorPrice - FocusPrice) * 0.500 * multiplier);
                break;

            case FibonacciLevel.R618:
                levelPrice = FocusPrice + (Math.Abs(AnchorPrice - FocusPrice) * 0.618 * multiplier);
                break;

            default:
                throw new Exception(string.Format("The fibonacci level parameter provided [{0}] is not supported.", level.ToString()));
            }

            return(levelPrice);
        }
        internal static double GetGapTradeTargetLevel(double gap, double entry, double open, double pointsTarget,
                                                      bool fibTarget = false, FibonacciLevel fibLevelTarget = FibonacciLevel.Fifty)
        {
            double target;

            if (fibTarget)
            {
                target = open - gap * GetFibRatio(fibLevelTarget);

                if (gap > 0)
                {
                    target -= pointsTarget;
                }
                else
                {
                    target += pointsTarget;
                }
            }
            else
            {
                target = gap > 0
                    ? entry - pointsTarget
                    : entry + pointsTarget;
            }

            return(Math.Round(target, 2));
        }
        private static double GetFibRatio(FibonacciLevel level)
        {
            var ratio = (double)level / 1000;

            if (ratio > 1)
            {
                ratio -= 1;
            }

            return(ratio);
        }
        internal static double GetGapTradeEntryLevel(double gap, double open, double pointsEntry, bool fibEntry = false,
                                                     FibonacciLevel fibLevelEntry = FibonacciLevel.Fifty)
        {
            var entry = gap > 0
                ? open + pointsEntry
                : open - pointsEntry;

            if (fibEntry)
            {
                entry += gap * GetFibRatio(fibLevelEntry);
            }

            return(Math.Round(entry, 2));
        }
 public double GetEntryLevel(double gap, double open, double pointsEntry, bool fibEntry, FibonacciLevel fibLevelEntry)
 {
     return(GetGapTradeEntryLevel(gap, open, pointsEntry, fibEntry, fibLevelEntry));
 }
 public double GetTargetLevel(double gap, double entry, double open, double pointsTarget, bool fibTarget, FibonacciLevel fibLevelTarget)
 {
     return(GetGapTradeTargetLevel(gap, entry, open, pointsTarget, fibTarget, fibLevelTarget));
 }
Example #7
0
        public void T3(double gap, double entry, double open, double pointsTarget, bool fibTarget, FibonacciLevel fibLevel, double expected)
        {
            var actual = GetGapTradeTargetLevel(gap, entry, open, pointsTarget, fibTarget, fibLevel);

            Assert.Equal(expected, actual);
        }
Example #8
0
        [InlineData(202, 24120, 100, true, FibonacciLevel.TwentyThreePointSix, 24267.67)]               // Out of gap trade - gap down
        public void T1(double gap, double open, double pointsEntry, bool fibEntry, FibonacciLevel fibLevel, double expected)
        {
            var actual = GetGapTradeEntryLevel(gap, open, pointsEntry, fibEntry, fibLevel);

            Assert.Equal(expected, actual);
        }