private bool HasAlreadyHipe(HipeBaseStrategyItemData data)
 {
     for (int i = StrategyData.Count - 1; i >= 0; i--)
     {
         HipeBaseStrategyItemData prev = (HipeBaseStrategyItemData)StrategyData[i];
         if ((data.Time - prev.Time).TotalHours > 24)
         {
             return(false);
         }
         if (prev.BaseCurrency != data.BaseCurrency || prev.MarketCurrency != data.MarketCurrency)
         {
             continue;
         }
         if (prev.Mark == "HP")
         {
             return(true);
         }
     }
     return(false);
 }
        private void OnArbitrageChanged(object sender, ArbitrageChangedEventArgs e)
        {
            HipeBaseStrategyItemData data = new HipeBaseStrategyItemData();

            data.Time           = DataProvider.CurrentTime;
            data.BaseCurrency   = e.TickersInfo.BaseCurrency;
            data.MarketCurrency = e.TickersInfo.MarketCurrency;
            data.LowestAsk      = e.Arbitrage.LowestAsk;
            data.HighestBid     = e.Arbitrage.HighestBid;
            data.Spread         = e.Arbitrage.Spread;
            data.Profit         = e.Arbitrage.MaxProfit;
            data.ProfitUSD      = e.Arbitrage.MaxProfitUSD;

            if (HasPositiveArbitrage(e.Arbitrage))
            {
                if (!HasAlreadyHipe(data))
                {
                    data.Mark = "HP";
                }
            }
            StrategyData.Add(data);
        }