private Window window = null;
private JButton findMarket = null;
private JLabel resultSummary = null;
+ private JLabel arbitrageResult = null;
private final static String PCTB_LIVE_HOST_URL = "http://pctb.crabdance.com/";
private final static String PCTB_TEST_HOST_URL = "http://pctb.ilk.org/";
}
frame = new JFrame("MarketUploader");
frame.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
- frame.getContentPane().setLayout(new GridLayout(2,1));
+ GridLayout layout = new GridLayout(2,1);
+ frame.getContentPane().setLayout(layout);
//frame.setPreferredSize(new Dimension(200, 60));
findMarket = new JButton("Upload Market Data");
new Thread() {
public void run() {
resultSummary.setText("");
+ arbitrageResult.setText("");
try {
runPCTB();
} catch(Exception e) {
resultSummary = new JLabel("ready");
frame.add(resultSummary);
+ arbitrageResult = new JLabel("");
+
+ if (showArbitrage) {
+ layout.setRows(layout.getRows() + 1);
+ frame.add(arbitrageResult);
+ }
+
frame.pack();
}
while (true) {
int[] buy, sell;
try {
- buy = buys.first();
+ // NB "sell" means they sell, ie we buy
sell = sells.last();
+ buy = buys.first();
} catch (NoSuchElementException e) {
break;
}
+
+ int unitprofit = buy[0] - sell[0];
int count = buy[1] < sell[1] ? buy[1] : sell[1];
- System.out.println(" buy @"+buy[0]+" x"+buy[1]+" sell @"+sell[0]+" x"+sell[1]+" => x"+count);
- profit += count * (buy[0] - sell[0]);
+ System.out.println(" sell @"+sell[0]+" x"+sell[1]+" buy @"+buy[0]+" x"+buy[1]
+ +" => x"+count+" @"+unitprofit);
+
+ if (unitprofit <= 0)
+ break;
+
+ profit += count * unitprofit;
buy[1] -= count;
sell[1] -= count;
if (buy[1]==0) buys.remove(buy);
- if (sell[1]==0) buys.remove(sell);
+ if (sell[1]==0) sells.remove(sell);
}
+ System.out.println(" PROFIT "+profit);
return profit;
}
}
}
arbitrage += calculateArbitrageCommodity(arb_bs);
+ if (arbitrage != 0) {
+ arbitrageResult.setText("arbitrage: "+arbitrage+" poe");
+ } else {
+ arbitrageResult.setText("no arbitrage");
+ }
}
}