¹ø¿µ API ºÎÈ£ º¸±â QuickSnipe.java·Î ÀÔÂû

¿ÃÇØ¿¡ ProsperDays ³ªÀÇ ¹ßÇ¥¸¦ À§ÇØ ³ª ¹ø¿µ API·Î ÀÔÂûÀ» ¼³¸íÇÏ´Â ÀÇÁö¡¦? ³ª´Â ÀÚ¹Ù ÇÁ·Î±×·¥À» ÀÚ¸£´Â ºü¸£°í ´õ·¯¿î ÀÔÂûÀ» °Ç¼³Çߴ°¡.? (ÀÌ ÇÁ·Î±×·¥Àº ÀÔÂûÇÑ Àú°Ý °ø±¸·Î Ȳ±Ý ½Ã°£ ÀÌ ÁغñµÇ¾î ÀÖÁö ¾Ê´Ù, ±×·¯³ª ¾ÆÁÖ °¡±î¿ì ¾ÆÁÖ È¿°úÀûÀÎ ¹ÎÁÖ´ç¿øÀΰ¡.? ³ª°¡ ¸»ÇÏ´Â ÀÌÀ¯ ÁغñµÇ¾î ÀÖÁö ¾Ê´Ù´Â °ÍÀ» ¿¬¼ÓÀûÀÎ ÅëÇà¿¡ µ¿ÀÏÇÑ ¸íºÎÀÛ¼º¿¡ ÀÔÂûÇÒ °ÍÀ̶ó´Â Á¡À» ÀǹÌÇÏ´Â ±â¾ïÀÌ °á¿©µÈ´Ù ´Ù´Â °ÍÀ».)

³ª´Â API°¡ ÀÔÂû ¿ë°¨ÇÑ »õ·Î¿î ¼¼°è¿¡ ÀÖ´Â Á¦ ´Ü°èÀÇ ´ë¿© ¹ø¿µÇѤ¤´Ù´Â °ÍÀ»´Ù´Â °ÍÀ» »ý°¢Çϴ°¡.? 1°³¸¦, ±×°ÍÀº ½±°Ô ÁÖ¹® ¸ðÇüÀ».

ÀÌ·¸°Ô ¹«¾ùÀ» 126 ¼± ÇÁ·Î±×·¥Àº ÀÌ Çϴ°¡?

±×°ÍÀº Ȱµ¿ÀûÀÎ AA-C ½Å¿ë ±Þ·á ¸íºÎÀÛ¼ºÀ»¡¦ Áú¹®Çϴ°¡? ¸íºÎÀÛ¼ºÀÌ Åë°úÇÏ´Â °æ¿ì¿¡ ³ªÀÇ Àå½Ã°£ ½Å¿ëÀº °Å¸£´Â°¡ (¿­½ÉÈ÷ ¾ÏÈ£·Î ÇÏ´Â)? ±×¸®°í ÃÖ¼ÒÇÑÀº »êÃâÇß´Ù °ç¿¡ »ý¼ºµÇ´Â ROI °¡Ä¡¸¦ ¹ø¿µÇϴ°¡ (? ¹ø¿µÇϴ°¡ Áö¸éÀº ¸Å°³º¯¼ö·Î ¾ÈÀ¸·Î Åë°úµÇ´Â°¡)? ±×¸®°í °æ¸Å¿¡¼­ ÀÜ¿© ÃÖ¼ÒÇѵµ ½Ã°£ ±×°ÍÀº ÀÔÂûµÈ È®ÀÎ ½ÃÇè ¶Ç´Â ÁøÂ¥ ÀÔÂûÀ» µÑ °ÍÀÌ´Ù.

ÀÌ ºÎÈ£ÀÇ Àå½Ã°£ ½Å¿ë ÇÊ¿äÁ¶°ÇÀº ¹«¾ùÀΰ¡? ªÀº ÀÀ´ä¡¦ ¾ÆÁÖ ´Ü´ÜÈ÷.

  • 0 ÇöÀç DQ
  • 0-1 ¸¶Áö¸· 6 ´Þ¿¡¼­ »ç¹®ÇÑ´Ù
  • ¸¶Áö¸·¿¡ ÀÖ´Â 0¸íÀÇ °øÁß ±â·Ï 10 ³â
  • ¸¶Áö¸·¿¡ ÀÖ´Â 0 DQ 7 ³â
  • 3%¿Í 80% »çÀÌ Bankcard ÀÌ¿ë

ÀÚ¹Ù ºÎÈ£ (³ª´Â¿¡ ÀÌ ºÎÈ£¸¦ °øÇåÇß´Ù ¿©±â¿¡¼­ ÀÖ´Ù SourceForge´Â API ¹ø¿µÇϴ°¡? ÇÁ·ÎÁ§Æ®).? ±×°ÍÀº ¾ÆÆÄÄ¡ ±âÃÊ¿¡ ÀÇÇÏ¿© Java2WSDL ±×¸®°í ¿ÀÇ ¼Ò½º °ø±¸¿¡ ÀÇÇØ »ý¼ºµÈ API Á¾·ù¸¦ ¿ä±¸ÇÑ´Ù.

Æ÷Àå prosper.api;   

¼öÀÔǰ java.math.BigDecimal;
¼öÀÔǰ java.math.MathContext;
¼öÀÔǰ java.rmi.RemoteException;
¼öÀÔǰ java.sql. ŸÀÓ ½ºÅÆÇÁ;
¼öÀÔǰ java.util. ´Þ·Â;
¼öÀÔǰ java.util. Iterator;
¼öÀÔǰ java.util.TreeMap;   

¼öÀÔǰ javax.xml.rpc.ServiceException;   

¼öÀÔǰ com.prosper.services.ProsperAPI.DefinitionResult;
¼öÀÔǰ com.prosper.services.ProsperAPI.Field;
¼öÀÔǰ com.prosper.services.ProsperAPI.Listing;
¼öÀÔǰ com.prosper.services.ProsperAPI.ProsperAPILocator;
¼öÀÔǰ com.prosper.services.ProsperAPI.ProsperAPISoap;
¼öÀÔǰ com.prosper.services.ProsperAPI.ProsperObject;
¼öÀÔǰ com.prosper.services.ProsperAPI.ProsperObjectResult;   

°øÁß Á¾·ù QuickSnipe
 {
	°³ÀÎ ²ö m_Username;
	°³ÀÎ ²ö m_Password;
	°³ÀÎ µÎ ¹è m_MinROI;
	°³ÀÎ int m_HoursToGo;
	°³ÀÎ ºÎ¿ï ³í¸® ¿¬»ê m_PlaceBids;
	ProsperAPISoap °³ÀÎ m_APISoap;   

	°øÁß QuickSnipe (²ö »ç¿ëÀÚ À̸§, ²ö ¾ÏÈ£, µÎ ¹è minROI, int hoursToGo, ºÎ¿ï ³í¸® ¿¬»ê placeBids)´Â ServiceException¸¦ ´øÁø´Ù
	{
		m_Username = »ç¿ëÀÚ À̸§;
		m_Password = ¾ÏÈ£;
		m_MinROI = minROI;
		m_PlaceBids = placeBids;
		m_HoursToGo = hoursToGo;
		m_APISoap = (»õ·Î¿î ProsperAPILocator ()).getProsperAPISoap ();
	}
	/**
	 * @param args
	 *
	ÁÖ¿ä °øÁß °øÀü °øÇã (²ö [] args)
	{
		¸¸¾à¿¡ (args.length! =5)
		{
			System.err.println ("»ç¿ë¹ý: QuickSnipe »ç¿ëÀÚ À̸§ ¾ÏÈ£ minROI hoursToGo PlaceBids ");
			¹Ýȯ;
		}
		½ÃÇè
		{
			QuickSnipe qs = »õ·Î¿î QuickSnipe (args [0], args [1], Double.parseDouble (args [2]), Integer.parseInt (args [3]), Boolean.parseBoolean (args [4]));
			qs.snipe ();
		}
		ijġ (¿¹¿Ü e)
		{
			e.printStackTrace (System.err);
		}
	}   

	°³ÀÎ °øÇã´Â () ´øÁü ¿¹¿Ü¸¦ Àú°ÝÇÑ´Ù
	{
		DefinitionResult res = ¾ÈÀ¸·Î m_APISoap.log (m_Username, m_Password);

		²ö ÅäÅ« = 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)");
		ProsperObject[] pos = por.getProsperObjects();
		TreeMap<Calendar,Listing> timeLeftListings = new TreeMap<Calendar,Listing>();
		for (int i=0; i<pos.length; i++)
		{
			Listing l = (Listing)pos[i];
			Calendar end = (Calendar)l.getStartDate().clone();
			end.add(Calendar.HOUR, (l.getDuration()*24));
			long millisToGo = end.getTimeInMillis() - System.currentTimeMillis();
			if (l.getNowDelinquent()==0  //my required extended credit and ROI
					&& (millisToGo/1000/60/60)<=m_HoursToGo
					&& l.getInquiriesLast6Months()<2
					&& l.getPublicRecordsLast10Years()==0
					&& l.getDelinquenciesLast7Years()==0
					&& l.getBankcardUtilization().doubleValue()<=.8
					&& l.getBankcardUtilization().doubleValue()>=.03
					&& ((l.getBidMaximumRate().doubleValue()+l.getROINetDefaultRate().doubleValue()+l.getROIInterestAndFeesRate().doubleValue()+l.getROIServicingFeeRate().doubleValue())>=m_MinROI)
					)
			{
				timeLeftListings.put(end, l);
			}
		}
		boolean pause = false;
		for (Iterator<listing> i = timeLeftListings.values().iterator(); i.hasNext(); )
		{
			if (pause)  // you have to pause to avoid bid throttling
				{try {Thread.sleep(6000);}catch (Exception ignore){}}
			Listing l = i.next();
			Timestamp startts = new Timestamp(l.getStartDate().getTimeInMillis());
			Calendar end = (Calendar)l.getStartDate().clone();
			end.add(Calendar.HOUR, (l.getDuration()*24));
			Timestamp endts = new Timestamp(end.getTimeInMillis());
			long hoursToGo = (end.getTimeInMillis() - System.currentTimeMillis())/1000/60/60;
			System.err.println("\n"+startts+" + "+l.getDuration()+" days = "+endts+" | Hours To Go: "+hoursToGo);
			System.err.println("Bid on Listing: "+l.getListingNumber()+"\nAt Rate: "+(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);
			pause = true;
			System.err.println("Bid Message: "+res.getMessage());
		}
		m_APISoap.logout(token);
	}   

	private String getFieldsString(String type, boolean authenticated) throws RemoteException
	{
		DefinitionResult res = m_APISoap.describe(null, type);
		Field[] fields = res.getDefinition().getFields();
		int count = 0;
		String s="";
		for (int i=0; i<fields.length; i++)
		{
			if (authenticated || !fields[i].isAuthenticated())
			{
				if (count!=0)
				{
					s+= ",";
				}
				s+= fields[i].getName();
				count++;
			}
		}
		return s;
	}
}
Related Stores If you liked this article, vote for it on del.icio.us and stumbleupon.


Categories:

Prosper.com



2 comments ¡é
#1 Ben on 02.27.08 at 9:25 pm

Cool, thanks for sharing! I¡¯ll have to get my jdk installed again at home and give it a shot.

#2 Prosper Roundup — The Week After Edition on 03.02.08 at 4:59 pm

[...] RateLadder on Prosper Days 2008?as well as the source code for the tool demonstrated at Prosper Days: QuickSnipe [...]

Leave a Comment

Email Updates