Search in sources :

Example 1 with MarketData

use of org.opentransactions.otapi.MarketData in project otapij by FellowTraveler.

the class Market method loadMarketList.

public static Map loadMarketList(String serverID, String nymID) throws InterruptedException {
    //DEBUGGING 3rd step of debugging.
    Map marketListMap = new HashMap();
    // ----------------------------------------------------------
    OTAPI_Func theRequest = new OTAPI_Func(OTAPI_Func.FT.GET_MARKET_LIST, serverID, nymID);
    String strResponse = OTAPI_Func.SendRequest(theRequest, "GET_MARKET_LIST");
    if (!Utility.VerifyStringVal(strResponse)) {
        System.out.println("IN loadMarketList: OTAPI_Func.SendRequest(() failed. (I give up.) ");
        return null;
    }
    if (otapiJNI.OTAPI_Basic_Message_GetDepth(strResponse) == 0) {
        System.out.println("loadMarketList - marketList returns with a OT_API_Message_GetDepth() of 0 elements.");
        return marketListMap;
    }
    MarketList marketList = Helpers.getMarketList(serverID);
    if (marketList == null) {
        System.out.println("loadMarketList - marketList returns null");
        return null;
    }
    int count = (int) marketList.GetMarketDataCount();
    if (0 >= count) {
        System.out.println("loadMarketList - marketList returns with a size of 0 elements.");
        return null;
    }
    for (int i = 0; i < count; i++) {
        MarketData marketData = marketList.GetMarketData(i);
        if (marketData == null) {
            continue;
        }
        if ("ALL".equalsIgnoreCase(serverID) || serverID.equals(marketData.getServer_id())) {
            String[] data = new String[2];
            if (Utility.VerifyStringVal(marketData.getAsset_type_id()) && Utility.VerifyStringVal(marketData.getCurrency_type_id())) {
                String assetName = otapiJNI.OTAPI_Basic_GetAssetType_Name(marketData.getAsset_type_id());
                String currencyName = otapiJNI.OTAPI_Basic_GetAssetType_Name(marketData.getCurrency_type_id());
                if (Utility.VerifyStringVal(assetName) && Utility.VerifyStringVal(currencyName)) {
                    data[0] = assetName + "-" + currencyName;
                }
            } else {
                data[0] = !Utility.VerifyStringVal(marketData.getMarket_id()) ? "" : marketData.getMarket_id();
            }
            //data[0] = !Utility.VerifyStringVal(marketData.getGui_label()) ? "" : marketData.getGui_label();
            data[1] = !Utility.VerifyStringVal(marketData.getMarket_id()) ? "" : marketData.getMarket_id();
            marketListMap.put(data[1], data);
        }
    }
    return marketListMap;
}
Also used : MarketData(org.opentransactions.otapi.MarketData) HashMap(java.util.HashMap) OTAPI_Func(com.moneychanger.core.util.OTAPI_Func) MarketList(org.opentransactions.otapi.MarketList) HashMap(java.util.HashMap) Map(java.util.Map)

Example 2 with MarketData

use of org.opentransactions.otapi.MarketData in project otapij by FellowTraveler.

the class Market method getTicker.

public static MarketTicker getTicker(String marketID, String serverID, String nymID) {
    // ----------------------------------------------------------
    OTAPI_Func theRequest = new OTAPI_Func(OTAPI_Func.FT.GET_MARKET_LIST, serverID, nymID);
    String strResponse = OTAPI_Func.SendRequest(theRequest, "GET_MARKET_LIST");
    if (!Utility.VerifyStringVal(strResponse)) {
        System.out.println("IN getTicker: OTAPI_Func.SendRequest(() failed. (I give up.) ");
        return null;
    }
    if (otapiJNI.OTAPI_Basic_Message_GetDepth(strResponse) == 0) {
        System.out.println("getTicker: OT_API_Message_GetDepth returned zero");
        return null;
    }
    MarketList marketList = Helpers.getMarketList(serverID);
    if (marketList == null) {
        System.out.println("getTicker - marketList returns null");
        return null;
    }
    int nMarketDataCount = (int) marketList.GetMarketDataCount();
    for (int i = 0; i < nMarketDataCount; i++) {
        MarketData marketData = marketList.GetMarketData(i);
        if (marketData == null) {
            continue;
        }
        if (!Utility.VerifyStringVal(marketID) || (Utility.VerifyStringVal(marketID) && marketID.equals(marketData.getMarket_id()))) {
            MarketTicker marketTicker = new MarketTicker();
            marketTicker.setLastPrice(marketData.getLast_sale_price());
            marketTicker.setHighestBid(marketData.getCurrent_bid());
            marketTicker.setLowestAsk(marketData.getCurrent_ask());
            marketTicker.setHighPrice(marketData.getRecent_highest_bid());
            marketTicker.setLowPrice(marketData.getRecent_lowest_ask());
            return marketTicker;
        }
    }
    return null;
}
Also used : MarketData(org.opentransactions.otapi.MarketData) OTAPI_Func(com.moneychanger.core.util.OTAPI_Func) MarketTicker(com.moneychanger.core.dataobjects.MarketTicker) MarketList(org.opentransactions.otapi.MarketList)

Example 3 with MarketData

use of org.opentransactions.otapi.MarketData in project otapij by FellowTraveler.

the class Market method getMarketDetails.

public static MarketDetails getMarketDetails(String marketID, String serverID, String nymID) throws InterruptedException {
    if (!Utility.VerifyStringVal(marketID) || !Utility.VerifyStringVal(serverID) || !Utility.VerifyStringVal(nymID)) {
        System.out.println("getMarketDetails - returns null , marketID:" + marketID + " serverID:" + serverID + " nymID:" + nymID);
        return null;
    }
    Map askGridData = new HashMap();
    Map bidGridData = new HashMap();
    Map nymGridData = new HashMap();
    //Map tradeMarketData = new HashMap();
    List tradeMarketData = new ArrayList();
    MarketList marketList = Helpers.getMarketList(serverID);
    MarketDetails marketDetails = null;
    if (marketList == null) {
        System.out.println("getMarketDetails - marketList returns null");
        return null;
    }
    int nMarketDataCount = (int) marketList.GetMarketDataCount();
    for (int i = 0; i < nMarketDataCount; i++) {
        MarketData marketData = marketList.GetMarketData(i);
        if (marketData == null) {
            continue;
        }
        if (marketID.equals(marketData.getMarket_id())) {
            marketDetails = new MarketDetails();
            MarketTicker marketTicker = new MarketTicker();
            marketTicker.setLastPrice(marketData.getLast_sale_price());
            marketTicker.setHighestBid(marketData.getCurrent_bid());
            marketTicker.setLowestAsk(marketData.getCurrent_ask());
            marketTicker.setHighPrice(marketData.getRecent_highest_bid());
            marketTicker.setLowPrice(marketData.getRecent_lowest_ask());
            marketDetails.setMarketTicker(marketTicker);
            marketDetails.setAssetTypeID(!Utility.VerifyStringVal(marketData.getAsset_type_id()) ? "" : marketData.getAsset_type_id());
            marketDetails.setCurrencyID(!Utility.VerifyStringVal(marketData.getCurrency_type_id()) ? "" : marketData.getCurrency_type_id());
            marketDetails.setServerID(!Utility.VerifyStringVal(marketData.getServer_id()) ? "" : marketData.getServer_id());
            marketDetails.setGranularity(!Utility.VerifyStringVal(marketData.getScale()) ? "" : marketData.getScale().toString());
            if (marketDetails.getAssetTypeID().equals("")) {
                marketDetails.setAssetTypeName("");
            } else {
                marketDetails.setAssetTypeName(otapiJNI.OTAPI_Basic_GetAssetType_Name(marketDetails.getAssetTypeID()));
            }
            if (marketDetails.getServerID().equals("")) {
                marketDetails.setServerName("");
            } else {
                marketDetails.setServerName(otapiJNI.OTAPI_Basic_GetServer_Name(marketDetails.getServerID()));
            }
            if (marketDetails.getCurrencyID().equals("")) {
                marketDetails.setCurrencyName("");
            } else {
                marketDetails.setCurrencyName(otapiJNI.OTAPI_Basic_GetAssetType_Name(marketDetails.getCurrencyID()));
            }
            marketDetails.setNbrAsks(!Utility.VerifyStringVal(marketData.getNumber_asks()) ? "" : marketData.getNumber_asks());
            marketDetails.setNbrBids(!Utility.VerifyStringVal(marketData.getNumber_bids()) ? "" : marketData.getNumber_bids());
            marketDetails.setTotalAssets(!Utility.VerifyStringVal(marketData.getTotal_assets()) ? "" : marketData.getTotal_assets());
            // ----------------------------------------------------------
            OTAPI_Func theRequest = new OTAPI_Func(OTAPI_Func.FT.GET_MARKET_OFFERS, serverID, nymID, marketID, Configuration.getMarketMaxDepth());
            String strResponse = OTAPI_Func.SendRequest(theRequest, "GET_MARKET_OFFERS");
            if (!Utility.VerifyStringVal(strResponse)) {
                System.out.println("IN getMarketDetails: OTAPI_Func.SendRequest(() failed. (I give up.) ");
                return null;
            }
            if (otapiJNI.OTAPI_Basic_Message_GetDepth(strResponse) > 0) {
                OfferListMarket offerListMarket = Helpers.getMarketOffer(serverID, marketID);
                if (offerListMarket == null) {
                    System.out.println("getMarketDetails - offerListMarket returns null");
                    return null;
                }
                // ----------------------------------------------------
                for (int j = 0; j < offerListMarket.GetAskDataCount(); j++) {
                    AskData askData = offerListMarket.GetAskData(j);
                    if (askData == null) {
                        continue;
                    }
                    String[] askRow = new String[4];
                    askRow[0] = askData.getPrice_per_scale();
                    askRow[1] = askData.getAvailable_assets();
                    askRow[3] = askData.getMinimum_increment();
                    try {
                        Long lScale = Long.valueOf(marketDetails.getGranularity());
                        // this price is "per scale"
                        Long lPrice = Long.valueOf(askRow[0]);
                        // Total overall quantity available
                        Long lQuantity = Long.valueOf(askRow[1]);
                        // Number of scale units available in total quanity. (120 total at scale of 10, is 12 units.)
                        Long lScaleUnits = Long.valueOf(lQuantity / lScale);
                        // // Total value of available units is price times scale units.
                        Long lTotalCost = Long.valueOf(lPrice * lScaleUnits);
                        // At $5 per scale, at 12 units, is $60 total for 120 total assets. (The number 60 goes here, plus the currency symbol todo.)
                        askRow[2] = String.valueOf(lTotalCost);
                    //                          askRow[2] = String.valueOf(Double.parseDouble(askRow[0]) * Double.parseDouble(askRow[1]));
                    } catch (NumberFormatException nfe) {
                        nfe.printStackTrace();
                        System.out.println("getMarketDetails: Invalid number returned");
                        askRow[2] = "";
                    }
                    askGridData.put(askData.getTransaction_id(), askRow);
                }
                // ----------------------------------------------------
                for (int j = 0; j < offerListMarket.GetBidDataCount(); j++) {
                    BidData bidData = offerListMarket.GetBidData(j);
                    if (bidData == null) {
                        continue;
                    }
                    String[] bidRow = new String[4];
                    bidRow[0] = bidData.getPrice_per_scale();
                    bidRow[1] = bidData.getAvailable_assets();
                    bidRow[3] = bidData.getMinimum_increment();
                    try {
                        Long lScale = Long.valueOf(marketDetails.getGranularity());
                        // this price is "per scale"
                        Long lPrice = Long.valueOf(bidRow[0]);
                        // Total overall quantity available
                        Long lQuantity = Long.valueOf(bidRow[1]);
                        // Number of scale units available in total quanity. (120 total at scale of 10, is 12 units.)
                        Long lScaleUnits = Long.valueOf(lQuantity / lScale);
                        // // Total value of available units is price times scale units.
                        Long lTotalCost = Long.valueOf(lPrice * lScaleUnits);
                        // At $5 per scale, at 12 units, is $60 total for 120 total assets. (The number 60 goes here, plus the currency symbol todo.)
                        bidRow[2] = String.valueOf(lTotalCost);
                    //                          bidRow[2] = String.valueOf(Double.parseDouble(bidRow[0]) * Double.parseDouble(bidRow[1]));
                    } catch (NumberFormatException nfe) {
                        nfe.printStackTrace();
                        System.out.println("getMarketDetails: Invalid number returned");
                        bidRow[2] = "";
                    }
                    bidGridData.put(bidData.getTransaction_id(), bidRow);
                }
            }
            // ----------------------------------------------------------
            OTAPI_Func theRequest2 = new OTAPI_Func(OTAPI_Func.FT.GET_MARKET_RECENT_TRADES, serverID, nymID, marketID);
            String strResponse2 = OTAPI_Func.SendRequest(theRequest2, "GET_MARKET_RECENT_TRADES");
            if (!Utility.VerifyStringVal(strResponse2)) {
                System.out.println("IN getMarketDetails: OTAPI_Func.SendRequest(() failed. (I give up.) ");
                return null;
            }
            if (otapiJNI.OTAPI_Basic_Message_GetDepth(strResponse2) > 0) {
                TradeListMarket tradeListMarket = Helpers.getMarketTradeList(serverID, marketID);
                if (tradeListMarket == null) {
                    System.out.println("getMarketDetails - tradeListMarket returns null");
                    return null;
                }
                for (int j = 0; j < tradeListMarket.GetTradeDataMarketCount(); j++) {
                    TradeDataMarket tradeDataMarket = tradeListMarket.GetTradeDataMarket(j);
                    if (tradeDataMarket == null) {
                        continue;
                    }
                    String[] tradeDataRow = new String[5];
                    tradeDataRow[2] = !Utility.VerifyStringVal(tradeDataMarket.getAmount_sold()) ? "" : tradeDataMarket.getAmount_sold();
                    tradeDataRow[4] = !Utility.VerifyStringVal(tradeDataMarket.getDate()) ? "" : tradeDataMarket.getDate();
                    System.out.println("tradeDataMarket.getDate():" + tradeDataMarket.getDate());
                    try {
                        tradeDataRow[4] = String.valueOf(new Date(Long.parseLong(tradeDataRow[4]) * 1000));
                    } catch (NumberFormatException nfe) {
                        nfe.printStackTrace();
                        System.out.println("Invalid number returned by timestmp:" + tradeDataRow[4]);
                        tradeDataRow[4] = "";
                    }
                    tradeDataRow[1] = !Utility.VerifyStringVal(tradeDataMarket.getPrice()) ? "" : tradeDataMarket.getPrice();
                    tradeDataRow[0] = !Utility.VerifyStringVal(tradeDataMarket.getTransaction_id()) ? "" : tradeDataMarket.getTransaction_id();
                    try {
                        Long lScale = Long.valueOf(marketDetails.getGranularity());
                        // this price is "per scale"
                        Long lPrice = Long.valueOf(tradeDataRow[1]);
                        // Total overall quantity available
                        Long lQuantity = Long.valueOf(tradeDataRow[2]);
                        // Number of scale units available in total quanity. (120 total at scale of 10, is 12 units.)
                        Long lScaleUnits = Long.valueOf(lQuantity / lScale);
                        // // Total value of available units is price times scale units.
                        Long lTotalCost = Long.valueOf(lPrice * lScaleUnits);
                        // At $5 per scale, at 12 units, is $60 total for 120 total assets. (The number 60 goes here, plus the currency symbol todo.)
                        tradeDataRow[3] = String.valueOf(lTotalCost);
                    //                          tradeDataRow[3] = String.valueOf(Double.parseDouble(tradeDataRow[2]) * Double.parseDouble(tradeDataRow[1]));
                    } catch (NumberFormatException nfe) {
                        nfe.printStackTrace();
                        System.out.println("Invalid number returned by timestmp:" + tradeDataRow[3]);
                        tradeDataRow[3] = "";
                    }
                    tradeMarketData.add(tradeDataRow);
                }
            }
            // ----------------------------------------------------------
            OTAPI_Func theRequest3 = new OTAPI_Func(OTAPI_Func.FT.GET_NYM_MARKET_OFFERS, serverID, nymID);
            String strResponse3 = OTAPI_Func.SendRequest(theRequest3, "GET_NYM_MARKET_OFFERS");
            if (!Utility.VerifyStringVal(strResponse3)) {
                System.out.println("IN getMarketDetails: OTAPI_Func.SendRequest(() failed. (I give up.) ");
                return null;
            }
            if (otapiJNI.OTAPI_Basic_Message_GetDepth(strResponse3) > 0) {
                OfferListNym offerListNym = Helpers.getNYMOffer(serverID, nymID);
                if (offerListNym == null) {
                    System.out.println("getMarketDetails - offerListNym returns null");
                    return null;
                }
                for (int j = 0; j < offerListNym.GetOfferDataNymCount(); j++) {
                    OfferDataNym offerDataNym = offerListNym.GetOfferDataNym(j);
                    if (offerDataNym == null) {
                        continue;
                    }
                    String[] nymDataRow = new String[3];
                    //offerDataNym.getSelling()
                    if (Utility.VerifyStringVal(marketData.getAsset_type_id()) && Utility.VerifyStringVal(marketData.getCurrency_type_id()) && Utility.VerifyStringVal(marketData.getScale()) && Utility.VerifyStringVal(offerDataNym.getAsset_type_id()) && Utility.VerifyStringVal(offerDataNym.getScale()) && Utility.VerifyStringVal(offerDataNym.getCurrency_type_id()) && marketData.getAsset_type_id().equals(offerDataNym.getAsset_type_id()) && marketData.getCurrency_type_id().equals(offerDataNym.getCurrency_type_id()) && marketData.getScale().equals(offerDataNym.getScale())) {
                        nymDataRow[0] = offerDataNym.getTransaction_id();
                        nymDataRow[1] = offerDataNym.getSelling() == true ? "Ask" : "Bid";
                        nymDataRow[2] = offerDataNym.getAsset_acct_id();
                        nymGridData.put(offerDataNym.getTransaction_id(), nymDataRow);
                    }
                }
            }
            marketDetails.setMarketAsk(askGridData);
            marketDetails.setMarketBid(bidGridData);
            marketDetails.setMarketRecentTrades(tradeMarketData);
            marketDetails.setNymOffers(nymGridData);
            break;
        }
    }
    return marketDetails;
}
Also used : OfferListNym(org.opentransactions.otapi.OfferListNym) MarketData(org.opentransactions.otapi.MarketData) HashMap(java.util.HashMap) OTAPI_Func(com.moneychanger.core.util.OTAPI_Func) TradeDataMarket(org.opentransactions.otapi.TradeDataMarket) ArrayList(java.util.ArrayList) OfferDataNym(org.opentransactions.otapi.OfferDataNym) BidData(org.opentransactions.otapi.BidData) Date(java.util.Date) TradeListMarket(org.opentransactions.otapi.TradeListMarket) AskData(org.opentransactions.otapi.AskData) OfferListMarket(org.opentransactions.otapi.OfferListMarket) ArrayList(java.util.ArrayList) List(java.util.List) MarketList(org.opentransactions.otapi.MarketList) MarketDetails(com.moneychanger.core.dataobjects.MarketDetails) MarketTicker(com.moneychanger.core.dataobjects.MarketTicker) MarketList(org.opentransactions.otapi.MarketList) HashMap(java.util.HashMap) Map(java.util.Map)

Aggregations

OTAPI_Func (com.moneychanger.core.util.OTAPI_Func)3 MarketData (org.opentransactions.otapi.MarketData)3 MarketList (org.opentransactions.otapi.MarketList)3 MarketTicker (com.moneychanger.core.dataobjects.MarketTicker)2 HashMap (java.util.HashMap)2 Map (java.util.Map)2 MarketDetails (com.moneychanger.core.dataobjects.MarketDetails)1 ArrayList (java.util.ArrayList)1 Date (java.util.Date)1 List (java.util.List)1 AskData (org.opentransactions.otapi.AskData)1 BidData (org.opentransactions.otapi.BidData)1 OfferDataNym (org.opentransactions.otapi.OfferDataNym)1 OfferListMarket (org.opentransactions.otapi.OfferListMarket)1 OfferListNym (org.opentransactions.otapi.OfferListNym)1 TradeDataMarket (org.opentransactions.otapi.TradeDataMarket)1 TradeListMarket (org.opentransactions.otapi.TradeListMarket)1