Deals, but better because RGB
This commit is contained in:
parent
f05785d6d3
commit
d145695f1c
|
|
@ -331,7 +331,6 @@ public class InstanceInterface {
|
||||||
for (int i = worker.getSoAmount(); i <= worker.getNumberOfSafetyOrders(); i++) {
|
for (int i = worker.getSoAmount(); i <= worker.getNumberOfSafetyOrders(); i++) {
|
||||||
fundsNeeded += gibSoSize(worker.getOrderSize(),i,0.0105); // I know I know
|
fundsNeeded += gibSoSize(worker.getOrderSize(),i,0.0105); // I know I know
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -353,7 +352,7 @@ public class InstanceInterface {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return new ExchangeStatsData(lastSeen,fundsAvailable,fundsNeeded,onlineWorkers,longWorkers,shortWorkers,instanceGlobalStats);
|
return new ExchangeStatsData(lastSeen,fundsAvailable,fundsNeeded,onlineWorkers,longWorkers,shortWorkers,instanceGlobalStats,workers);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -453,6 +452,7 @@ public class InstanceInterface {
|
||||||
}
|
}
|
||||||
|
|
||||||
valueToReturn.add(new WorkerStatsData(
|
valueToReturn.add(new WorkerStatsData(
|
||||||
|
key,
|
||||||
isShort,
|
isShort,
|
||||||
stopWhenProfit,
|
stopWhenProfit,
|
||||||
orderSize,
|
orderSize,
|
||||||
|
|
@ -721,8 +721,9 @@ public class InstanceInterface {
|
||||||
private final int longWorkers;
|
private final int longWorkers;
|
||||||
private final int shortWorkers;
|
private final int shortWorkers;
|
||||||
private final InstanceGlobalStatsData globalStats;
|
private final InstanceGlobalStatsData globalStats;
|
||||||
|
private final List<WorkerStatsData> workers;
|
||||||
|
|
||||||
public ExchangeStatsData(double lastSeen, double fundsAvailable, double fundsNeeded, int onlineWorkers, int longWorkers, int shortWorkers, InstanceGlobalStatsData globalStats) {
|
public ExchangeStatsData(double lastSeen, double fundsAvailable, double fundsNeeded, int onlineWorkers, int longWorkers, int shortWorkers, InstanceGlobalStatsData globalStats, List<WorkerStatsData> workers) {
|
||||||
this.lastSeen = lastSeen;
|
this.lastSeen = lastSeen;
|
||||||
this.fundsAvailable = fundsAvailable;
|
this.fundsAvailable = fundsAvailable;
|
||||||
this.fundsNeeded = fundsNeeded;
|
this.fundsNeeded = fundsNeeded;
|
||||||
|
|
@ -730,6 +731,7 @@ public class InstanceInterface {
|
||||||
this.longWorkers = longWorkers;
|
this.longWorkers = longWorkers;
|
||||||
this.shortWorkers = shortWorkers;
|
this.shortWorkers = shortWorkers;
|
||||||
this.globalStats = globalStats;
|
this.globalStats = globalStats;
|
||||||
|
this.workers = workers;
|
||||||
}
|
}
|
||||||
|
|
||||||
public double getLastSeen() { return lastSeen; }
|
public double getLastSeen() { return lastSeen; }
|
||||||
|
|
@ -739,9 +741,11 @@ public class InstanceInterface {
|
||||||
public int getLongWorkers() { return longWorkers; }
|
public int getLongWorkers() { return longWorkers; }
|
||||||
public int getShortWorkers() { return shortWorkers; }
|
public int getShortWorkers() { return shortWorkers; }
|
||||||
public InstanceGlobalStatsData getGlobalStats() { return globalStats; }
|
public InstanceGlobalStatsData getGlobalStats() { return globalStats; }
|
||||||
|
public List<WorkerStatsData> getWorkers() { return workers; }
|
||||||
}
|
}
|
||||||
|
|
||||||
public static class WorkerStatsData {
|
public static class WorkerStatsData {
|
||||||
|
private final String pair;
|
||||||
private final boolean isShort;
|
private final boolean isShort;
|
||||||
private final boolean stopWhenProfit;
|
private final boolean stopWhenProfit;
|
||||||
private final double orderSize;
|
private final double orderSize;
|
||||||
|
|
@ -773,7 +777,8 @@ public class InstanceInterface {
|
||||||
private final JsonObject oldLongDictionary; //Change type
|
private final JsonObject oldLongDictionary; //Change type
|
||||||
private final String statusString;
|
private final String statusString;
|
||||||
|
|
||||||
public WorkerStatsData(boolean isShort, boolean stopWhenProfit, double orderSize, double quoteSpent, double baseBought, int soAmount, int numberOfSafetyOrders, int tpMode, String profitTable, double startTime, double startPrice, double dealStartTime, double dealUptime, double totalUptime, double price, double takeProfitPrice, double nextSoPrice, String tpOrderId, JsonObject takeProfitOrder, String soOrderId, JsonObject safetyOrder, double feesPaidInBase, double feesPaidInQuote, double partialProfit, String safetyPriceTable, String dealOrderHistory, String pauseReason, JsonObject oldLong, String statusString) {
|
public WorkerStatsData(String pair, boolean isShort, boolean stopWhenProfit, double orderSize, double quoteSpent, double baseBought, int soAmount, int numberOfSafetyOrders, int tpMode, String profitTable, double startTime, double startPrice, double dealStartTime, double dealUptime, double totalUptime, double price, double takeProfitPrice, double nextSoPrice, String tpOrderId, JsonObject takeProfitOrder, String soOrderId, JsonObject safetyOrder, double feesPaidInBase, double feesPaidInQuote, double partialProfit, String safetyPriceTable, String dealOrderHistory, String pauseReason, JsonObject oldLong, String statusString) {
|
||||||
|
this.pair = pair;
|
||||||
this.isShort = isShort;
|
this.isShort = isShort;
|
||||||
this.stopWhenProfit = stopWhenProfit;
|
this.stopWhenProfit = stopWhenProfit;
|
||||||
this.orderSize = orderSize;
|
this.orderSize = orderSize;
|
||||||
|
|
@ -805,6 +810,7 @@ public class InstanceInterface {
|
||||||
this.statusString = statusString;
|
this.statusString = statusString;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public String getPair() {return pair; }
|
||||||
public boolean getIsShort() { return isShort; }
|
public boolean getIsShort() { return isShort; }
|
||||||
public boolean getStopWhenProfit() { return stopWhenProfit; }
|
public boolean getStopWhenProfit() { return stopWhenProfit; }
|
||||||
public double getOrderSize() { return orderSize; }
|
public double getOrderSize() { return orderSize; }
|
||||||
|
|
|
||||||
|
|
@ -24,6 +24,7 @@ import androidx.appcompat.app.AppCompatActivity;
|
||||||
import com.example.dcav2gui.databinding.ActivityMainBinding;
|
import com.example.dcav2gui.databinding.ActivityMainBinding;
|
||||||
|
|
||||||
import java.io.File;
|
import java.io.File;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
public class MainActivity extends AppCompatActivity {
|
public class MainActivity extends AppCompatActivity {
|
||||||
|
|
||||||
|
|
@ -41,6 +42,7 @@ public class MainActivity extends AppCompatActivity {
|
||||||
this.homeViewCache = newCache;
|
this.homeViewCache = newCache;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected void onCreate(Bundle savedInstanceState) {
|
protected void onCreate(Bundle savedInstanceState) {
|
||||||
super.onCreate(savedInstanceState);
|
super.onCreate(savedInstanceState);
|
||||||
|
|
@ -60,8 +62,6 @@ public class MainActivity extends AppCompatActivity {
|
||||||
|
|
||||||
DrawerLayout drawer = binding.drawerLayout;
|
DrawerLayout drawer = binding.drawerLayout;
|
||||||
NavigationView navigationView = binding.navView;
|
NavigationView navigationView = binding.navView;
|
||||||
// Passing each menu ID as a set of Ids because each
|
|
||||||
// menu should be considered as top level destinations.
|
|
||||||
mAppBarConfiguration = new AppBarConfiguration.Builder(
|
mAppBarConfiguration = new AppBarConfiguration.Builder(
|
||||||
R.id.nav_home,
|
R.id.nav_home,
|
||||||
R.id.nav_binance,
|
R.id.nav_binance,
|
||||||
|
|
@ -75,12 +75,6 @@ public class MainActivity extends AppCompatActivity {
|
||||||
NavigationUI.setupActionBarWithNavController(this, navController, mAppBarConfiguration);
|
NavigationUI.setupActionBarWithNavController(this, navController, mAppBarConfiguration);
|
||||||
NavigationUI.setupWithNavController(navigationView, navController);
|
NavigationUI.setupWithNavController(navigationView, navController);
|
||||||
|
|
||||||
|
|
||||||
// Check for settings file
|
|
||||||
// if (!isSettingsFileExists()) {
|
|
||||||
// Toast.makeText(this, "Please enter your credentials in the settings menu", Toast.LENGTH_LONG).show();
|
|
||||||
// }
|
|
||||||
|
|
||||||
// Load settings
|
// Load settings
|
||||||
SettingsViewModel settingsViewModel = new ViewModelProvider(this).get(SettingsViewModel.class);
|
SettingsViewModel settingsViewModel = new ViewModelProvider(this).get(SettingsViewModel.class);
|
||||||
globalSettings = settingsViewModel.loadSettings(this);
|
globalSettings = settingsViewModel.loadSettings(this);
|
||||||
|
|
|
||||||
|
|
@ -1,9 +1,15 @@
|
||||||
package com.example.dcav2gui.ui.home;
|
package com.example.dcav2gui.ui.home;
|
||||||
|
|
||||||
|
import static androidx.core.content.res.ResourcesCompat.getColor;
|
||||||
|
|
||||||
import android.annotation.SuppressLint;
|
import android.annotation.SuppressLint;
|
||||||
import android.graphics.Color;
|
import android.graphics.Color;
|
||||||
import android.os.Bundle;
|
import android.os.Bundle;
|
||||||
import android.os.Handler;
|
import android.os.Handler;
|
||||||
|
import android.text.Spannable;
|
||||||
|
import android.text.SpannableString;
|
||||||
|
import android.text.SpannableStringBuilder;
|
||||||
|
import android.text.style.ForegroundColorSpan;
|
||||||
import android.view.LayoutInflater;
|
import android.view.LayoutInflater;
|
||||||
import android.view.View;
|
import android.view.View;
|
||||||
import android.view.ViewGroup;
|
import android.view.ViewGroup;
|
||||||
|
|
@ -12,6 +18,7 @@ import android.widget.ProgressBar;
|
||||||
import android.widget.ScrollView;
|
import android.widget.ScrollView;
|
||||||
import android.widget.TextView;
|
import android.widget.TextView;
|
||||||
import android.widget.Toast;
|
import android.widget.Toast;
|
||||||
|
import androidx.core.content.ContextCompat;
|
||||||
|
|
||||||
import androidx.annotation.NonNull;
|
import androidx.annotation.NonNull;
|
||||||
import androidx.fragment.app.Fragment;
|
import androidx.fragment.app.Fragment;
|
||||||
|
|
@ -23,6 +30,7 @@ import com.example.dcav2gui.R;
|
||||||
import com.example.dcav2gui.TickerTracker;
|
import com.example.dcav2gui.TickerTracker;
|
||||||
|
|
||||||
import java.text.SimpleDateFormat;
|
import java.text.SimpleDateFormat;
|
||||||
|
import java.util.ArrayList;
|
||||||
import java.util.Date;
|
import java.util.Date;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Locale;
|
import java.util.Locale;
|
||||||
|
|
@ -41,11 +49,6 @@ public class HomeFragment extends Fragment {
|
||||||
private Handler handler = new Handler();
|
private Handler handler = new Handler();
|
||||||
private Runnable updateRunnable;
|
private Runnable updateRunnable;
|
||||||
|
|
||||||
public List<InstanceInterface.WorkerStatsData> binanceWorkerStatsData;
|
|
||||||
public List<InstanceInterface.WorkerStatsData> gateioWorkerStatsData;
|
|
||||||
public List<InstanceInterface.WorkerStatsData> kucoinWorkersStatsData;
|
|
||||||
public List<InstanceInterface.WorkerStatsData> okexWorkerStatsData;
|
|
||||||
|
|
||||||
private ProgressBar progressBar;
|
private ProgressBar progressBar;
|
||||||
private TextView progressBarText;
|
private TextView progressBarText;
|
||||||
private ScrollView mainHomeScrollView;
|
private ScrollView mainHomeScrollView;
|
||||||
|
|
@ -104,7 +107,10 @@ public class HomeFragment extends Fragment {
|
||||||
private TextView log3Content;
|
private TextView log3Content;
|
||||||
private TextView log4Content;
|
private TextView log4Content;
|
||||||
|
|
||||||
|
// InstanceInterface.ExchangeStatsData binanceStats;
|
||||||
|
// InstanceInterface.ExchangeStatsData gateioStats;
|
||||||
|
// InstanceInterface.ExchangeStatsData kucoinStats;
|
||||||
|
// InstanceInterface.ExchangeStatsData okexStats;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -526,6 +532,39 @@ public class HomeFragment extends Fragment {
|
||||||
String kucoinLogs,
|
String kucoinLogs,
|
||||||
String okexLogs) {
|
String okexLogs) {
|
||||||
|
|
||||||
|
List<String> shortWorkers = new ArrayList<>();
|
||||||
|
|
||||||
|
//Populate short traders list
|
||||||
|
if (binanceData != null && binanceData.getWorkers()!= null) {
|
||||||
|
binanceData.getWorkers().forEach(worker -> {
|
||||||
|
if (worker.getIsShort()) {
|
||||||
|
shortWorkers.add(worker.getPair());
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
if (gateioData != null && gateioData.getWorkers()!= null) {
|
||||||
|
gateioData.getWorkers().forEach(worker -> {
|
||||||
|
if (worker.getIsShort()) {
|
||||||
|
shortWorkers.add(worker.getPair());
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
if (kucoinData != null && kucoinData.getWorkers()!= null) {
|
||||||
|
kucoinData.getWorkers().forEach(worker -> {
|
||||||
|
if (worker.getIsShort()) {
|
||||||
|
shortWorkers.add(worker.getPair());
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
if (okexData != null && okexData.getWorkers()!= null) {
|
||||||
|
okexData.getWorkers().forEach(worker -> {
|
||||||
|
if (worker.getIsShort()) {
|
||||||
|
shortWorkers.add(worker.getPair());
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
if (firstTickerChangeData!= null) {
|
if (firstTickerChangeData!= null) {
|
||||||
pricePair1.setText(String.format(Locale.ROOT, "%.2f", firstTickerChangeData.getCurrentPrice()));
|
pricePair1.setText(String.format(Locale.ROOT, "%.2f", firstTickerChangeData.getCurrentPrice()));
|
||||||
pricePair124hPercentage.setText(formatPercentage(firstTickerChangeData.getPriceChangePercent24h()));
|
pricePair124hPercentage.setText(formatPercentage(firstTickerChangeData.getPriceChangePercent24h()));
|
||||||
|
|
@ -691,23 +730,31 @@ public class HomeFragment extends Fragment {
|
||||||
String longShortWorkers = String.valueOf(okexData.getLongWorkers()) + "/" + String.valueOf(okexData.getShortWorkers());
|
String longShortWorkers = String.valueOf(okexData.getLongWorkers()) + "/" + String.valueOf(okexData.getShortWorkers());
|
||||||
exchange4WorkersLongShort.setText(longShortWorkers);
|
exchange4WorkersLongShort.setText(longShortWorkers);
|
||||||
}
|
}
|
||||||
|
int shortColor = ContextCompat.getColor(requireContext(), R.color.orange);
|
||||||
|
int LongColor = ContextCompat.getColor(requireContext(), R.color.darker_cyan);
|
||||||
if (dealData != null) {
|
if (dealData != null) {
|
||||||
StringBuilder dealsList = new StringBuilder();
|
SpannableStringBuilder spannableStringBuilder = new SpannableStringBuilder();
|
||||||
|
String dealsList = "";
|
||||||
for (InstanceInterface.DealData deal : dealData) {
|
for (InstanceInterface.DealData deal : dealData) {
|
||||||
String timestamp = timeStampConverter(deal.getTimestamp());
|
String timestamp = timeStampConverter(deal.getTimestamp());
|
||||||
String pair = deal.getPair();
|
String pair = deal.getPair();
|
||||||
String amount = String.format(Locale.ROOT,"%.2f", deal.getAmount());
|
String amount = String.format(Locale.ROOT, "%.2f", deal.getAmount());
|
||||||
String exchange = Character.toUpperCase(deal.getExchangeName().charAt(0)) + deal.getExchangeName().substring(1);
|
String exchange = Character.toUpperCase(deal.getExchangeName().charAt(0)) + deal.getExchangeName().substring(1);
|
||||||
dealsList.append(timestamp)
|
String dealString = timestamp + " | " + pair + " | " + amount + " USDT | " + exchange + "\n";
|
||||||
.append(" | ")
|
SpannableString spannableString = new SpannableString(dealString);
|
||||||
.append(pair)
|
int startIndex = dealString.indexOf(pair);
|
||||||
.append(" | ")
|
int endIndex = startIndex + pair.length();
|
||||||
.append(amount)
|
if ((startIndex != -1) && (endIndex != -1)) {
|
||||||
.append(" USDT | ")
|
//If pair in shortWorkers, set color to yellow, else cyan
|
||||||
.append(exchange).append("\n");
|
if (shortWorkers.contains(pair)) {
|
||||||
|
spannableString.setSpan(new ForegroundColorSpan(shortColor), startIndex, endIndex, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
|
||||||
|
} else {
|
||||||
|
spannableString.setSpan(new ForegroundColorSpan(LongColor), startIndex, endIndex, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
spannableStringBuilder.append(spannableString);
|
||||||
}
|
}
|
||||||
lastTrades.setText(dealsList);
|
lastTrades.setText(spannableStringBuilder);
|
||||||
}
|
}
|
||||||
|
|
||||||
//Populate logs
|
//Populate logs
|
||||||
|
|
|
||||||
|
|
@ -12,7 +12,8 @@
|
||||||
<color name="blue">#FF0000FF</color>
|
<color name="blue">#FF0000FF</color>
|
||||||
<color name="yellow">#FFFFFF00</color>
|
<color name="yellow">#FFFFFF00</color>
|
||||||
<color name="grey">#FF424242</color>
|
<color name="grey">#FF424242</color>
|
||||||
|
<color name="orange">#FFA500</color>
|
||||||
|
<color name="darker_cyan">#008B8B</color>
|
||||||
<color name="secondary_text_color">#FF424242</color>
|
<color name="secondary_text_color">#FF424242</color>
|
||||||
<color name="card_background_color">#FFF6F6F6</color>
|
<color name="card_background_color">#FFF6F6F6</color>
|
||||||
<color name="stroke_color">#FF000000</color>
|
<color name="stroke_color">#FF000000</color>
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue