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)); }
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); }
[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); }