Android 如何在碎片上绘制加密货币的指数移动平均数据?
我正在开发一个应用程序,使用API从exchange获取加密货币数据。我能够成功地获取和分析数据(使用TA-LIB计算EMA、MA),但不确定在片段(用户界面)上绘制此数据的最佳方式。这就像在片段上绘制实时加密数据。感谢您的帮助。我的代码如下Android 如何在碎片上绘制加密货币的指数移动平均数据?,android,charts,moving-average,cryptoapi,ohlc,Android,Charts,Moving Average,Cryptoapi,Ohlc,我正在开发一个应用程序,使用API从exchange获取加密货币数据。我能够成功地获取和分析数据(使用TA-LIB计算EMA、MA),但不确定在片段(用户界面)上绘制此数据的最佳方式。这就像在片段上绘制实时加密数据。感谢您的帮助。我的代码如下 import com.binance.api.client.BinanceApiClientFactory; import com.binance.api.client.BinanceApiRestClient; import com.binance.ap
import com.binance.api.client.BinanceApiClientFactory;
import com.binance.api.client.BinanceApiRestClient;
import com.binance.api.client.domain.market.Candlestick;
import com.binance.api.client.domain.market.CandlestickInterval;
import com.tictactec.ta.lib.Core;
import com.tictactec.ta.lib.MInteger;
import java.util.List;
import java.util.Locale;
import java.util.Map;
import java.util.TreeMap;
import java.util.stream.Collectors;
public class GET_EMA
{
private Map<Long, Candlestick> candlesticksCache = new TreeMap<>();
public static final int TOTAL_PERIODS=300;
double[] result_ema=new double[TOTAL_PERIODS];
private static double[] values;
private static final int LOOKBACK = 10;
private static final double EXTRA_VALUE = 100000;
MInteger begin = new MInteger();
MInteger length = new MInteger();
private long m_LastOpenTime=0;
public static void main(String[] pArgs)
{
}
public GET_EMA(){
//Default Constructor
}
public GET_EMA(String symbol,CandlestickInterval interval)
{
Locale.setDefault(Locale.US);
Calculate_EMA(symbol,interval);
}
public String Calculate_EMA(String symbol, CandlestickInterval interval)
{
//Initialize Binance API
BinanceApiClientFactory factory = BinanceApiClientFactory.newInstance();
BinanceApiRestClient client = factory.newRestClient();
//GET Required EMA Value
List<Candlestick> candlestickBars = client.getCandlestickBars(symbol.toUpperCase(), interval, Integer.valueOf(TOTAL_PERIODS), null, null);
List<Double> closingPriceList = candlestickBars.stream().map(c -> Double.valueOf(c.getClose())).collect(Collectors.toList());
// System.out.println("Total Candlesticks : "+candlestickBars.size());
// System.out.println(Arrays.toString(closingPriceList.toArray()));
double values[]=new double[closingPriceList.size()];
for(int i=0;i<closingPriceList.size();i++)
{
values[i]=closingPriceList.get(i);
}
Core talib=new Core();
int emaValue=26;
int pos=TOTAL_PERIODS-emaValue;
talib.ema(0,values.length-1,values,emaValue,begin,length,result_ema);
String ema=String.valueOf(result_ema[pos]);
return ema;
}
}
import com.binance.api.client.BinanceApiClientFactory;
导入com.binance.api.client.BinanceApiRestClient;
导入com.binance.api.client.domain.market.Candlestick;
导入com.binance.api.client.domain.market.candlestickintrval;
导入com.tictactec.ta.lib.Core;
导入com.tictactec.ta.lib.MInteger;
导入java.util.List;
导入java.util.Locale;
导入java.util.Map;
导入java.util.TreeMap;
导入java.util.stream.collector;
公共类获取
{
私有映射candlestickcache=newtreemap();
公共静态最终整数总周期=300;
double[]结果=新的double[总周期];
私有静态双[]值;
私有静态最终int回望=10;
专用静态最终双额外_值=100000;
MInteger begin=新的MInteger();
MInteger长度=新的MInteger();
私有长m_LastOpenTime=0;
公共静态void main(字符串[]pArgs)
{
}
公众获取(EMA){
//默认构造函数
}
公共GET_EMA(字符串符号、烛台间隔)
{
setDefault(Locale.US);
计算_EMA(符号、间隔);
}
公共字符串计算(字符串符号,烛台间隔)
{
//初始化二进制API
BinanceApiClientFactory工厂=BinanceApiClientFactory.newInstance();
BinanceApiRestClient=factory.newRestClient();
//获取所需的EMA值
List candlestickbar=client.getcandlestickbar(symbol.toUpperCase(),interval,Integer.valueOf(TOTAL_PERIODS),null,null);
List-closingpriclist=candlestickbar.stream().map(c->Double.valueOf(c.getClose()).collect(Collectors.toList());
//System.out.println(“总烛台数:+candlestickbar.size());
//System.out.println(Arrays.toString(closingPriceList.toArray());
双精度值[]=新双精度值[closingPriceList.size()];
对于(int i=0;i