For my ProsperDays presentation this year I will demonstrating bidding with the Prosper API… I have built a quick and dirty bid snipping java program. (This program is not ready for primetime as bid sniping tool, but it is very close and a very effective demo. The reason I say it is not ready is that it lacks memory, meaning that it would bid on the same listing on subsequent passes.) Для моей ProsperDays презентации в этом году я буду демонстрируя торгов с Проспер API ... я построил быструю и грязную snipping ставку Java программы. (Эта программа не готова к PrimeTime как ставка снайперов инструмент, но он очень близок, и очень эффективным демо - . Причина, по которой я говорю это не готов, что ему не хватает памяти, а это означает, что она будет ставка по тому же реклама на последующих проходах.)
I think API bidding is the 1st step in a brave new world of Prosper Lending. For one, it easily allows custom models. Я думаю, API торгов является 1-й шаг в прекрасном новом мире Проспер кредитования. Во-первых, она позволяет легко пользовательских моделей.
So what does this 126 line program do? Так что это 126 строка программой делать?
It queries the active AA-C credit grade listings… If a listing passes my extended credit filters (hard coded) AND the minimum Prosper calculated ROI values (generated by Prosper and the floor is passed in as a parameter) AND the minimum time remaining in the auction it will place a validation test bid or a real bid. Он запросы Активные AA-C кредитного класса списки ... Если реклама передает мое кредиты фильтры (в печатном коде), а минимальная Проспер рассчитанные значения рентабельности инвестиций (порожденных процветать и слово передается в качестве параметра) и минимального времени, оставшегося в Аукцион будет место валидации теста ставки или реальные ставки.
What are the extended credit requirements of this code? Какие кредиты требований настоящего Кодекса? Short answer… very tight. Короткий ответ ... очень напряженным.
- 0 current DQ 0 нынешней DQ
- 0-1 inquires in the last 6 months 0-1 опросы в последние 6 месяцев
- 0 public records in last 10 years 0 государственных архивов в последние 10 лет
- 0 DQ in last 7 years 0 DQ в последние 7 лет
- Bankcard utilization between 3% and 80% Банковская использования от 3% до 80%
Here is the java code (I have contributed this code to the Здесь Java-код (я способствовал этому код SourceForge Prosper API project SourceForge процветать API проекта ). It requires the API classes generated by the Java2WSDL and open source tool by Apache foundation. ). Она требует API классов, порожденных Java2WSDL с открытым исходным инструментом в Apache Foundation.
package prosper.api; Пакет prosper.api; import java.math.BigDecimal; Импорт java.math.BigDecimal; import java.math.MathContext; Импорт java.math.MathContext; import java.rmi.RemoteException; Импорт java.rmi.RemoteException; import java.sql.Timestamp; Импорт java.sql.Timestamp; import java.util.Calendar; Импорт java.util.Calendar; import java.util.Iterator; Импорт java.util.Iterator; import java.util.TreeMap; Импорт java.util.TreeMap; import javax.xml.rpc.ServiceException; Импорт javax.xml.rpc.ServiceException; import com.prosper.services.ProsperAPI.DefinitionResult; Импорт com.prosper.services.ProsperAPI.DefinitionResult; import com.prosper.services.ProsperAPI.Field; Импорт com.prosper.services.ProsperAPI.Field; import com.prosper.services.ProsperAPI.Listing; Импорт com.prosper.services.ProsperAPI.Listing; import com.prosper.services.ProsperAPI.ProsperAPILocator; Импорт com.prosper.services.ProsperAPI.ProsperAPILocator; import com.prosper.services.ProsperAPI.ProsperAPISoap; Импорт com.prosper.services.ProsperAPI.ProsperAPISoap; import com.prosper.services.ProsperAPI.ProsperObject; Импорт com.prosper.services.ProsperAPI.ProsperObject; import com.prosper.services.ProsperAPI.ProsperObjectResult; Импорт com.prosper.services.ProsperAPI.ProsperObjectResult; public class QuickSnipe Public Class QuickSnipe { ( private String m_Username; Строка частных m_Username; private String m_Password; Строка частных m_Password; private double m_MinROI; частные двойных m_MinROI; private int m_HoursToGo; частные INT m_HoursToGo; private boolean m_PlaceBids; частные булевы m_PlaceBids; private ProsperAPISoap m_APISoap; частные ProsperAPISoap m_APISoap; public QuickSnipe(String username, String password, double minROI, int hoursToGo, boolean placeBids) throws ServiceException государственных QuickSnipe (строка имя пользователя, пароль, струны, двойные minROI, INT hoursToGo, булевы placeBids) броски ServiceException { ( m_Username = username; m_Username = Имя пользователя; m_Password = password; m_Password = пароль; m_MinROI = minROI; m_MinROI = minROI; m_PlaceBids = placeBids; m_PlaceBids = placeBids; m_HoursToGo = hoursToGo; m_HoursToGo = hoursToGo; m_APISoap = (new ProsperAPILocator()).getProsperAPISoap(); m_APISoap = (новые ProsperAPILocator ()). getProsperAPISoap (); } ) /** / ** * @param args * @ Param args */ * / public static void main(String[] args) общественности статической вакуум основных (Строка [] args) { ( if (args.length!=5) если (args.length! = 5) { ( System.err.println("Usage: QuickSnipe username password minROI hoursToGo PlaceBids"); System.err.println ( "Использование: QuickSnipe имя пользователя пароль minROI hoursToGo PlaceBids"); return; возвращение; } ) try попробовать { ( QuickSnipe qs = new QuickSnipe(args[0], args[1], Double.parseDouble(args[2]), Integer.parseInt(args[3]), Boolean.parseBoolean(args[4])); QuickSnipe QS = новый QuickSnipe (args [0], args [1], Double.parseDouble (args [2]), Integer.parseInt (args [3]), Boolean.parseBoolean (args [4])); qs.snipe(); qs.snipe (); } ) catch (Exception e) улова (Исключение E) { ( e.printStackTrace(System.err); e.printStackTrace (System.err); } ) } ) private void snipe() throws Exception частные недействительным бекас () бросает исключение { ( DefinitionResult res = m_APISoap.login(m_Username,m_Password); DefinitionResult Res = m_APISoap.login (m_Username, m_Password); String token = res.getMessage(); Строка признака = res.getMessage (); ProsperObjectResult por = m_APISoap.query(token, "listing", getFieldsString("listing",true), "status=2 and (creditgrade=7 or creditgrade=6 or creditgrade=5 or creditgrade=4)"); На ProsperObjectResult = m_APISoap.query (того, "реклама", getFieldsString ( "реклама", True), "статус = 2 и (creditgrade = 7 или creditgrade = 6 или creditgrade = 5 или creditgrade = 4)"); ProsperObject[] pos = por.getProsperObjects(); ProsperObject [] = Pos por.getProsperObjects (); TreeMap<Calendar,Listing> timeLeftListings = new TreeMap<Calendar,Listing>(); TreeMap <Calendar,Listing> timeLeftListings = новый TreeMap <Calendar,Listing> (); for (int i=0; i<pos.length; i++) для (INT I = 0; I <pos.length; I + +) { ( Listing l = (Listing)pos[i]; Список L = (листинг) Pos [I]; Calendar end = (Calendar)l.getStartDate().clone(); Календарь конца = (календарь) l.getStartDate (). Клон (); end.add(Calendar.HOUR, (l.getDuration()*24)); end.add (Calendar.HOUR, (l.getDuration () * 24)); long millisToGo = end.getTimeInMillis() - System.currentTimeMillis(); долго millisToGo = end.getTimeInMillis () - System.currentTimeMillis (); if (l.getNowDelinquent()==0 //my required extended credit and ROI если (l.getNowDelinquent () == 0 / / Моя требуются кредиты и рентабельность инвестиций && (millisToGo/1000/60/60)<=m_HoursToGo И И (millisToGo/1000/60/60) <= m_HoursToGo && l.getInquiriesLast6Months()<2 И И l.getInquiriesLast6Months () <2 && l.getPublicRecordsLast10Years()==0 И И l.getPublicRecordsLast10Years () == 0 && l.getDelinquenciesLast7Years()==0 И И l.getDelinquenciesLast7Years () == 0 && l.getBankcardUtilization().doubleValue()<=.8 И И l.getBankcardUtilization (). DoubleValue ()<=. 8 && l.getBankcardUtilization().doubleValue()>=.03 И И l.getBankcardUtilization (). DoubleValue ()>=. 03 && ((l.getBidMaximumRate().doubleValue()+l.getROINetDefaultRate().doubleValue()+l.getROIInterestAndFeesRate().doubleValue()+l.getROIServicingFeeRate().doubleValue())>=m_MinROI) И И ((l.getBidMaximumRate (). DoubleValue () + l.getROINetDefaultRate (). DoubleValue () + l.getROIInterestAndFeesRate (). DoubleValue () + l.getROIServicingFeeRate (). DoubleValue ())>= m_MinROI) ) { ( timeLeftListings.put(end, l); timeLeftListings.put (конец, L); } ) } ) boolean pause = false; Булевы пауза = ложным; for (Iterator<listing> i = timeLeftListings.values().iterator(); i.hasNext(); ) для (Iterator <listing> I = timeLeftListings.values (). итератор (); i.hasNext ();) { ( if (pause) // you have to pause to avoid bid throttling если (пауза) / / у вас на паузу, чтобы избежать ставку дросселирования {try {Thread.sleep(6000);}catch (Exception ignore){}} ((попробуйте Thread.sleep (6000);) улова (Исключение игнорировать) ()) Listing l = i.next(); Список L = i.next (); Timestamp startts = new Timestamp(l.getStartDate().getTimeInMillis()); Времени startts = новом времени (l.getStartDate (). GetTimeInMillis ()); Calendar end = (Calendar)l.getStartDate().clone(); Календарь конца = (календарь) l.getStartDate (). Клон (); end.add(Calendar.HOUR, (l.getDuration()*24)); end.add (Calendar.HOUR, (l.getDuration () * 24)); Timestamp endts = new Timestamp(end.getTimeInMillis()); Времени endts = новом времени (end.getTimeInMillis ()); long hoursToGo = (end.getTimeInMillis() - System.currentTimeMillis())/1000/60/60; долго hoursToGo = (end.getTimeInMillis () - System.currentTimeMillis ()) / 1000/60/60; System.err.println("\n"+startts+" + "+l.getDuration()+" days = "+endts+" | Hours To Go: "+hoursToGo); System.err.println ( "\ N" startts + + "+" + l.getDuration () + "дней =" + endts + "| Часы пойти:" + hoursToGo); System.err.println("Bid on Listing: "+l.getListingNumber()+"\nAt Rate: "+(m_MinROI-l.getROINetDefaultRate().doubleValue()-l.getROIInterestAndFeesRate().doubleValue()-l.getROIServicingFeeRate().doubleValue())); System.err.println ( "Ставка на Объявлений:" + l.getListingNumber () + "\ физ Рейтинг:" + (m_MinROI-l.getROINetDefaultRate (). DoubleValue ()-l.getROIInterestAndFeesRate (). DoubleValue ()-L . getROIServicingFeeRate (). doubleValue ())); res = m_APISoap.bid(token, l.getListingNumber(), new BigDecimal(50,new MathContext(4)), new BigDecimal(m_MinROI-l.getROINetDefaultRate().doubleValue()-l.getROIInterestAndFeesRate().doubleValue()-l.getROIServicingFeeRate().doubleValue(),new MathContext(4)), m_PlaceBids); Res = m_APISoap.bid (того, l.getListingNumber (), новые BigDecimal (50, новых MathContext (4)), новый BigDecimal (m_MinROI-l.getROINetDefaultRate (). doubleValue ()-l.getROIInterestAndFeesRate (). doubleValue () -l.getROIServicingFeeRate (). doubleValue (), новые MathContext (4)), m_PlaceBids); pause = true; пауза = TRUE; System.err.println("Bid Message: "+res.getMessage()); System.err.println ( "Ставка сообщение:" + res.getMessage ()); } ) m_APISoap.logout(token); m_APISoap.logout (признака); } ) private String getFieldsString(String type, boolean authenticated) throws RemoteException Строка частных getFieldsString (строка типа булевых подлинности) броски RemoteException { ( DefinitionResult res = m_APISoap.describe(null, type); DefinitionResult Res = m_APISoap.describe (NULL, типа); Field[] fields = res.getDefinition().getFields(); Полевой [] = областях res.getDefinition (). GetFields (); int count = 0; INT кол = 0; String s=""; Строка S = ""; for (int i=0; i<fields.length; i++) для (INT I = 0; I <fields.length; I + +) { ( if (authenticated || !fields[i].isAuthenticated()) если (подлинность | |! полей [I]. isAuthenticated ()) { ( if (count!=0) если (кол! = 0) { ( s+= ","; S + = ""; } ) s+= fields[i].getName(); S + = полей [I]. getName (); count++; кол + +; } ) } ) return s; возвращение с; } ) } )If you liked this article, vote for it on Если вам понравилась эта статья, голосовать за него на del.icio.us del.icio.us and и stumbleupon stumbleupon . .
Categories: Категории:
Prosper.com
Related Articles Статьи по теме
LazyMan RSS Feeds Prosper Listings Widget LazyMan RSS-каналы процветать Перечни виджет
Small Loans Less Risk, Large Loans More Risk Малые кредиты с меньшим риском, крупные займы большему риску
Malama Ohana Group Listings (or any other Prosper Group) Малама Ohana группы Перечни (или любой другой группы Проспер)
Prosper in May Set a New Monthly Loan Origination Volume High Water Mark Проспер в мае установить новые ежемесячные кредит происхождения том лунный знак
Current Delinquency Count for Prosper Loans Нынешняя преступность рассчитывать на процветание кредиты
Program Materials, Accessories Weight Management Программа материалы, аксессуары Вес управления
Apollo Program Space Programs Historical Memorabilia Collectibles "Аполлон" Программа космических программ, исторических памятных коллекционирования
Space Shuttle Program Space Programs Historical Memorabilia Collectibles Космический шаттл "Программа космических программ, исторических памятных коллекционирования
Dishwashers Built-In Dishwashers Major Appliances Посудомоечные машины встроенные посудомоечные машины в основные приборы
Current Year, Next Year Calendars Paper Collectibles Текущий год, в следующем году календари бумаги коллекционирования



































2 comments ↓ 2 комментарии ↓
Cool, thanks for sharing! Круто, спасибо за обмен! I’ll have to get my jdk installed again at home and give it a shot. Мне надо, чтобы моя JDK установлен снова на родине и его застрелили.
[...] RateLadder on Prosper Days 2008 as well as the source code for the tool demonstrated at Prosper Days: QuickSnipe [...] [...] RateLadder на Проспера дни 2008 года, а также исходный код для инструмента продемонстрировали на Проспера Days: QuickSnipe [...]
Leave a Comment Оставить комментарий