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"); }
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); }
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") + " €"; } } }
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); * } * } * }*/ }
public void LoadPage(OfferPage page) { Analysation ana = Analyse(page); }
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); }
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 " data-trade-id="7749755"> * <td> 0,2 (0,01) </td> * <td class="aright">7.070,00 €</td> * <td class="aright">1.414,00 €</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"> </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 " 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 €</td> * <td class="aright" data-cell="volume">945,39 €</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"> * <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); } }