I hate classes
This commit is contained in:
parent
090bf03a68
commit
bff178991f
|
|
@ -6,27 +6,30 @@ import com.google.gson.JsonArray;
|
|||
import com.google.gson.JsonElement;
|
||||
import com.google.gson.JsonObject;
|
||||
import com.google.gson.JsonParser;
|
||||
import com.google.gson.JsonSyntaxException;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.Locale;
|
||||
|
||||
import okhttp3.OkHttpClient;
|
||||
import okhttp3.Request;
|
||||
import okhttp3.Response;
|
||||
|
||||
|
||||
public class InstanceInterface {
|
||||
private static final String API_BASE_URL = globalSettings.apiUrl;
|
||||
private static final String API_KEY = globalSettings.apiKey;
|
||||
private static final OkHttpClient httpClient = new OkHttpClient();
|
||||
|
||||
public static ProfitStatsData getProfitStatsData() throws IOException {
|
||||
// Construct the API request URL for stock quote
|
||||
Request stockRequest = new Request.Builder()
|
||||
Request profitRequest = new Request.Builder()
|
||||
.url(API_BASE_URL + "/statistics_server/combined_totals")
|
||||
.header("X-API-KEY", API_KEY)
|
||||
.build();
|
||||
|
||||
try (Response statsResponse = httpClient.newCall(stockRequest).execute()) {
|
||||
try (Response statsResponse = httpClient.newCall(profitRequest).execute()) {
|
||||
if (!statsResponse.isSuccessful()) {
|
||||
throw new IOException("Unexpected code " + statsResponse);
|
||||
}
|
||||
|
|
@ -43,9 +46,55 @@ public class InstanceInterface {
|
|||
}
|
||||
}
|
||||
|
||||
public static double getTraderTime(String exchange) throws IOException {
|
||||
//Uptime request
|
||||
Request uptimeRequest = new Request.Builder()
|
||||
.url(API_BASE_URL + "/" + exchange + "/trader_time")
|
||||
.header("X-API-KEY", API_KEY)
|
||||
.build();
|
||||
|
||||
try (Response statsResponse = httpClient.newCall(uptimeRequest).execute()) {
|
||||
if (!statsResponse.isSuccessful()) {
|
||||
throw new IOException("Unexpected code " + statsResponse);
|
||||
}
|
||||
String stockResponseBody = statsResponse.body().string();
|
||||
|
||||
return getUptime(stockResponseBody);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
public static ExchangeStatsData getExchangeStatsData(String exchange) throws IOException {
|
||||
//This needs to do A LOT of work
|
||||
|
||||
|
||||
|
||||
//All workers stats request
|
||||
Request allWorkersStatsRequest = new Request.Builder()
|
||||
.url(API_BASE_URL + "/" + exchange + "/get_all_worker_status")
|
||||
.header("X-API-KEY", API_KEY)
|
||||
.build();
|
||||
|
||||
//Instance global stats
|
||||
Request instanceGlobalStatsRequest = new Request.Builder()
|
||||
.url(API_BASE_URL + "/" + exchange + "/global_stats")
|
||||
.header("X-API-KEY", API_KEY)
|
||||
.build();
|
||||
|
||||
|
||||
return null;
|
||||
}
|
||||
|
||||
private static double getTodaysProfit(String jsonResponse) {
|
||||
try {
|
||||
// Parse the JSON response
|
||||
JsonElement jsonElement = JsonParser.parseString(jsonResponse);
|
||||
if (!jsonElement.isJsonObject()) {
|
||||
System.err.println("The parsed JSON response is not a JsonObject.");
|
||||
|
|
@ -67,7 +116,6 @@ public class InstanceInterface {
|
|||
|
||||
private static double getThisMonthsProfit(String jsonResponse) {
|
||||
try {
|
||||
// Parse the JSON response
|
||||
JsonElement jsonElement = JsonParser.parseString(jsonResponse);
|
||||
if (!jsonElement.isJsonObject()) {
|
||||
System.err.println("The parsed JSON response is not a JsonObject.");
|
||||
|
|
@ -87,8 +135,151 @@ public class InstanceInterface {
|
|||
}
|
||||
}
|
||||
|
||||
private static double getUptime(String jsonResponse) {
|
||||
try {
|
||||
JsonElement jsonElement = JsonParser.parseString(jsonResponse);
|
||||
if (!jsonElement.isJsonObject()) {
|
||||
System.err.println("The parsed JSON response is not a JsonObject.");
|
||||
return 0.0;
|
||||
}
|
||||
JsonObject jsonObject = jsonElement.getAsJsonObject();
|
||||
if (jsonObject.has("Time")) {
|
||||
return jsonObject.get("Time").getAsDouble();
|
||||
} else {
|
||||
System.err.println("The parsed JSON response does not contain a 'Time' entry.");
|
||||
return 0.0;
|
||||
}
|
||||
} catch (Exception e) {
|
||||
System.err.println("Error processing uptime data: " + e.getMessage());
|
||||
return 0.0;
|
||||
}
|
||||
}
|
||||
|
||||
private static InstanceGlobalStatsData getInstanceGlobalStatus(String jsonResponse) {
|
||||
try {
|
||||
JsonElement jsonElement = JsonParser.parseString(jsonResponse);
|
||||
if (!jsonElement.isJsonObject()) {
|
||||
System.err.println("The parsed JSON response is not a JsonObject.");
|
||||
return null;
|
||||
}
|
||||
if (!jsonElement.getAsJsonObject().has("Error")) {
|
||||
System.err.println("There is an Error field in the JSON response.");
|
||||
return null;
|
||||
}
|
||||
|
||||
JsonObject jsonObject = jsonElement.getAsJsonObject();
|
||||
|
||||
// Extracting online_workers and paused_traders from the response
|
||||
JsonArray onlineWorkersJsonArray = jsonObject.get("online_workers").getAsJsonArray();
|
||||
List<String> onlineWorkers = new ArrayList<>();
|
||||
for (int i = 0; i < onlineWorkersJsonArray.size(); i++) {
|
||||
onlineWorkers.add(onlineWorkersJsonArray.get(i).getAsString());
|
||||
}
|
||||
JsonArray pausedTradersJsonArray = jsonObject.get("paused_traders").getAsJsonArray();
|
||||
List<String> pausedTraders = new ArrayList<>();
|
||||
for (int i = 0; i < pausedTradersJsonArray.size(); i++) {
|
||||
pausedTraders.add(pausedTradersJsonArray.get(i).getAsString());
|
||||
}
|
||||
|
||||
//Extract BrokerConfigData from the JSON response
|
||||
BrokerConfigData brokerConfigData = null;
|
||||
|
||||
return new InstanceGlobalStatsData(
|
||||
jsonObject.get("name").getAsString(),
|
||||
jsonObject.get("uptime").getAsDouble(),
|
||||
onlineWorkers,
|
||||
pausedTraders,
|
||||
jsonObject.get("version").getAsString(),
|
||||
jsonObject.get("ccxt_version").getAsString(),
|
||||
brokerConfigData);
|
||||
|
||||
} catch (JsonSyntaxException e) {
|
||||
System.err.println("The JSON response is not valid.");
|
||||
return null;
|
||||
} catch (IOException e) {
|
||||
System.err.println("There was an error reading the JSON response.");
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
public static class InstanceGlobalStatsData {
|
||||
private final String instanceName;
|
||||
private final double instanceUptime;
|
||||
private final List<String> onlineWorkers;
|
||||
private final List<String> pausedTraders;
|
||||
private final String version;
|
||||
private final String ccxtVersion;
|
||||
private final BrokerConfigData config;
|
||||
|
||||
public InstanceGlobalStatsData(String name, double uptime, List<String> onlineWorkers, List<String> pausedTraders, String version, String ccxtVersion, BrokerConfigData config) {
|
||||
this.instanceName = name;
|
||||
this.instanceUptime = uptime;
|
||||
this.onlineWorkers = onlineWorkers;
|
||||
this.pausedTraders = pausedTraders;
|
||||
this.version = version;
|
||||
this.ccxtVersion = ccxtVersion;
|
||||
this.config = config;
|
||||
}
|
||||
|
||||
public String getName() { return instanceName; }
|
||||
public double getUptime() { return instanceUptime; }
|
||||
public List<String> getOnlineWorkers() { return onlineWorkers; }
|
||||
public List<String> getPausedTraders() { return pausedTraders; }
|
||||
public String getVersion() { return version; }
|
||||
public String getCcxtVersion() { return ccxtVersion; }
|
||||
public BrokerConfigData getConfig() { return config; }
|
||||
|
||||
}
|
||||
|
||||
|
||||
public static class BrokerConfigData {
|
||||
// Some fields are ignored, even though they are in the JSON
|
||||
private final String brokerName;
|
||||
private final Boolean isSandbox;
|
||||
private final Boolean simulateMarketOrders;
|
||||
private final List<String> pairs;
|
||||
private final double laptime;
|
||||
private final double cooldownMultiplier;
|
||||
private final double waitBeforeNewSafetyOrder;
|
||||
private final Boolean sendTelegram;
|
||||
private final String telegramBotToken;
|
||||
private final String telegramChatId;
|
||||
private final Boolean attemptToRestart;
|
||||
private final double defaultOrderSize;
|
||||
private final Boolean unifiedOrderQuery;
|
||||
|
||||
public BrokerConfigData(String brokerName, Boolean isSandbox, Boolean simulateMarketOrders, List<String> pairs, double laptime, double cooldownMultiplier, double waitBeforeNewSafetyOrder, Boolean sendTelegram, String telegramBotToken, String telegramChatId, Boolean attemptToRestart, double defaultOrderSize, Boolean unifiedOrderQuery) {
|
||||
this.brokerName = brokerName;
|
||||
this.isSandbox = isSandbox;
|
||||
this.simulateMarketOrders = simulateMarketOrders;
|
||||
this.pairs = pairs;
|
||||
this.laptime = laptime;
|
||||
this.cooldownMultiplier = cooldownMultiplier;
|
||||
this.waitBeforeNewSafetyOrder = waitBeforeNewSafetyOrder;
|
||||
this.sendTelegram = sendTelegram;
|
||||
this.telegramBotToken = telegramBotToken;
|
||||
this.telegramChatId = telegramChatId;
|
||||
this.attemptToRestart = attemptToRestart;
|
||||
this.defaultOrderSize = defaultOrderSize;
|
||||
this.unifiedOrderQuery = unifiedOrderQuery;
|
||||
}
|
||||
|
||||
public String getBrokerName() { return brokerName; }
|
||||
public Boolean getIsSandbox() { return isSandbox; }
|
||||
public Boolean getSimulateMarketOrders() { return simulateMarketOrders; }
|
||||
public List<String> getPairs() { return pairs; }
|
||||
public double getLaptime() { return laptime; }
|
||||
public double getCooldownMultiplier() { return cooldownMultiplier; }
|
||||
public double getWaitBeforeNewSafetyOrder() { return waitBeforeNewSafetyOrder; }
|
||||
public Boolean getSendTelegram() { return sendTelegram; }
|
||||
public String getTelegramBotToken() { return telegramBotToken; }
|
||||
public String getTelegramChatId() { return telegramChatId; }
|
||||
public Boolean getAttemptToRestart() { return attemptToRestart; }
|
||||
public double getDefaultOrderSize() { return defaultOrderSize; }
|
||||
public Boolean getUnifiedOrderQuery() { return unifiedOrderQuery; }
|
||||
}
|
||||
|
||||
|
||||
// Class to hold profits stats data
|
||||
public static class ProfitStatsData {
|
||||
private final double profitsToday;
|
||||
private final double profitsThisMonth;
|
||||
|
|
@ -98,8 +289,36 @@ public class InstanceInterface {
|
|||
this.profitsThisMonth = profitsThisMonth;
|
||||
}
|
||||
|
||||
// Getters
|
||||
public double getProfitsToday() { return profitsToday; }
|
||||
public double getProfitsThisMonth() { return profitsThisMonth; }
|
||||
}
|
||||
|
||||
|
||||
public static class ExchangeStatsData {
|
||||
// Create an instance: ExchangeStatsData exchangeStatsData = new ExchangeStatsData(R.drawable.your_drawable, 2000, 2500, 20, 14, 6);
|
||||
// Getting the drawable: Drawable drawable = getResources().getDrawable(exchangeStatsData.getSemaphore());
|
||||
|
||||
private final int semaphore;
|
||||
private final double fundsAvailable;
|
||||
private final double fundsNeeded;
|
||||
private final int onlineWorkers;
|
||||
private final int longWorkers;
|
||||
private final int shortWorkers;
|
||||
|
||||
public ExchangeStatsData(int semaphore, double fundsAvailable, double fundsNeeded, int onlineWorkers, int longWorkers, int shortWorkers) {
|
||||
this.semaphore = semaphore;
|
||||
this.fundsAvailable = fundsAvailable;
|
||||
this.fundsNeeded = fundsNeeded;
|
||||
this.onlineWorkers = onlineWorkers;
|
||||
this.longWorkers = longWorkers;
|
||||
this.shortWorkers = shortWorkers;
|
||||
}
|
||||
|
||||
public int getSemaphore() { return semaphore; }
|
||||
public double getFundsAvailable() { return fundsAvailable; }
|
||||
public double getFundsNeeded() { return fundsNeeded; }
|
||||
public int getOnlineWorkers() { return onlineWorkers; }
|
||||
public int getLongWorkers() { return longWorkers; }
|
||||
public int getShortWorkers() { return shortWorkers; }
|
||||
}
|
||||
}
|
||||
|
|
@ -143,11 +143,6 @@ public class HomeFragment extends Fragment {
|
|||
exchange3Funds = root.findViewById(R.id.exchangeStats3Funds);
|
||||
exchange4Funds = root.findViewById(R.id.exchangeStats4Funds);
|
||||
|
||||
exchange1FundsNeeded = root.findViewById(R.id.exchangeStats1FundsNeeded);
|
||||
exchange2FundsNeeded = root.findViewById(R.id.exchangeStats2FundsNeeded);
|
||||
exchange3FundsNeeded = root.findViewById(R.id.exchangeStats3FundsNeeded);
|
||||
exchange4FundsNeeded = root.findViewById(R.id.exchangeStats4FundsNeeded);
|
||||
|
||||
exchange1FundsPercentage = root.findViewById(R.id.exchangeStats1FundsPercentage);
|
||||
exchange2FundsPercentage = root.findViewById(R.id.exchangeStats2FundsPercentage);
|
||||
exchange3FundsPercentage = root.findViewById(R.id.exchangeStats3FundsPercentage);
|
||||
|
|
@ -184,15 +179,13 @@ public class HomeFragment extends Fragment {
|
|||
*
|
||||
*/
|
||||
|
||||
// Profits today and this month
|
||||
profitsToday.setText(R.string.profits_today_example);
|
||||
profitsThisMonth.setText(R.string.profits_this_month_example);
|
||||
|
||||
//Prices
|
||||
pricePair1.setText(R.string.default_price_ticker_1);
|
||||
pricePair2.setText(R.string.default_price_ticker_2);
|
||||
pricePair3.setText(R.string.default_price_ticker_3);
|
||||
|
||||
|
||||
pricePair124hPercentage.setText(R.string.percentage_example);
|
||||
pricePair17dPercentage.setText(R.string.percentage_example);
|
||||
pricePair130dPercentage.setText(R.string.percentage_example);
|
||||
|
|
@ -205,6 +198,7 @@ public class HomeFragment extends Fragment {
|
|||
pricePair37dPercentage.setText(R.string.percentage_example);
|
||||
pricePair330dPercentage.setText(R.string.percentage_example);
|
||||
|
||||
|
||||
pricePair124hPercentage.setTextColor(Color.GREEN);
|
||||
pricePair17dPercentage.setTextColor(Color.GREEN);
|
||||
pricePair130dPercentage.setTextColor(Color.GREEN);
|
||||
|
|
@ -217,6 +211,12 @@ public class HomeFragment extends Fragment {
|
|||
pricePair37dPercentage.setTextColor(Color.GREEN);
|
||||
pricePair330dPercentage.setTextColor(Color.GREEN);
|
||||
|
||||
|
||||
// Profits today and this month
|
||||
profitsToday.setText(R.string.profits_today_example);
|
||||
profitsThisMonth.setText(R.string.profits_this_month_example);
|
||||
|
||||
|
||||
//Exchange status
|
||||
exchange1Status.setImageResource(R.drawable.ic_green_circle_48);
|
||||
exchange2Status.setImageResource(R.drawable.ic_green_circle_48);
|
||||
|
|
@ -233,11 +233,6 @@ public class HomeFragment extends Fragment {
|
|||
exchange3Funds.setText(R.string.exchange_funds_example);
|
||||
exchange4Funds.setText(R.string.exchange_funds_example);
|
||||
|
||||
exchange1FundsNeeded.setText(R.string.exchange_funds_needed_example);
|
||||
exchange2FundsNeeded.setText(R.string.exchange_funds_needed_example);
|
||||
exchange3FundsNeeded.setText(R.string.exchange_funds_needed_example);
|
||||
exchange4FundsNeeded.setText(R.string.exchange_funds_needed_example);
|
||||
|
||||
exchange1FundsPercentage.setText(R.string.exchange_funds_percentage_example);
|
||||
exchange2FundsPercentage.setText(R.string.exchange_funds_percentage_example);
|
||||
exchange3FundsPercentage.setText(R.string.exchange_funds_percentage_example);
|
||||
|
|
@ -268,8 +263,6 @@ public class HomeFragment extends Fragment {
|
|||
log3Content.setText(R.string.log_example);
|
||||
log4Content.setText(R.string.log_example);
|
||||
|
||||
// Let's fetch prices
|
||||
//fetchAndDisplayPriceData();
|
||||
|
||||
// Setup task
|
||||
handler = new Handler();
|
||||
|
|
@ -385,7 +378,6 @@ public class HomeFragment extends Fragment {
|
|||
setPercentageColor(pricePair37dPercentage,priceData3.getPriceChangePercent7d());
|
||||
setPercentageColor(pricePair330dPercentage,priceData3.getPriceChangePercent30d());
|
||||
|
||||
//Toast.makeText(getContext(), String.format(Locale.ROOT,"%.2f", profitsData.getProfitsToday()), Toast.LENGTH_SHORT).show();
|
||||
profitsToday.setText(String.format(Locale.ROOT,"%.2f", profitsData.getProfitsToday()));
|
||||
profitsThisMonth.setText(String.format(Locale.ROOT,"%.2f", profitsData.getProfitsThisMonth()));
|
||||
|
||||
|
|
|
|||
|
|
@ -372,30 +372,13 @@
|
|||
android:textStyle="normal" />
|
||||
<TextView
|
||||
android:id="@+id/exchangeStats1Funds"
|
||||
android:layout_width="72dp"
|
||||
android:layout_width="148dp"
|
||||
android:layout_height="24dp"
|
||||
android:text="@string/exchange_funds_example"
|
||||
android:textColor="@color/secondary_text_color"
|
||||
android:textAlignment="center"
|
||||
android:textSize="16sp"
|
||||
android:textStyle="bold" />
|
||||
<TextView
|
||||
android:layout_width="6dp"
|
||||
android:layout_height="24dp"
|
||||
android:text="@string/exchange_separator"
|
||||
android:textColor="@color/secondary_text_color"
|
||||
android:textAlignment="center"
|
||||
android:textSize="14sp"
|
||||
android:textStyle="bold" />
|
||||
<TextView
|
||||
android:id="@+id/exchangeStats1FundsNeeded"
|
||||
android:layout_width="72dp"
|
||||
android:layout_height="24dp"
|
||||
android:text="@string/exchange_funds_needed_example"
|
||||
android:textColor="@color/secondary_text_color"
|
||||
android:textAlignment="center"
|
||||
android:textSize="16sp"
|
||||
android:textStyle="bold" />
|
||||
<TextView
|
||||
android:id="@+id/exchangeStats1FundsPercentage"
|
||||
android:layout_width="52dp"
|
||||
|
|
@ -458,30 +441,13 @@
|
|||
android:textStyle="normal" />
|
||||
<TextView
|
||||
android:id="@+id/exchangeStats2Funds"
|
||||
android:layout_width="72dp"
|
||||
android:layout_width="148dp"
|
||||
android:layout_height="24dp"
|
||||
android:text="@string/exchange_funds_example"
|
||||
android:textColor="@color/secondary_text_color"
|
||||
android:textAlignment="center"
|
||||
android:textSize="16sp"
|
||||
android:textStyle="bold" />
|
||||
<TextView
|
||||
android:layout_width="6dp"
|
||||
android:layout_height="24dp"
|
||||
android:text="@string/exchange_separator"
|
||||
android:textColor="@color/secondary_text_color"
|
||||
android:textAlignment="center"
|
||||
android:textSize="14sp"
|
||||
android:textStyle="bold" />
|
||||
<TextView
|
||||
android:id="@+id/exchangeStats2FundsNeeded"
|
||||
android:layout_width="72dp"
|
||||
android:layout_height="24dp"
|
||||
android:text="@string/exchange_funds_needed_example"
|
||||
android:textColor="@color/secondary_text_color"
|
||||
android:textAlignment="center"
|
||||
android:textSize="16sp"
|
||||
android:textStyle="bold" />
|
||||
<TextView
|
||||
android:id="@+id/exchangeStats2FundsPercentage"
|
||||
android:layout_width="52dp"
|
||||
|
|
@ -545,30 +511,13 @@
|
|||
android:textStyle="normal" />
|
||||
<TextView
|
||||
android:id="@+id/exchangeStats3Funds"
|
||||
android:layout_width="72dp"
|
||||
android:layout_width="148dp"
|
||||
android:layout_height="24dp"
|
||||
android:text="@string/exchange_funds_example"
|
||||
android:textColor="@color/secondary_text_color"
|
||||
android:textAlignment="center"
|
||||
android:textSize="16sp"
|
||||
android:textStyle="bold" />
|
||||
<TextView
|
||||
android:layout_width="6dp"
|
||||
android:layout_height="24dp"
|
||||
android:text="@string/exchange_separator"
|
||||
android:textColor="@color/secondary_text_color"
|
||||
android:textAlignment="center"
|
||||
android:textSize="14sp"
|
||||
android:textStyle="bold" />
|
||||
<TextView
|
||||
android:id="@+id/exchangeStats3FundsNeeded"
|
||||
android:layout_width="72dp"
|
||||
android:layout_height="24dp"
|
||||
android:text="@string/exchange_funds_needed_example"
|
||||
android:textColor="@color/secondary_text_color"
|
||||
android:textAlignment="center"
|
||||
android:textSize="16sp"
|
||||
android:textStyle="bold" />
|
||||
<TextView
|
||||
android:id="@+id/exchangeStats3FundsPercentage"
|
||||
android:layout_width="52dp"
|
||||
|
|
@ -632,30 +581,13 @@
|
|||
android:textStyle="normal" />
|
||||
<TextView
|
||||
android:id="@+id/exchangeStats4Funds"
|
||||
android:layout_width="72dp"
|
||||
android:layout_width="148dp"
|
||||
android:layout_height="24dp"
|
||||
android:text="@string/exchange_funds_example"
|
||||
android:textColor="@color/secondary_text_color"
|
||||
android:textAlignment="center"
|
||||
android:textSize="16sp"
|
||||
android:textStyle="bold" />
|
||||
<TextView
|
||||
android:layout_width="6dp"
|
||||
android:layout_height="24dp"
|
||||
android:text="@string/exchange_separator"
|
||||
android:textColor="@color/secondary_text_color"
|
||||
android:textAlignment="center"
|
||||
android:textSize="14sp"
|
||||
android:textStyle="bold" />
|
||||
<TextView
|
||||
android:id="@+id/exchangeStats4FundsNeeded"
|
||||
android:layout_width="72dp"
|
||||
android:layout_height="24dp"
|
||||
android:text="@string/exchange_funds_needed_example"
|
||||
android:textColor="@color/secondary_text_color"
|
||||
android:textAlignment="center"
|
||||
android:textSize="16sp"
|
||||
android:textStyle="bold" />
|
||||
<TextView
|
||||
android:id="@+id/exchangeStats4FundsPercentage"
|
||||
android:layout_width="52dp"
|
||||
|
|
@ -705,7 +637,7 @@
|
|||
|
||||
<TextView
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="20dp"
|
||||
android:layout_height="24dp"
|
||||
android:text="@string/last_trades_label"
|
||||
android:textColor="@color/secondary_text_color"
|
||||
android:textAlignment="center"
|
||||
|
|
@ -736,14 +668,13 @@
|
|||
|
||||
<TextView
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="22dp"
|
||||
android:layout_height="24dp"
|
||||
android:id="@+id/log1CardTitle"
|
||||
android:text="@string/exchange_1_log_title"
|
||||
android:textAlignment="center"
|
||||
android:textColor="@color/secondary_text_color"
|
||||
android:textSize="18sp"
|
||||
android:textStyle="bold" />
|
||||
|
||||
<TextView
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
|
|
@ -765,7 +696,7 @@
|
|||
|
||||
<TextView
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="22dp"
|
||||
android:layout_height="24dp"
|
||||
android:id="@+id/log2CardTitle"
|
||||
android:text="@string/exchange_2_log_title"
|
||||
android:textAlignment="center"
|
||||
|
|
@ -794,7 +725,7 @@
|
|||
|
||||
<TextView
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="22dp"
|
||||
android:layout_height="24dp"
|
||||
android:id="@+id/log3CardTitle"
|
||||
android:text="@string/exchange_3_log_title"
|
||||
android:textAlignment="center"
|
||||
|
|
@ -823,7 +754,7 @@
|
|||
|
||||
<TextView
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="22dp"
|
||||
android:layout_height="24dp"
|
||||
android:id="@+id/log4CardTitle"
|
||||
android:text="@string/exchange_4_log_title"
|
||||
android:textAlignment="center"
|
||||
|
|
|
|||
|
|
@ -52,9 +52,9 @@
|
|||
<string name="percentage_example" translatable="false"> </string>
|
||||
|
||||
<string name="profits_today_title">Today:</string>
|
||||
<string name="profits_today_example" translatable="false">420.69</string>
|
||||
<string name="profits_today_example" translatable="false"> </string>
|
||||
<string name="profits_this_month_title">This month:</string>
|
||||
<string name="profits_this_month_example" translatable="false">8392.39</string>
|
||||
<string name="profits_this_month_example" translatable="false"> </string>
|
||||
<string name="profits_quote_currency" translatable="false">USDT</string>
|
||||
|
||||
<string name="semaphore_description">Exchange semaphore</string>
|
||||
|
|
@ -63,8 +63,7 @@
|
|||
<string name="exchange_3_name" translatable="false">KuCoin</string>
|
||||
<string name="exchange_4_name" translatable="false">OKX</string>
|
||||
|
||||
<string name="exchange_funds_example" translatable="false">15203.20</string>
|
||||
<string name="exchange_funds_needed_example" translatable="false">59393.39</string>
|
||||
<string name="exchange_funds_example" translatable="false">35203.20/65535.20</string>
|
||||
<string name="exchange_funds_percentage_example" translatable="false">169%</string>
|
||||
<string name="exchange_workers_online_example" translatable="false">20</string>
|
||||
<string name="exchange_workers_long_short_example" translatable="false">20/20</string>
|
||||
|
|
|
|||
Loading…
Reference in New Issue