Ejemplo n.º 1
0
        static public void SavePage(string path, OfferPage page)
        {
            XmlDocument doc = new XmlDocument();

            XmlNode root = doc.CreateElement("record");

            doc.AppendChild(root);

            XmlElement date = doc.CreateElement("info");

            root.AppendChild(date);
            date.SetAttribute("date", System.DateTime.Now.ToString());

            XmlElement table = doc.CreateElement("table");

            root.AppendChild(table);
            table.SetAttribute("offer-type", "buy");

            foreach (var rec in page.buyOffers)
            {
                XmlElement record = doc.CreateElement("sheet");
                table.AppendChild(record);

                record.SetAttribute("info.Price", rec.info.BuyPrice.ToString());
                record.SetAttribute("price_fee", rec.info.GetFeePrice(rec.buyOffer).ToString());
                record.SetAttribute("min", rec.min.ToString());
                record.SetAttribute("max", rec.max.ToString());
                record.SetAttribute("sepa", rec.sepa.ToString());
                record.SetAttribute("express", rec.express.ToString());
                record.SetAttribute("req_ident", rec.fullyIdentified.ToString());
            }

            table = doc.CreateElement("table");
            root.AppendChild(table);
            table.SetAttribute("offer-type", "sell");

            foreach (var rec in page.sellOffers)
            {
                XmlElement record = doc.CreateElement("sheet");
                table.AppendChild(record);

                record.SetAttribute("price", rec.info.BuyPrice.ToString());
                record.SetAttribute("price_fee", rec.info.GetFeePrice(rec.buyOffer).ToString());
                record.SetAttribute("min", rec.min.ToString());
                record.SetAttribute("max", rec.max.ToString());
                record.SetAttribute("sepa", rec.sepa.ToString());
                record.SetAttribute("express", rec.express.ToString());
                record.SetAttribute("req_ident", rec.fullyIdentified.ToString());
            }



            System.IO.Directory.CreateDirectory(path);

            doc.Save(path + page.timeStamp.ToString().Replace(':', '_') + ".xml");
        }
Ejemplo n.º 2
0
        public Analysation Analyse(OfferPage page)
        {
            Analysation ana = new Analysation();

            ana.buyOffers.Add(page.buyOffers[0]);
            ana.sellOffers.Add(page.sellOffers[0]);


            //buy: 0.2 - 0.4
            //sell: 0.1 - 0.5
            // -> 0.2 - 0.3
            //   s_min <= b_min <= s_max
            //|| b_min <= s_min <= b_max

            Record buy  = page.buyOffers[0];
            Record sell = page.sellOffers[0];

            //dows buy or sell offer limit?
            bool lowerBuy  = sell.min <= buy.min && buy.min <= sell.max;
            bool lowerSell = buy.min <= sell.min && sell.min <= buy.max;

            bool upperBuy  = sell.min <= buy.max && buy.max <= sell.max;
            bool upperSell = buy.min <= sell.max && sell.max <= buy.max;

            ana.possible = lowerBuy || lowerSell;

            float lowerLimit = lowerBuy ? buy.min : sell.min;
            float upperLimit = upperBuy ? buy.max : sell.max;

            ana.possible = page.buyOffers[0].min <= page.sellOffers[0].max && page.buyOffers[0].max >= page.sellOffers[0].min;
            ana.min      = lowerLimit;
            ana.max      = upperLimit;

            foreach (var rec in ana.buyOffers)
            {
                ana.express &= rec.express;
            }
            foreach (var rec in ana.sellOffers)
            {
                ana.express &= rec.express;
            }

            return(ana);
        }
Ejemplo n.º 3
0
        void LoadAnalysatorRecord(int i)
        {
            if (i >= 0 && i < analysator._pageList.Count)
            {
                OfferPage page = analysator._pageList[i];

                var ana = analysator.Analyse(page);

                if (anaFilter.showAll)
                {
                    RefreshAutoView(page.buyOffers, page.sellOffers, anaFilter.maxNum);
                }
                else
                {
                    RefreshAutoView(ana.buyOffers, ana.sellOffers, -1);
                }

                float amount = -1;
                float.TryParse(AutoAmount.Text, out amount);

                AutoAmountMin.Text = ana.min.ToString("N4") + " BTC";
                AutoAmountMax.Text = ana.max.ToString("N4") + " BTC";

                AutoInvestMin.Text = ana.GetInvestment(ana.min).ToString("N2") + " €";
                AutoInvestMax.Text = ana.GetInvestment(ana.max).ToString("N2") + " €";

                AutoNecMin.Text = ana.GetNecBitcoins(ana.min).ToString("N4") + " BTC";
                AutoNecMax.Text = ana.GetNecBitcoins(ana.max).ToString("N4") + " BTC";

                AutoGainMin.Text = ana.GetGain(ana.min).ToString("N2") + " €";
                AutoGainMax.Text = ana.GetGain(ana.max).ToString("N2") + " €";

                if (amount != -1)
                {
                    AutoInvest.Text = ana.GetInvestment(amount).ToString("N2") + " €";

                    AutoNec.Text = ana.GetNecBitcoins(amount).ToString("N4") + " BTC";

                    AutoGain.Text = ana.GetGain(amount).ToString("N2") + " €";
                }
            }
        }
Ejemplo n.º 4
0
 public void AnalyseNewPage(OfferPage page)
 {
     /*
      * if(page.buyOffers.Count > 0 && page.sellOffers.Count > 0)
      * {
      * float buyOffer = page.buyOffers[0].info.GetFeePrice(true);
      * float sellOffer = page.sellOffers[0].info.GetFeePrice(false);
      * if(_lastBuy !=  buyOffer && _lastSell != sellOffer)
      * {
      * if (buyOffer < sellOffer && false)
      * {
      * BitcoinHelper.Save ("C:/bitcoins/", page);
      * _sum += (sellOffer - buyOffer) * page.sellOffers[0].max;
      *
      * _lastBuy = buyOffer;
      * _lastSell = sellOffer;
      *
      * _pageList.Add(page);
      * }
      * }
      * }*/
 }
Ejemplo n.º 5
0
 public void LoadPage(OfferPage page)
 {
     Analysation ana = Analyse(page);
 }
Ejemplo n.º 6
0
 static public bool LoadPage(string file, out OfferPage page)
 {
     /*
      * XmlDocument doc = new XmlDocument();
      *
      * page = new OfferPage();
      *
      * try
      * {
      * doc.Load(file);
      * }
      * catch (Exception ex)
      * {
      * return false;
      * }
      *
      *
      * XmlElement root = doc.DocumentElement;
      *
      * var infoList = root.GetElementsByTagName("info");
      *
      * if(infoList.Count == 0)
      * {
      * return false;
      * }
      *
      * XmlAttribute date = infoList[0].Attributes["date"]; ;
      * page.timeStamp = DateTime.Parse(date.InnerText);
      *
      * var tables = root.GetElementsByTagName("table");
      *
      * if(tables.Count != 2)
      * {
      * return false;
      * }
      * int turn = 0;
      * foreach (XmlElement table in tables)
      * {
      * bool buy = table.GetAttribute("offer-type") == "buy";
      *
      *      turn++;
      *
      * var recs = table.GetElementsByTagName("sheet");
      * foreach (XmlElement xmlRec in recs)
      * {
      * Record record = new Record();
      *
      * record.buyOffer = buy;
      *
      * if (!float.TryParse(xmlRec.GetAttribute("price"), out record.info.Price)) return false;
      * if (!float.TryParse(xmlRec.GetAttribute("price_fee"), out record.info.GetFeePrice(buy)) return false;
      * if (!float.TryParse(xmlRec.GetAttribute("min"), out record.min)) return false;
      * if (!float.TryParse(xmlRec.GetAttribute("max"), out record.max)) return false;
      * if (!bool.TryParse(xmlRec.GetAttribute("sepa"), out record.sepa)) return false;
      * if (!bool.TryParse(xmlRec.GetAttribute("express"), out record.express)) return false;
      * if (!bool.TryParse(xmlRec.GetAttribute("req_ident"), out record.fullyIdentified)) return false;
      *
      *              if (buy) page.buyOffers.Add(record);
      *              else page.sellOffers.Add(record);
      * }
      * }
      *
      * if (turn != 2) return false;
      */
     page = new OfferPage();
     return(true);
 }
Ejemplo n.º 7
0
        public bool GetCurrentPage(out OfferPage page)
        {
            page = new OfferPage();

            try
            {
                var tableList = _browser.Document.Body.Parent.GetElementsByTagName("table");

                page.timeStamp = System.DateTime.Now;

                string html = _browser.Document.Body.Parent.OuterHtml;

                /*
                 * <table class="list bg1 wp100 brd1t text-right">
                 *      <tbody class="fs11" id="trade_offer_results_table_body">
                 *              <tr id="trade_id_7749755" data-trade-type="offer" data-amount="0.20000000" data-critical-price="7070.00000000" data-critical-price-formatted="7.070,00&nbsp;" data-trade-id="7749755">
                 *                      <td> 0,2 (0,01) </td>
                 *                      <td class="aright">7.070,00&nbsp;€</td>
                 *                      <td class="aright">1.414,00&nbsp;€</td>
                 *                      <td class="hidden-xs"><div class="prelative"> <img title="Sitz der Bank: Deutschland" alt="Sitz der Bank: Deutschland" src="/images/currency_icon/de.png"> </div> </td>
                 *                      <td class="hidden-xs p0">&nbsp;</td>
                 *                      <td class="hidden-xs w60" data-cell="additional_info"><img title="Vollständig identifizierter User" class="mbm2" alt="Vollständig identifizierter User" src="/images/icons/verified.png"></td>
                 *                      <td> <a class="c6" href="/de/btceur/buyOffer?trade_id=7749755">KAUFEN</a> </td>
                 *              </tr>
                 *
                 *              <tr class="dnone" id="trade_id_7781837" data-trade-id="7781837" data-critical-price-formatted="7.430,18&nbsp;" data-critical-price="7430.18"data-amount="0.12723682" data-trade-type="order">
                 *                      <td data-cell="amount">0,12723682 (0,0081)</td>
                 *                      <td class="aright" data-cell="price">7.430,18&nbsp;€</td>
                 *                      <td class="aright" data-cell="volume">945,39&nbsp;€</td>
                 *                      <td class="hidden-xs" data-cell="payment_methods">
                 *                              <div class="prelative">
                 *                                      <img title="Sitz der Bank: Deutschland" alt="Sitz der Bank: Deutschland" src="/images/currency_icon/de.png">
                 *                              </div>
                 *                      </td>
                 *                      <td class="p0 hidden-xs" data-cell="not_used"></td>
                 *                      <td class="w60 hidden-xs" data-cell="additional_info">
                 *                              <img title="Express-Handel" class="mbm2" alt="Express-Handel" src="/images/icons/fidor.png" data-express="express">&nbsp;
                 *                              <img title="Vollständig identifizierter User" class="mbm2" alt="Vollständig identifizierter User" src="/images/icons/verified.png">
                 *                      </td>
                 *                      <td data-cell="buy_sell_action">
                 *                              <a class="c6" href="/de/btceur/sellOrder?trade_id=7781837">VERKAUFEN</a>
                 *                      </td>
                 *              </tr>
                 *
                 *
                 */

                foreach (HtmlElement table in tableList)
                {
                    if (table.GetAttribute("classname") == "list bg1 wp100 brd1t text-right")
                    {
                        var tableBody = table.GetElementsByTagName("tbody");

                        foreach (HtmlElement body in tableBody)
                        {
                            if (body.GetAttribute("classname") == "fs11")
                            {
                                foreach (HtmlElement element in body.GetElementsByTagName("tr"))
                                {
                                    var rec = ReadRecord(element);

                                    if (rec.buyOffer)
                                    {
                                        rec.id = page.buyOffers.Count;

                                        page.buyOffers.Add(rec);
                                    }
                                    else
                                    {
                                        rec.id = page.sellOffers.Count;

                                        page.sellOffers.Add(rec);
                                    }
                                }
                            }
                        }
                    }
                }
                return(true);
            }
            catch (Exception ex)
            {
                //MessageBox.Show(ex.ToString());
                return(false);
            }
        }