Ejemplo n.º 1
0
        private TradeAction MacdAndRsi(TradingPairInfo tradingPairInfo)
        {
            var     mcad   = tradingPairInfo.macd;
            decimal rsi    = tradingPairInfo.rsi.Value;
            var     srsi   = tradingPairInfo.stochRsi;
            var     Sma5   = tradingPairInfo.Ema[5].Value;
            var     Sma20  = tradingPairInfo.Ema[20].Value;
            var     Sma100 = tradingPairInfo.Ema[20].Value;
            var     Gsma20 = tradingPairInfo.Gsma[20].Value;

            if (mcad.Value > 0 && rsi < 50 && srsi.Value > 0 && Sma5 > Sma20 && Gsma20 > 0)
            {
                return(TradeAction.Buy);
            }

            if (((Sma5 - Sma20) / Sma20) >= 40m)
            {
                return(TradeAction.Sell);
            }

            if (mcad.Value <= 0 && srsi.Value < 0 && rsi > 80)
            {
                return(TradeAction.Sell);
            }

            return(TradeAction.Wait);
        }
Ejemplo n.º 2
0
        public void BaseAmountAndPrice()
        {
            // arrange
            var tradeSettings = new TradeSettings {
                CounterAmount = 10, BuyUnderPriceMargin = 1, BaseAmountSavingsRate = 5, SellPriceRate = 10
            };
            var ticker = new Ticker {
                Last = 9500
            };
            var pairInfo = new TradingPairInfo {
                BaseDecimals = 8, CounterDecimals = 2
            };

            // act
            var baseAmount     = tradeSettings.GetBuyBaseAmount(ticker, pairInfo);
            var basePrice      = tradeSettings.GetBuyBasePrice(ticker, pairInfo);
            var sellBaseAmount = tradeSettings.GetSellBaseAmount(ticker, pairInfo);
            var sellBasePrice  = tradeSettings.GetSellBasePrice(ticker, pairInfo);

            // assert
            Assert.AreEqual(baseAmount, 0.00106326M);
            Assert.AreEqual(basePrice, 9405M);
            Assert.AreEqual(sellBaseAmount, 0.001010097M);
            Assert.AreEqual(sellBasePrice, 10345.5M);
        }
Ejemplo n.º 3
0
        public IAlgorthmResults Evaulate(string ticker, TradingPairInfo tradingPairInfo)
        {
            var result = new AlgorthmResults(ticker);

            result.LastPrice     = tradingPairInfo.CurrentPrice;
            result.CloseDateTime = tradingPairInfo.CloseDateTime;
            result.Candlestick   = tradingPairInfo._candleSticks.First();
            switch (_request.Algorthm)
            {
            case TradingAlgorthm.SimpleSMA:
                result.Action = SimpleSMA(tradingPairInfo);
                break;

            case TradingAlgorthm.LongShochRsi:
                result.Action = LongShochRsi(tradingPairInfo);
                break;

            case TradingAlgorthm.Macd:
                result.Action = Macd(tradingPairInfo);
                break;

            default:
                result.Action = TradeAction.Sell;
                break;
            }

            //result.Action= sma5 > sma10 ? TradeAction.Buy : TradeAction.Sell;
            return(result);
        }
Ejemplo n.º 4
0
        private TradeAction SimpleSMA(TradingPairInfo tradingPairInfo)
        {
            var sma5  = tradingPairInfo.Ema[5].Value;
            var sma10 = tradingPairInfo.Ema[15].Value;
            var sma40 = tradingPairInfo.Ema[80].Value;

            if (sma5 > sma10 && tradingPairInfo.CurrentPrice > sma40)
            {
                return(TradeAction.Buy);
            }

            return(TradeAction.Wait);
        }
Ejemplo n.º 5
0
        private TradeAction LongShochRsi(TradingPairInfo tradingPairInfo)
        {
            var k = tradingPairInfo.stochRsi.KValue;
            var d = tradingPairInfo.stochRsi.DValue;

            if (k > d)
            {
                return(TradeAction.Buy);
            }
            else
            {
                return(TradeAction.Sell);
            }
        }
Ejemplo n.º 6
0
        private TradeAction Macd(TradingPairInfo tradingPairInfo)
        {
            var mcad           = tradingPairInfo.macd;
            var Sma100         = tradingPairInfo.Sma[100].Value;
            var Sma100gradient = tradingPairInfo.Sma[100].averageGradient;
            var currentPrice   = tradingPairInfo.CurrentPrice;

            if (mcad.Value > 0 && Sma100 > currentPrice && Sma100gradient > 0)
            {
                return(TradeAction.Buy);
            }

            //if (mcad.Value < 0 && Sma100 < currentPrice)
            //    return TradeAction.Sell;

            return(TradeAction.Wait);
        }
Ejemplo n.º 7
0
 internal void AddNewOrderToDb(ExchangeOrder order, Ticker ticker, TradeSettings tradeSettings, TradingPairInfo pairInfo)
 {
     _orderRepository.Add(new Order
     {
         BuyId          = order.Id,
         CurrencyPairId = GetCurrencyPairId(order.PairCode),
         //CurrencyPair = _currencyPairRepository.First(p => p.PairCode == order.PairCode), //todo: check with concrete repository
         BuyAmount  = order.Amount,
         BuyPrice   = order.Price,
         SellAmount = tradeSettings.GetSellBaseAmount(ticker, pairInfo),
         SellPrice  = tradeSettings.GetSellBasePrice(ticker, pairInfo)
     });
     _orderRepository.Save();
 }
Ejemplo n.º 8
0
        public decimal GetSellBasePrice(Ticker ticker, TradingPairInfo pairInfo)
        {
            var buyPrice = GetBuyBasePrice(ticker, pairInfo);

            return(Math.Round(buyPrice * (1 + SellPriceRate / 100), pairInfo.CounterDecimals));
        }
Ejemplo n.º 9
0
        public decimal GetSellBaseAmount(Ticker ticker, TradingPairInfo pairInfo)
        {
            var buyAmount = GetBuyBaseAmount(ticker, pairInfo);

            return(buyAmount - buyAmount * (BaseAmountSavingsRate / 100));
        }
Ejemplo n.º 10
0
 public decimal GetBuyBasePrice(Ticker ticker, TradingPairInfo pairInfo)
 {
     return(Math.Round(ticker.Last * (1 - BuyUnderPriceMargin / 100), pairInfo.CounterDecimals));
 }
Ejemplo n.º 11
0
 public decimal GetBuyBaseAmount(Ticker ticker, TradingPairInfo pairInfo)
 {
     return(Math.Round(CounterAmount / GetBuyBasePrice(ticker, pairInfo), pairInfo.BaseDecimals));
 }