Example #1
0
 public AccountStatus StopLoss(FlipperDataModel fdm, TradeDecision td, ITradeApi tradeApi)
 {
     if (td.doTrade)
     {
         Ticker        te   = fdm.ticker.FirstOrDefault();
         AccountStatus stat = new AccountStatus
         {
             CurrentBalance    = (fdm.stats.Volume * te.last),
             LastPurchasePrice = fdm.stats.LastPurchasePrice,
             LastSalePrice     = te.last,
             StartingBalance   = fdm.stats.StartingBalance,
             StatDate          = DateTime.Now,
             Volume            = 0,
             IsSimulator       = true,
             TransactionType   = TransactionType.Sell,
             Source            = TransactionSource.Simulator,
             LastOrderDate     = DateTime.Now
         };
         TickerDAL.InsertTransaction(stat);
         return(stat);
     }
     else
     {
         return(fdm.stats);
     }
 }
        private void LoadData()
        {
            try
            {
                Fdm.macd = TickerDAL.GetMacdInterval(4, 1, -1);

                Fdm.macdIntervalFast = TickerDAL.GetMacdInterval(24, Fdm.algoConfig.MacdIntervalTime, 19, 6, 9, -1);
                Fdm.macdIntervalSlow = TickerDAL.GetMacdInterval(24, Fdm.algoConfig.MacdIntervalTime, -1);
                Fdm.depth            = TickerDAL.GetMarketDepth();
                Fdm.ticker           = TickerDAL.GetTicker(4, -1);

                if (IsAutoRefreshGridEnabled && lastGridUpdate < DateTime.Now.AddSeconds(-5))
                {
                    Macd              = new ObservableCollection <FlipperCandlestick>(Fdm.macd);
                    MacdIntervalFast  = new ObservableCollection <FlipperCandlestick>(Fdm.macdIntervalFast);
                    MacdIntervalSlow  = new ObservableCollection <FlipperCandlestick>(Fdm.macdIntervalSlow);
                    MacdChartInterval = 4;
                    Ticker            = new ObservableCollection <Ticker>(Fdm.ticker);
                    lastGridUpdate    = DateTime.Now;
                }
            }
            catch (Exception ex)
            {
                AddError(ex, "LoadData");
            }
        }
        public virtual Model.AccountStatus Buy(Model.FlipperDataModel fdm, Model.TradeDecision td, Model.ITradeApi tradeApi)
        {
            if (!IsStopLossInProgress && td.doTrade)
            {
                if (Convert.ToDouble(fdm.accountInfo.info.funds.freezed.cny) < 1 && Convert.ToDecimal(fdm.accountInfo.info.funds.free.ltc) - fdm.algoConfig.ReservedCoin < 1 && Convert.ToDecimal(fdm.accountInfo.info.funds.freezed.ltc) < 1)
                {
                    double buyPrice;
                    double freeFunds;

                    freeFunds = Convert.ToDouble(fdm.accountInfo.info.funds.free.cny);
                    decimal calculatedMarketPrice = fdm.depth.ActualMarketAsk(freeFunds.ConvertToDecimal()).Price;
                    if (td.price != null && td.price != 0)
                    {
                        buyPrice = Convert.ToDouble(td.price);
                    }
                    else
                    {
                        //Best
                        buyPrice = Convert.ToDouble((Math.Floor((fdm.macdIntervalFast[0].AveragePrice) * 100) / 100) + fdm.algoConfig.BuyThreshold);
                    }

                    decimal amountToBuy = Convert.ToDecimal(freeFunds) / Convert.ToDecimal(buyPrice);



                    if (td.useMarket)
                    {
                        buyPrice            = (calculatedMarketPrice > 0 ? calculatedMarketPrice.ConvertToDouble() : buyPrice);
                        fdm.lastOrderResult = tradeApi.Trade(freeFunds, buyPrice.ConvertToDecimal(), TradeType.BuyMarket, fdm.accountInfo);
                    }
                    else
                    {
                        fdm.lastOrderResult = tradeApi.Trade(buyPrice, amountToBuy, TradeType.Buy, fdm.accountInfo);
                    }

                    fdm.stats.LastPurchasePrice = Convert.ToDecimal(buyPrice);
                    fdm.stats.LastSalePrice     = 0;
                    fdm.stats.StatDate          = DateTime.Now;
                    fdm.stats.LastOrderDate     = DateTime.Now;
                    fdm.stats.CurrentBalance    = 0;
                    fdm.stats.Volume            = fdm.algoConfig.ReservedCoin;
                    fdm.stats.Source            = TransactionSource.LiveData;
                    fdm.stats.IsSimulator       = false;
                    currentHighPrice            = fdm.macdIntervalFast[0].CompareShortPrice;
                    TickerDAL.InsertTransaction(fdm.stats);
                    //     LoadAccountInfo(false);
                }
            }

            return(fdm.stats);
        }
        public virtual Model.AccountStatus StopLoss(Model.FlipperDataModel fdm, Model.TradeDecision td, Model.ITradeApi tradeApi)
        {
            if (td.doTrade || IsStopLossInProgress)
            {
                if (!IsStopLossInProgress)
                {
                    IsStopLossInProgress = true;
                    if (fdm.openOrders.orders.Count > 0)
                    {
                        foreach (Order o in fdm.openOrders.orders)
                        {
                            tradeApi.CancelOrder(o.orders_id);
                        }
                    }
                }
                if (Convert.ToDecimal(fdm.accountInfo.info.funds.free.ltc) - fdm.algoConfig.ReservedCoin > 1)
                {
                    tradeApi.Trade(null, Convert.ToDecimal(fdm.accountInfo.info.funds.free.ltc) - fdm.algoConfig.ReservedCoin, TradeType.SellMarket, fdm.accountInfo);
                }



                if ((Convert.ToDecimal(fdm.accountInfo.info.funds.freezed.ltc) < 1 || (fdm.stats.LastOrderDate < DateTime.Now.AddMinutes(-5))) && (Convert.ToDecimal(fdm.accountInfo.info.funds.free.ltc) - fdm.algoConfig.ReservedCoin) < 1 && Convert.ToDecimal(fdm.accountInfo.info.funds.freezed.cny) < 1 && IsStopLossInProgress)
                {
                    IsStopLossInProgress      = false;
                    fdm.stats.CurrentBalance  = 0;
                    fdm.stats.Volume          = fdm.algoConfig.ReservedCoin;
                    fdm.stats.TransactionType = TransactionType.Sell;
                    fdm.stats.Source          = TransactionSource.LiveData;
                    fdm.stats.IsSimulator     = false;
                    TickerDAL.InsertTransaction(fdm.stats);
                }


                TickerDAL.InsertTransaction(fdm.stats);
            }



            return(fdm.stats);
        }
        public virtual Model.AccountStatus Sell(Model.FlipperDataModel fdm, Model.TradeDecision td, Model.ITradeApi tradeApi)
        {
            if (!IsStopLossInProgress && td.doTrade)
            {
                if (Convert.ToDouble(fdm.accountInfo.info.funds.freezed.cny) < 1 && Convert.ToDecimal(fdm.accountInfo.info.funds.free.cny) < 15 && Convert.ToDecimal(fdm.accountInfo.info.funds.freezed.ltc) < 1)
                {
                    // double sellPrice = Convert.ToDouble(stats.LastPurchasePrice) + Convert.ToDouble(algoConfig.FixedSellThreshold);
                    // Convert.ToDouble(t.Data.last);
                    double  freeFunds    = Convert.ToDouble(fdm.accountInfo.info.funds.free.cny);
                    decimal amountToSell = Convert.ToDecimal(fdm.accountInfo.info.funds.free.ltc) - fdm.algoConfig.ReservedCoin;


                    fdm.stats.StatDate      = DateTime.Now;
                    fdm.stats.LastOrderDate = DateTime.Now;

                    double sellPrice;


                    if (td.useMarket)
                    {
                        fdm.lastOrderResult     = tradeApi.Trade(null, amountToSell, TradeType.SellMarket, fdm.accountInfo);
                        fdm.stats.LastSalePrice = fdm.ticker.FirstOrDefault <Ticker>().buy;
                    }
                    else
                    {
                        #region sellPriceCalculations
                        if (td.price != null && td.price > 0)
                        {
                            sellPrice = Convert.ToDouble(td.price);
                        }
                        else
                        {
                            if (fdm.ticker.FirstOrDefault <Ticker>().last >= fdm.stats.LastPurchasePrice + fdm.algoConfig.FixedSellThreshold && !fdm.algoConfig.UseStrictSellThreshold)
                            {
                                sellPrice = Convert.ToDouble(fdm.ticker.FirstOrDefault <Ticker>().last);
                            }
                            else if (fdm.macdIntervalFast[1].SMAHigh > fdm.ticker.FirstOrDefault <Ticker>().last&& !fdm.algoConfig.UseStrictSellThreshold)
                            {
                                sellPrice = Convert.ToDouble(fdm.macdIntervalFast[1].SMAHigh);
                            }
                            else
                            {
                                // if (!macdIntervalFast.isMacdPositive())
                                // {
                                //     sellPrice = Convert.ToDouble(stats.LastPurchasePrice + .01M);
                                //  }
                                if ((Math.Floor(fdm.macdIntervalFast[0].Resistance1 * 100) / 100) > fdm.stats.LastPurchasePrice)
                                {
                                    sellPrice = Convert.ToDouble(Math.Floor(fdm.macdIntervalFast[0].Resistance1 * 100) / 100);
                                }
                                else
                                {
                                    sellPrice = Convert.ToDouble(fdm.stats.LastPurchasePrice + fdm.algoConfig.FixedSellThreshold);
                                }
                            }
                        }
                        #endregion

                        fdm.lastOrderResult     = tradeApi.Trade(sellPrice, amountToSell, TradeType.Sell, fdm.accountInfo);
                        fdm.stats.LastSalePrice = Convert.ToDecimal(sellPrice);
                    }

                    fdm.stats.CurrentBalance  = 0;
                    fdm.stats.Volume          = fdm.algoConfig.ReservedCoin;
                    fdm.stats.TransactionType = TransactionType.Sell;
                    fdm.stats.Source          = TransactionSource.LiveData;
                    fdm.stats.IsSimulator     = false;
                    TickerDAL.InsertTransaction(fdm.stats);
                    //  LoadAccountInfo(false);
                }
            }


            Ticker te = fdm.ticker.FirstOrDefault();


            return(fdm.stats);
        }
Example #6
0
 public static List <Ticker> getSeeFriendShipTicker(string FUserId, string UserId, int top)
 {
     return(TickerDAL.getSeeFriendShipTicker(FUserId, UserId, top));
 }
Example #7
0
 public static List <Ticker> getTickerByUserIdAndFriendID(string UserId, string FriendID, int top)
 {
     return(TickerDAL.getTickerByUserIdAndFriendID(UserId, FriendID, top));
 }
Example #8
0
 public static void updateLiteral(string Tickerid, string postval, string embedval)
 {
     TickerDAL.updateLiteral(Tickerid, postval, embedval);
 }
Example #9
0
 ///////////////////////////////////////////////////////////////
 //                        SELECT BY PARAMETER
 //////////////////////////////////////////////////////////////
 public static List <Ticker> getTickerByUserId(string UserId, int top)
 {
     return(TickerDAL.getTickerByUserId(UserId, top));
 }
Example #10
0
 ///////////////////////////////////////////////////////////////
 //                        SELECT BY PARAMETER
 //////////////////////////////////////////////////////////////
 public static TickerBO getTickerByTickerId(string TickerId)
 {
     return(TickerDAL.getTickerByTickerId(TickerId));
 }
Example #11
0
 ///////////////////////////////////////////////////////////////
 //                       SELECT ALL DATA
 //////////////////////////////////////////////////////////////
 public static List <Ticker> getAllTickerList()
 {
     return(TickerDAL.getAllTickerList());
 }
Example #12
0
 ///////////////////////////////////////////////////////////////
 //                       UPDATE FUNCTION
 //////////////////////////////////////////////////////////////
 public static void updateTicker(TickerBO objTicker)
 {
     TickerDAL.updateTicker(objTicker);
 }
Example #13
0
 ///////////////////////////////////////////////////////////////
 //                       DELETE FUNCTION
 //////////////////////////////////////////////////////////////
 public static void deleteTicker(string TickerId)
 {
     TickerDAL.deleteTicker(TickerId);
 }
Example #14
0
 ///////////////////////////////////////////////////////////////
 //                       INSERT FUNCTION
 //////////////////////////////////////////////////////////////
 public static string insertTicker(TickerBO objTicker)
 {
     return(TickerDAL.insertTicker(objTicker));
 }