diff --git a/fr-plugin-MarketUpdate-1.0/fr-plugin-MarketUpdate-1.0.jar b/fr-plugin-MarketUpdate-1.0/fr-plugin-MarketUpdate-1.0.jar index e8d8afa..a93fbcf 100644 Binary files a/fr-plugin-MarketUpdate-1.0/fr-plugin-MarketUpdate-1.0.jar and b/fr-plugin-MarketUpdate-1.0/fr-plugin-MarketUpdate-1.0.jar differ diff --git a/fr-plugin-MarketUpdate-1.0/plugin.xml b/fr-plugin-MarketUpdate-1.0/plugin.xml index 8bda294..78041fc 100644 --- a/fr-plugin-MarketUpdate-1.0/plugin.xml +++ b/fr-plugin-MarketUpdate-1.0/plugin.xml @@ -11,7 +11,7 @@ [2021-3-6]初始化插件。
]]> - + diff --git a/install/fr-plugin-MarketUpdate-1.0.zip b/install/fr-plugin-MarketUpdate-1.0.zip index a91135b..e34c198 100644 Binary files a/install/fr-plugin-MarketUpdate-1.0.zip and b/install/fr-plugin-MarketUpdate-1.0.zip differ diff --git a/plugin.xml b/plugin.xml index 8bda294..78041fc 100644 --- a/plugin.xml +++ b/plugin.xml @@ -11,7 +11,7 @@ [2021-3-6]初始化插件。
]]> - + diff --git a/src/main/java/com/fr/plugin/market/update/FRExchangeRate.java b/src/com/fr/plugin/market/update/FRExchangeRate.java similarity index 89% rename from src/main/java/com/fr/plugin/market/update/FRExchangeRate.java rename to src/com/fr/plugin/market/update/FRExchangeRate.java index 6659fa9..0b7a6e3 100644 --- a/src/main/java/com/fr/plugin/market/update/FRExchangeRate.java +++ b/src/com/fr/plugin/market/update/FRExchangeRate.java @@ -3,6 +3,7 @@ package com.fr.plugin.market.update; import com.alibaba.fastjson.JSONObject; import com.fr.intelli.record.Focus; import com.fr.intelli.record.Original; +import com.fr.locale.InterProviderFactory; import com.fr.log.FineLoggerFactory; import com.fr.plugin.market.update.FunConstants; import com.fr.record.analyzer.EnableMetrics; @@ -19,6 +20,7 @@ import java.io.IOException; import java.util.HashMap; import java.util.Map; +import com.fr.design.i18n.Toolkit; import static com.fr.plugin.market.update.FunConstants.CurrencyCodeList; @EnableMetrics @@ -33,6 +35,8 @@ public class FRExchangeRate extends AbstractFunction { if (!checkRes.equals(FunConstants.CHECK_PASS)) { return Primitive.ERROR_VALUE + checkRes; } + FineLoggerFactory.getLogger().info("InterProviderFactory.getProvider().getLocText(run):{}", InterProviderFactory.getProvider().getLocText("Fine-Design_Market_Update_Shanghai_Composite")); + String currencyMain = args[0].toString(); String currencyOther = args[1].toString(); float result; diff --git a/src/main/java/com/fr/plugin/market/update/FRFinanceFunction.java b/src/com/fr/plugin/market/update/FRFinanceFunction.java similarity index 100% rename from src/main/java/com/fr/plugin/market/update/FRFinanceFunction.java rename to src/com/fr/plugin/market/update/FRFinanceFunction.java diff --git a/src/main/java/com/fr/plugin/market/update/FRForwardMarket.java b/src/com/fr/plugin/market/update/FRForwardMarket.java similarity index 100% rename from src/main/java/com/fr/plugin/market/update/FRForwardMarket.java rename to src/com/fr/plugin/market/update/FRForwardMarket.java diff --git a/src/main/java/com/fr/plugin/market/update/FRGoldSilver.java b/src/com/fr/plugin/market/update/FRGoldSilver.java similarity index 100% rename from src/main/java/com/fr/plugin/market/update/FRGoldSilver.java rename to src/com/fr/plugin/market/update/FRGoldSilver.java diff --git a/src/main/java/com/fr/plugin/market/update/FRMarketIndex.java b/src/com/fr/plugin/market/update/FRMarketIndex.java similarity index 100% rename from src/main/java/com/fr/plugin/market/update/FRMarketIndex.java rename to src/com/fr/plugin/market/update/FRMarketIndex.java diff --git a/src/main/java/com/fr/plugin/market/update/FRStockMarket.java b/src/com/fr/plugin/market/update/FRStockMarket.java similarity index 100% rename from src/main/java/com/fr/plugin/market/update/FRStockMarket.java rename to src/com/fr/plugin/market/update/FRStockMarket.java diff --git a/src/com/fr/plugin/market/update/FunConstants.java b/src/com/fr/plugin/market/update/FunConstants.java new file mode 100644 index 0000000..a52f921 --- /dev/null +++ b/src/com/fr/plugin/market/update/FunConstants.java @@ -0,0 +1,211 @@ +package com.fr.plugin.market.update; + +import com.fr.locale.InterProviderFactory; +import com.fr.log.FineLoggerFactory; +import com.fr.plugin.PluginLicenseManager; +import com.fr.plugin.context.PluginContexts; +import com.fr.stable.ArrayUtils; +import com.fr.stable.fun.Authorize; +import org.jsoup.Jsoup; +import org.jsoup.nodes.Document; +import java.awt.image.BufferedImage; +import java.io.File; +import java.io.IOException; +import java.util.regex.Pattern; + +import com.fr.design.i18n.Toolkit; + +@Authorize(callSignKey = FunConstants.PLUGIN_ID) +public class FunConstants { + static final String PLUGIN_ID = "com.fr.plugin.market.update"; + static final String AUTHOR_ERROR =InterProviderFactory.getProvider().getLocText("Fine-Design_Market_Update_AUTHOR_ERROR"); + static final String CHECK_PASS = InterProviderFactory.getProvider().getLocText("Fine-Design_Market_Update_CHECK_PASS"); + static final String ARGS_ERROR= InterProviderFactory.getProvider().getLocText("Fine-Design_Market_Update_ArgsCountError"); + + //外汇 + static final String[] CurrencyCodeList = new String[]{ + "USD", "AED", "AFN", "ALL", "AMD", "ANG", "AOA", "ARS", "AUD", "AWG", "AZN", "BAM", "BBD", "BDT", "BGN", "BHD", "BIF", "BMD", "BND", "BOB", "BRL", "BSD", "BTN", "BWP", "BYN", "BZD", "CAD", "CDF", "CHF", "CLP", "CNY", "COP", "CRC", "CUC", "CUP", "CVE", "CZK", "DJF", "DKK", "DOP", "DZD", "EGP", "ERN", "ETB", "EUR", "FJD", "FKP", "FOK", "GBP", "GEL", "GGP", "GHS", "GIP", "GMD", "GNF", "GTQ", "GYD", "HKD", "HNL", "HRK", "HTG", "HUF", "IDR", "ILS", "IMP", "INR", "IQD", "IRR", "ISK", "JMD", "JOD", "JPY", "KES", "KGS", "KHR", "KID", "KMF", "KRW", "KWD", "KYD", "KZT", "LAK", "LBP", "LKR", "LRD", "LSL", "LYD", "MAD", "MDL", "MGA", "MKD", "MMK", "MNT", "MOP", "MRU", "MUR", "MVR", "MWK", "MXN", "MYR", "MZN", "NAD", "NGN", "NIO", "NOK", "NPR", "NZD", "OMR", "PAB", "PEN", "PGK", "PHP", "PKR", "PLN", "PYG", "QAR", "RON", "RSD", "RUB", "RWF", "SAR", "SBD", "SCR", "SDG", "SEK", "SGD", "SHP", "SLL", "SOS", "SRD", "SSP", "STN", "SYP", "SZL", "THB", "TJS", "TMT", "TND", "TOP", "TRY", "TTD", "TVD", "TWD", "TZS", "UAH", "UGX", "UYU", "UZS", "VES", "VND", "VUV", "WST", "XAF", "XCD", "XDR", "XOF", "XPF", "YER", "ZAR", "ZMW" + }; + + //股市 + static final String[] StockArgs={ +// "股票名字","今日开盘价","昨日收盘价","当前价格","今日最高价","今日最低价","竞买价","竞卖价","成交股票数","成交金额", + InterProviderFactory.getProvider().getLocText("Fine-Design_Market_Update_Stock_Name"), + InterProviderFactory.getProvider().getLocText("Fine-Design_Market_Update_Begin_Price"), + InterProviderFactory.getProvider().getLocText("Fine-Design_Market_Update_End_Price"), + InterProviderFactory.getProvider().getLocText("Fine-Design_Market_Update_Now_Price"), + InterProviderFactory.getProvider().getLocText("Fine-Design_Market_Update_High_Price"), + InterProviderFactory.getProvider().getLocText("Fine-Design_Market_Update_Low_Price"), + InterProviderFactory.getProvider().getLocText("Fine-Design_Market_Update_Bid_Price"), + InterProviderFactory.getProvider().getLocText("Fine-Design_Market_Update_Auction_Price"), + InterProviderFactory.getProvider().getLocText("Fine-Design_Market_Update_Trade_Volume"), + InterProviderFactory.getProvider().getLocText("Fine-Design_Market_Update_Trade_Amount"), +// "买一手数","买一报价","买二手数","买二报价","买三手数","买三报价","买四手数","买四报价","买五手数","买五报价", + InterProviderFactory.getProvider().getLocText("Fine-Design_Market_Update_Buy_1_Number"), + InterProviderFactory.getProvider().getLocText("Fine-Design_Market_Update_Buy_1_Price"), + InterProviderFactory.getProvider().getLocText("Fine-Design_Market_Update_Buy_2_Number"), + InterProviderFactory.getProvider().getLocText("Fine-Design_Market_Update_Buy_2_Price"), + InterProviderFactory.getProvider().getLocText("Fine-Design_Market_Update_Buy_3_Number"), + InterProviderFactory.getProvider().getLocText("Fine-Design_Market_Update_Buy_3_Price"), + InterProviderFactory.getProvider().getLocText("Fine-Design_Market_Update_Buy_4_Number"), + InterProviderFactory.getProvider().getLocText("Fine-Design_Market_Update_Buy_4_Price"), + InterProviderFactory.getProvider().getLocText("Fine-Design_Market_Update_Buy_5_Number"), + InterProviderFactory.getProvider().getLocText("Fine-Design_Market_Update_Buy_5_Price"), +// "卖一手数","卖一报价","卖二手数","卖二报价","卖三手数","卖三报价","卖四手数","卖四报价","卖五手数","卖五报价", + InterProviderFactory.getProvider().getLocText("Fine-Design_Market_Update_Sell_1_Number"), + InterProviderFactory.getProvider().getLocText("Fine-Design_Market_Update_Sell_1_Price"), + InterProviderFactory.getProvider().getLocText("Fine-Design_Market_Update_Sell_2_Number"), + InterProviderFactory.getProvider().getLocText("Fine-Design_Market_Update_Sell_2_Price"), + InterProviderFactory.getProvider().getLocText("Fine-Design_Market_Update_Sell_3_Number"), + InterProviderFactory.getProvider().getLocText("Fine-Design_Market_Update_Sell_3_Price"), + InterProviderFactory.getProvider().getLocText("Fine-Design_Market_Update_Sell_4_Number"), + InterProviderFactory.getProvider().getLocText("Fine-Design_Market_Update_Sell_4_Price"), + InterProviderFactory.getProvider().getLocText("Fine-Design_Market_Update_Sell_5_Number"), + InterProviderFactory.getProvider().getLocText("Fine-Design_Market_Update_Sell_5_Price"), +// "日期","时间" + InterProviderFactory.getProvider().getLocText("Fine-Design_Market_Update_Stock_Date"), + InterProviderFactory.getProvider().getLocText("Fine-Design_Market_Update_Stock_Time"), + }; + static final String[] StockCity={ +// "上海","深圳", + InterProviderFactory.getProvider().getLocText("Fine-Design_Market_Update_Shang_Hai"), InterProviderFactory.getProvider().getLocText("Fine-Design_Market_Update_Shen_Zhen") + }; + + //金银 + static final String[] GoldType={ +// "伦敦金","伦敦银","COMEX黄金","COMEX白银","黄金T+D","白银T+D" + InterProviderFactory.getProvider().getLocText("Fine-Design_Market_Update_British_Gold"), + InterProviderFactory.getProvider().getLocText("Fine-Design_Market_Update_British_Silver"), + InterProviderFactory.getProvider().getLocText("Fine-Design_Market_Update_COMEX_Gold"), + InterProviderFactory.getProvider().getLocText("Fine-Design_Market_Update_COMEX_Silver"), + InterProviderFactory.getProvider().getLocText("Fine-Design_Market_Update_Gold_TD"), + InterProviderFactory.getProvider().getLocText("Fine-Design_Market_Update_Silver_TD"), + }; + static final String[] GoldName={ +// "最新价","涨跌","涨跌幅","最高价","最低价","今开价","昨收价" + InterProviderFactory.getProvider().getLocText("Fine-Design_Market_Update_New_Price"), + InterProviderFactory.getProvider().getLocText("Fine-Design_Market_Update_Rise_Fall"), + InterProviderFactory.getProvider().getLocText("Fine-Design_Market_Update_Rise_Fall_Amount"), + InterProviderFactory.getProvider().getLocText("Fine-Design_Market_Update_High_Price1"), + InterProviderFactory.getProvider().getLocText("Fine-Design_Market_Update_Low_Price1"), + InterProviderFactory.getProvider().getLocText("Fine-Design_Market_Update_Begin_Price1"), + InterProviderFactory.getProvider().getLocText("Fine-Design_Market_Update_End_Price1"), + }; + + //期货 + static final String[] ForwardType={ +// "WTI原油","伦敦布伦特原油","黄金","白银","天然气","铜","美国大豆" + InterProviderFactory.getProvider().getLocText("Fine-Design_Market_Update_Crude_Oil"), + InterProviderFactory.getProvider().getLocText("Fine-Design_Market_Update_Brent_Oil"), + InterProviderFactory.getProvider().getLocText("Fine-Design_Market_Update_Gold"), + InterProviderFactory.getProvider().getLocText("Fine-Design_Market_Update_Silver"), + InterProviderFactory.getProvider().getLocText("Fine-Design_Market_Update_Natural_Gas"), + InterProviderFactory.getProvider().getLocText("Fine-Design_Market_Update_Copper"), + InterProviderFactory.getProvider().getLocText("Fine-Design_Market_Update_Us_Soybeans"), + }; + static final String[] ForwardURL={ + "crude-oil","brent-oil","gold","silver","natural-gas","copper","us-soybeans" + }; + static final String[] ForwardAndIndexArgs={ +// "最新","昨收","开盘","最低","最高" + InterProviderFactory.getProvider().getLocText("Fine-Design_Market_Update_Forward_New_Price"), + InterProviderFactory.getProvider().getLocText("Fine-Design_Market_Update_Forward_End_Price"), + InterProviderFactory.getProvider().getLocText("Fine-Design_Market_Update_Forward_Begin_Price"), + InterProviderFactory.getProvider().getLocText("Fine-Design_Market_Update_Forward_Low_Price"), + InterProviderFactory.getProvider().getLocText("Fine-Design_Market_Update_Forward_High_Price"), + }; + + //指数 + static final String[] IndexType={ +// "上证指数","富时中国A50指数","恒生指数","日经225","道琼斯30(F)","美国标普500(F)","美元指数期货" + InterProviderFactory.getProvider().getLocText("Fine-Design_Market_Update_Shanghai_Composite"), + InterProviderFactory.getProvider().getLocText("Fine-Design_Market_Update_Ftse_China_A50"), + InterProviderFactory.getProvider().getLocText("Fine-Design_Market_Update_Hang_Sen"), + InterProviderFactory.getProvider().getLocText("Fine-Design_Market_Update_Japan_Ni225"), + InterProviderFactory.getProvider().getLocText("Fine-Design_Market_Update_US_30-Futures"), + InterProviderFactory.getProvider().getLocText("Fine-Design_Market_Update_US_Spx_500_futures"), + InterProviderFactory.getProvider().getLocText("Fine-Design_Market_Update_US_Dollar_Index"), + }; + static final String[] IndexURL={ + "shanghai-composite","ftse-china-a50","hang-sen-40","japan-ni225","us-30-futures","us-spx-500-futures","us-dollar-index" + }; + + + static final boolean author() { + return PluginLicenseManager.getInstance().getPluginLicenseByID(PLUGIN_ID).isAvailable(); + } + + static final boolean CheckStockCode(String code){ + final String regExp="^002[\\d]{3}|000[\\d]{3}|300[\\d]{3}|600[\\d]{3}|60[\\d]{4}$ "; + final boolean isMatched = Pattern.compile(regExp).matcher(code).matches(); + return isMatched; + } + + static final String CheckArgs(Object[] args, int num) { + String res = FunConstants.CHECK_PASS; + int len = ArrayUtils.getLength(args); + if (len != num) { + return "Fine-Design_FRFinanceFunction_ArgsCountError"; + } + return res; + } + static final String GetGoldData(String goldType ,String goldArgs) throws IOException { + if(!ArrayUtils.contains(GoldType,goldType)||!ArrayUtils.contains(GoldName,goldArgs)){ + return ARGS_ERROR; + } + + final String GOLD_URI = "http://www.dyhjw.com/guojijin.html"; + final String CLASS_NAME="gold_price_data"; + final String CSS_QUERY_NAME="[code='XAU']"; + Document doc = Jsoup.connect(GOLD_URI).ignoreContentType(true).get(); + String r=doc.getElementsByClass(CLASS_NAME).first().select(CSS_QUERY_NAME).first().text(); + String[] goldData=r.split(" "); + final int goldArgsIndex = ArrayUtils.indexOf(GoldName, goldArgs)+1; + return goldData[goldArgsIndex]; + + } + static final String GetForwardData(String forwardType ,String forwardArgs) throws IOException { + if(!ArrayUtils.contains(ForwardType,forwardType)||!ArrayUtils.contains(ForwardAndIndexArgs,forwardArgs)){ + return ARGS_ERROR; + } + + final int i = ArrayUtils.indexOf(ForwardType, forwardType); + final String CHINA_BANK_URI = "https://cn.investing.com/commodities/"+ForwardURL[i]; + String agent="Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/89.0.4389.90 Safari/537.36 Edg/89.0.774.54"; + Document doc = Jsoup.connect(CHINA_BANK_URI).ignoreContentType(true).userAgent(agent).get(); + if(ForwardAndIndexArgs[0].equals(forwardArgs)){ + return doc.getElementById("last_last").text(); + } + + final String ELEMENT_ID="quotes_summary_secondary_data"; + final String CSS_QUERY="[ dir=\"ltr\"]"; + final String summaryData = doc.getElementById(ELEMENT_ID).select(CSS_QUERY).text().replaceAll("- ",""); + final String[] split = summaryData.split(" "); + final int argsIndex = ArrayUtils.indexOf(ForwardAndIndexArgs, forwardArgs); + return split[argsIndex-1]; + + } + static final String GetIndexData(String indexType ,String indexdArgs) throws IOException { + FineLoggerFactory.getLogger().info("InterProviderFactory.getProvider().getLocText(\"Fine-Design_Market_Update_Shanghai_Composite\"):{}",InterProviderFactory.getProvider().getLocText("Fine-Design_Market_Update_Shanghai_Composite")); + FineLoggerFactory.getLogger().info("IndexType[0]:{}",IndexType[0]); + FineLoggerFactory.getLogger().info("ForwardAndIndexArgs[0]:{}",ForwardAndIndexArgs[0]); + if(!ArrayUtils.contains(IndexType,indexType)||!ArrayUtils.contains(ForwardAndIndexArgs,indexdArgs)){ + return ARGS_ERROR; + } + + final int i = ArrayUtils.indexOf(IndexType, indexType); + final String CHINA_BANK_URI = "https://cn.investing.com/indices/"+IndexURL[i]; + String agent="Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/89.0.4389.90 Safari/537.36 Edg/89.0.774.54"; + Document doc = Jsoup.connect(CHINA_BANK_URI).ignoreContentType(true).userAgent(agent).get(); + + if(ForwardAndIndexArgs[0].equals(indexdArgs)){ + return doc.getElementById("last_last").text(); + } + + final String summaryData = doc.getElementById("quotes_summary_secondary_data").select("[ dir=\"ltr\"]").text().replaceAll("- ",""); + final String[] split = summaryData.split(" "); + final int argsIndex = ArrayUtils.indexOf(ForwardAndIndexArgs, indexdArgs); + return split[argsIndex-1]; + + } +} diff --git a/src/com/fr/plugin/market/update/FunLocaleFinder.java b/src/com/fr/plugin/market/update/FunLocaleFinder.java new file mode 100644 index 0000000..a7d78b9 --- /dev/null +++ b/src/com/fr/plugin/market/update/FunLocaleFinder.java @@ -0,0 +1,17 @@ +package com.fr.plugin.market.update; + +import com.fr.intelli.record.Focus; +import com.fr.intelli.record.Original; +import com.fr.plugin.transform.FunctionRecorder; +import com.fr.record.analyzer.EnableMetrics; +import com.fr.stable.fun.impl.AbstractLocaleFinder; + +@FunctionRecorder +@EnableMetrics +public class FunLocaleFinder extends AbstractLocaleFinder { + @Override + @Focus(id = FunConstants.PLUGIN_ID, text = "Plugin-Test_Function_FRExchangeRate", source = Original.PLUGIN) + public String find() { + return "com/fr/plugin/market/update/local/marketUpdate"; + } +} diff --git a/src/main/java/com/fr/plugin/market/update/TestFun.java b/src/com/fr/plugin/market/update/TestFun.java similarity index 80% rename from src/main/java/com/fr/plugin/market/update/TestFun.java rename to src/com/fr/plugin/market/update/TestFun.java index 01acf5b..1aaea40 100644 --- a/src/main/java/com/fr/plugin/market/update/TestFun.java +++ b/src/com/fr/plugin/market/update/TestFun.java @@ -1,20 +1,13 @@ package com.fr.plugin.market.update; -import com.alibaba.fastjson.JSONObject; import com.fr.log.FineLoggerFactory; -import com.fr.plugin.market.update.FunConstants; import com.fr.stable.ArrayUtils; import org.jsoup.Jsoup; import org.jsoup.nodes.Document; -import org.jsoup.nodes.Element; -import org.jsoup.select.Elements; -import java.io.ByteArrayOutputStream; -import java.io.InputStream; -import java.net.URL; -import java.util.HashMap; -import java.util.Map; -import java.util.regex.Pattern; +import java.util.ResourceBundle; + +import static com.fr.design.i18n.Toolkit.i18nText; public class TestFun { public static void main(String args[]) throws Exception { @@ -38,9 +31,9 @@ public class TestFun { // System.out.println(s); final String CHINA_BANK_URI = "https://cn.investing.com/currencies/us-dollar-index"; -// if((!ArrayUtils.contains(FunConstants.CurrencyCodeList,"USD"))||(!ArrayUtils.contains(FunConstants.CurrencyCodeList,"USD"))){ -// System.out.printf("00"); -// } + if((!ArrayUtils.contains(FunConstants.IndexType,"上证指数"))){ + System.out.printf("00"); + } Document doc = Jsoup.connect(CHINA_BANK_URI).ignoreContentType(true).userAgent("Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/89.0.4389.90 Safari/537.36 Edg/89.0.774.54").get(); // final String body = doc.getElementsByTag("body").first().text(); @@ -53,7 +46,10 @@ public class TestFun { // final boolean isMatched = Pattern.compile(regExp).matcher("600928").matches(); // String r=doc.getElementsByClass("gold_price_data").first().select("[code='XAU']").first().text(); // String[] ra=r.split(" "); - + ResourceBundle resourceBundle = ResourceBundle.getBundle("marketUpdate"); + final String string = resourceBundle.getString("Plugin.Function.Market_Update_AUTHOR_ERROR"); + FineLoggerFactory.getLogger().info(string); + FineLoggerFactory.getLogger().info(i18nText("Plugin.Function.Market_Update_AUTHOR_ERROR")); FineLoggerFactory.getLogger().info(doc.getElementById("last_last").text()); FineLoggerFactory.getLogger().info(doc.getElementById("quotes_summary_secondary_data").select("[ dir=\"ltr\"]").text().replaceAll("- ","")); } diff --git a/src/main/resources/com/fr/com.fr.plugin.market.update/marketUpdate.properties b/src/com/fr/plugin/market/update/local/marketUpdate.properties similarity index 75% rename from src/main/resources/com/fr/com.fr.plugin.market.update/marketUpdate.properties rename to src/com/fr/plugin/market/update/local/marketUpdate.properties index 7976ac5..f9624b3 100644 --- a/src/main/resources/com/fr/com.fr.plugin.market.update/marketUpdate.properties +++ b/src/com/fr/plugin/market/update/local/marketUpdate.properties @@ -1,4 +1,3 @@ -Plugin.Function.Market_Update_ID=com.fr.plugin.market.update Plugin.Function.Market_Update_AUTHOR_ERROR=Error:authorization is expired Plugin.Function.Market_Update_CHECK_PASS=checkPass Plugin.Function.Market_Update_ArgsCountError=Args Count Error! diff --git a/src/com/fr/plugin/market/update/local/marketUpdate_zh_CN.properties b/src/com/fr/plugin/market/update/local/marketUpdate_zh_CN.properties new file mode 100644 index 0000000..5b4e8fb --- /dev/null +++ b/src/com/fr/plugin/market/update/local/marketUpdate_zh_CN.properties @@ -0,0 +1,66 @@ +Fine-Design_Market_Update_Shang_Hai=\u4e0a\u6d77 +Fine-Design_Market_Update_Shen_Zhen=\u6df1\u5733 +Fine-Design_Market_Update_Stock_Name=\u80a1\u7968\u540d\u5b57 +Fine-Design_Market_Update_Begin_Price=\u4eca\u65e5\u5f00\u76d8\u4ef7 +Fine-Design_Market_Update_End_Price=\u6628\u65e5\u6536\u76d8\u4ef7 +Fine-Design_Market_Update_Now_Price=\u5f53\u524d\u4ef7\u683c +Fine-Design_Market_Update_High_Price=\u4eca\u65e5\u6700\u9ad8\u4ef7 +Fine-Design_Market_Update_Low_Price=\u4eca\u65e5\u6700\u4f4e\u4ef7 +Fine-Design_Market_Update_Bid_Price=\u7ade\u4e70\u4ef7 +Fine-Design_Market_Update_Auction_Price=\u7ade\u5356\u4ef7 +Fine-Design_Market_Update_Trade_Volume=\u6210\u4ea4\u80a1\u7968\u6570 +Fine-Design_Market_Update_Trade_Amount=\u6210\u4ea4\u91d1\u989d +Fine-Design_Market_Update_Buy_1_Number=\u4e70\u4e00\u624b\u6570 +Fine-Design_Market_Update_Buy_2_Number=\u4e70\u4e8c\u624b\u6570 +Fine-Design_Market_Update_Buy_3_Number=\u4e70\u4e09\u624b\u6570 +Fine-Design_Market_Update_Buy_4_Number=\u4e70\u56db\u624b\u6570 +Fine-Design_Market_Update_Buy_5_Number=\u4e70\u4e94\u624b\u6570 +Fine-Design_Market_Update_Buy_1_Price=\u4e70\u4e00\u62a5\u4ef7 +Fine-Design_Market_Update_Buy_2_Price=\u4e70\u4e8c\u62a5\u4ef7 +Fine-Design_Market_Update_Buy_3_Price=\u4e70\u4e09\u62a5\u4ef7 +Fine-Design_Market_Update_Buy_4_Price=\u4e70\u56db\u62a5\u4ef7 +Fine-Design_Market_Update_Buy_5_Price=\u4e70\u4e94\u62a5\u4ef7 +Fine-Design_Market_Update_Sell_1_Number=\u5356\u4e00\u624b\u6570 +Fine-Design_Market_Update_Sell_1_Price=\u5356\u4e00\u62a5\u4ef7 +Fine-Design_Market_Update_Sell_2_Number=\u5356\u4e8c\u624b\u6570 +Fine-Design_Market_Update_Sell_2_Price=\u5356\u4e8c\u62a5\u4ef7 +Fine-Design_Market_Update_Sell_3_Number=\u5356\u4e09\u624b\u6570 +Fine-Design_Market_Update_Sell_3_Price=\u5356\u4e09\u62a5\u4ef7 +Fine-Design_Market_Update_Sell_4_Number=\u5356\u56db\u624b\u6570 +Fine-Design_Market_Update_Sell_4_Price=\u5356\u56db\u62a5\u4ef7 +Fine-Design_Market_Update_Sell_5_Number=\u5356\u4e94\u624b\u6570 +Fine-Design_Market_Update_Sell_5_Price=\u5356\u4e94\u62a5\u4ef7 +Fine-Design_Market_Update_Stock_Date=\u65e5\u671f +Fine-Design_Market_Update_Stock_Time=\u65f6\u95f4 +Fine-Design_Market_Update_New_Price=\u6700\u65b0\u4ef7 +Fine-Design_Market_Update_Rise_Fall=\u6da8\u8dcc +Fine-Design_Market_Update_Rise_Fall_Amount=\u6da8\u8dcc\u5e45 +Fine-Design_Market_Update_High_Price1=\u6700\u9ad8\u4ef7 +Fine-Design_Market_Update_Low_Price1=\u6700\u4f4e\u4ef7 +Fine-Design_Market_Update_Begin_Price1=\u4eca\u5f00\u4ef7 +Fine-Design_Market_Update_End_Price1=\u6628\u6536\u4ef7 +Fine-Design_Market_Update_Crude_Oil=\u0057\u0054\u0049\u539f\u6cb9 +Fine-Design_Market_Update_Brent_Oil=\u4f26\u6566\u5e03\u4f26\u7279\u539f\u6cb9 +Fine-Design_Market_Update_Gold=\u9ec4\u91d1 +Fine-Design_Market_Update_Silver=\u767d\u94f6 +Fine-Design_Market_Update_Natural_Gas=\u5929\u7136\u6c14 +Fine-Design_Market_Update_Copper=\u94dc +Fine-Design_Market_Update_Us_Soybeans=\u7f8e\u56fd\u5927\u8c46 +Fine-Design_Market_Update_Forward_New_Price=\u6700\u65b0 +Fine-Design_Market_Update_Forward_End_Price=\u6628\u6536 +Fine-Design_Market_Update_Forward_Begin_Price=\u5f00\u76d8 +Fine-Design_Market_Update_Forward_Low_Price=\u6700\u4f4e +Fine-Design_Market_Update_Forward_High_Price=\u6700\u9ad8 +Fine-Design_Market_Update_Shanghai_Composite=\u4e0a\u8bc1\u6307\u6570 +Fine-Design_Market_Update_Ftse_China_A50=\u5bcc\u65f6\u4e2d\u56fd\u0041\u0035\u0030\u6307\u6570 +Fine-Design_Market_Update_Hang_Sen=\u6052\u751f\u6307\u6570 +Fine-Design_Market_Update_Japan_Ni225=\u65e5\u7ecf\u0032\u0032\u0035 +Fine-Design_Market_Update_US_30-Futures=\u9053\u743c\u65af\u0033\u0030\u0028\u0046\u0029 +Fine-Design_Market_Update_US_Spx_500_futures=\u7f8e\u56fd\u6807\u666e\u0035\u0030\u0030\u0028\u0046\u0029 +Fine-Design_Market_Update_US_Dollar_Index=\u7f8e\u5143\u6307\u6570\u671f\u8d27 +Fine-Design_Market_Update_British_Gold=\u4f26\u6566\u91d1 +Fine-Design_Market_Update_British_Silver=\u4f26\u6566\u94f6 +Fine-Design_Market_Update_COMEX_Gold=\u0043\u004f\u004d\u0045\u0058\u9ec4\u91d1 +Fine-Design_Market_Update_COMEX_Silver=\u0043\u004f\u004d\u0045\u0058\u767d\u94f6 +Fine-Design_Market_Update_Gold_TD=\u9ec4\u91d1\u0054\u002b\u0044 +Fine-Design_Market_Update_Silver_TD=\u767d\u94f6\u0054\u002b\u0044 \ No newline at end of file diff --git a/src/com/fr/plugin/market/update/resources/menuIcon.png b/src/com/fr/plugin/market/update/resources/menuIcon.png new file mode 100644 index 0000000..651aaba Binary files /dev/null and b/src/com/fr/plugin/market/update/resources/menuIcon.png differ diff --git a/src/main/java/com/fr/plugin/market/update/FunConstants.java b/src/main/java/com/fr/plugin/market/update/FunConstants.java deleted file mode 100644 index 585bb0a..0000000 --- a/src/main/java/com/fr/plugin/market/update/FunConstants.java +++ /dev/null @@ -1,202 +0,0 @@ -package com.fr.plugin.market.update; - -import com.fr.log.FineLoggerFactory; -import com.fr.plugin.PluginLicenseManager; -import com.fr.plugin.context.PluginContexts; -import com.fr.stable.ArrayUtils; -import com.fr.stable.fun.Authorize; -import org.jsoup.Jsoup; -import org.jsoup.nodes.Document; -import java.awt.image.BufferedImage; -import java.io.File; -import java.io.IOException; -import java.util.regex.Pattern; - -import static com.fr.design.i18n.Toolkit.i18nText; - -@Authorize(callSignKey = FunConstants.PLUGIN_ID) -public class FunConstants { - static final String PLUGIN_ID = "com.fr.plugin.market.update"; - static final String AUTHOR_ERROR =i18nText("Plugin.Function.Market_Update_AUTHOR_ERROR"); - static final String CHECK_PASS = i18nText("Plugin.Function.Market_Update_CHECK_PASS"); - static final String ARGS_ERROR= i18nText("Plugin.Function.Market_Update_ArgsCountError"); - - //外汇 - static final String[] CurrencyCodeList = new String[]{ - "USD", "AED", "AFN", "ALL", "AMD", "ANG", "AOA", "ARS", "AUD", "AWG", "AZN", "BAM", "BBD", "BDT", "BGN", "BHD", "BIF", "BMD", "BND", "BOB", "BRL", "BSD", "BTN", "BWP", "BYN", "BZD", "CAD", "CDF", "CHF", "CLP", "CNY", "COP", "CRC", "CUC", "CUP", "CVE", "CZK", "DJF", "DKK", "DOP", "DZD", "EGP", "ERN", "ETB", "EUR", "FJD", "FKP", "FOK", "GBP", "GEL", "GGP", "GHS", "GIP", "GMD", "GNF", "GTQ", "GYD", "HKD", "HNL", "HRK", "HTG", "HUF", "IDR", "ILS", "IMP", "INR", "IQD", "IRR", "ISK", "JMD", "JOD", "JPY", "KES", "KGS", "KHR", "KID", "KMF", "KRW", "KWD", "KYD", "KZT", "LAK", "LBP", "LKR", "LRD", "LSL", "LYD", "MAD", "MDL", "MGA", "MKD", "MMK", "MNT", "MOP", "MRU", "MUR", "MVR", "MWK", "MXN", "MYR", "MZN", "NAD", "NGN", "NIO", "NOK", "NPR", "NZD", "OMR", "PAB", "PEN", "PGK", "PHP", "PKR", "PLN", "PYG", "QAR", "RON", "RSD", "RUB", "RWF", "SAR", "SBD", "SCR", "SDG", "SEK", "SGD", "SHP", "SLL", "SOS", "SRD", "SSP", "STN", "SYP", "SZL", "THB", "TJS", "TMT", "TND", "TOP", "TRY", "TTD", "TVD", "TWD", "TZS", "UAH", "UGX", "UYU", "UZS", "VES", "VND", "VUV", "WST", "XAF", "XCD", "XDR", "XOF", "XPF", "YER", "ZAR", "ZMW" - }; - - //股市 - static final String[] StockArgs={ - "股票名字","今日开盘价","昨日收盘价","当前价格","今日最高价","今日最低价","竞买价","竞卖价","成交股票数","成交金额", -// i18nText("Plugin.Function.Market_Update_Stock_Name"), -// i18nText("Plugin.Function.Market_Update_Begin_Price"), -// i18nText("Plugin.Function.Market_Update_End_Price"), -// i18nText("Plugin.Function.Market_Update_Now_Price"), -// i18nText("Plugin.Function.Market_Update_High_Price"), -// i18nText("Plugin.Function.Market_Update_Low_Price"), -// i18nText("Plugin.Function.Market_Update_Bid_Price"), -// i18nText("Plugin.Function.Market_Update_Auction_Price"), -// i18nText("Plugin.Function.Market_Update_Trade_Volume"), -// i18nText("Plugin.Function.Market_Update_Trade_Amount"), - "买一手数","买一报价","买二手数","买二报价","买三手数","买三报价","买四手数","买四报价","买五手数","买五报价", -// i18nText("Plugin.Function.Market_Update_Buy_1_Number"), -// i18nText("Plugin.Function.Market_Update_Buy_1_Price"), -// i18nText("Plugin.Function.Market_Update_Buy_2_Number"), -// i18nText("Plugin.Function.Market_Update_Buy_2_Price"), -// i18nText("Plugin.Function.Market_Update_Buy_3_Number"), -// i18nText("Plugin.Function.Market_Update_Buy_3_Price"), -// i18nText("Plugin.Function.Market_Update_Buy_4_Number"), -// i18nText("Plugin.Function.Market_Update_Buy_4_Price"), -// i18nText("Plugin.Function.Market_Update_Buy_5_Number"), -// i18nText("Plugin.Function.Market_Update_Buy_5_Price"), - "卖一手数","卖一报价","卖二手数","卖二报价","卖三手数","卖三报价","卖四手数","卖四报价","卖五手数","卖五报价", -// i18nText("Plugin.Function.Market_Update_Sell_1_Number"), -// i18nText("Plugin.Function.Market_Update_Sell_1_Price"), -// i18nText("Plugin.Function.Market_Update_Sell_2_Number"), -// i18nText("Plugin.Function.Market_Update_Sell_2_Price"), -// i18nText("Plugin.Function.Market_Update_Sell_3_Number"), -// i18nText("Plugin.Function.Market_Update_Sell_3_Price"), -// i18nText("Plugin.Function.Market_Update_Sell_4_Number"), -// i18nText("Plugin.Function.Market_Update_Sell_4_Price"), -// i18nText("Plugin.Function.Market_Update_Sell_5_Number"), -// i18nText("Plugin.Function.Market_Update_Sell_5_Price"), - "日期","时间" -// i18nText("Plugin.Function.Market_Update_Stock_Date"), -// i18nText("Plugin.Function.Market_Update_Stock_Time"), - }; - static final String[] StockCity={ - "上海","深圳", -// i18nText("Plugin.Function.Market_Update_Shang_Hai"), i18nText("Plugin.Function.Market_Update_Shen_Zhen") - }; - - //金银 - static final String[] GoldType={ - "伦敦金","伦敦银","COMEX黄金","COMEX白银","黄金T+D","白银T+D" - }; - static final String[] GoldName={ - "最新价","涨跌","涨跌幅","最高价","最低价","今开价","昨收价" -// i18nText("Plugin.Function.Market_Update_New_Price"), -// i18nText("Plugin.Function.Market_Update_Rise_Fall"), -// i18nText("Plugin.Function.Market_Update_Rise_Fall_Amount"), -// i18nText("Plugin.Function.Market_Update_High_Price1"), -// i18nText("Plugin.Function.Market_Update_Low_Price1"), -// i18nText("Plugin.Function.Market_Update_Begin_Price1"), -// i18nText("Plugin.Function.Market_Update_End_Price1"), - }; - - //期货 - static final String[] ForwardType={ - "WTI原油","伦敦布伦特原油","黄金","白银","天然气","铜","美国大豆" -// i18nText("Plugin.Function.Market_Update_Crude_Oil"), -// i18nText("Plugin.Function.Market_Update_Brent_Oil"), -// i18nText("Plugin.Function.Market_Update_Gold"), -// i18nText("Plugin.Function.Market_Update_Silver"), -// i18nText("Plugin.Function.Market_Update_Natural_Gas"), -// i18nText("Plugin.Function.Market_Update_Copper"), -// i18nText("Plugin.Function.Market_Update_Us_Soybeans"), - }; - static final String[] ForwardURL={ - "crude-oil","brent-oil","gold","silver","natural-gas","copper","us-soybeans" - }; - static final String[] ForwardAndIndexArgs={ - "最新","昨收","开盘","最低","最高" -// i18nText("Plugin.Function.Market_Update_Forward_New_Price"), -// i18nText("Plugin.Function.Market_Update_Forward_End_Price"), -// i18nText("Plugin.Function.Market_Update_Forward_Begin_Price"), -// i18nText("Plugin.Function.Market_Update_Forward_Low_Price"), -// i18nText("Plugin.Function.Market_Update_Forward_High_Price"), - }; - - //指数 - static final String[] IndexType={ - "上证指数","富时中国A50指数","恒生指数","日经225","道琼斯30(F)","美国标普500(F)","美元指数期货" -// i18nText("Plugin.Function.Market_Update_Shanghai_Composite"), -// i18nText("Plugin.Function.Market_Update_Ftse_China_A50"), -// i18nText("Plugin.Function.Market_Update_Hang_Sen"), -// i18nText("Plugin.Function.Market_Update_Japan_Ni225"), -// i18nText("Plugin.Function.Market_Update_US_30-Futures"), -// i18nText("Plugin.Function.Market_Update_US_Spx_500_futures"), -// i18nText("Plugin.Function.Market_Update_US_Dollar_Index"), - }; - static final String[] IndexURL={ - "shanghai-composite","ftse-china-a50","hang-sen-40","japan-ni225","us-30-futures","us-spx-500-futures","us-dollar-index" - }; - - - static final boolean author() { - return PluginLicenseManager.getInstance().getPluginLicenseByID(PLUGIN_ID).isAvailable(); - } - - static final boolean CheckStockCode(String code){ - final String regExp="^002[\\d]{3}|000[\\d]{3}|300[\\d]{3}|600[\\d]{3}|60[\\d]{4}$ "; - final boolean isMatched = Pattern.compile(regExp).matcher(code).matches(); - return isMatched; - } - - static final String CheckArgs(Object[] args, int num) { - String res = FunConstants.CHECK_PASS; - int len = ArrayUtils.getLength(args); - if (len != num) { - return "Plugin.Function.FRFinanceFunction_ArgsCountError"; - } - return res; - } - static final String GetGoldData(String goldType ,String goldArgs) throws IOException { - if(!ArrayUtils.contains(GoldType,goldType)||!ArrayUtils.contains(GoldName,goldArgs)){ - return ARGS_ERROR; - } - - final String GOLD_URI = "http://www.dyhjw.com/guojijin.html"; - final String CLASS_NAME="gold_price_data"; - final String CSS_QUERY_NAME="[code='XAU']"; - Document doc = Jsoup.connect(GOLD_URI).ignoreContentType(true).get(); - String r=doc.getElementsByClass(CLASS_NAME).first().select(CSS_QUERY_NAME).first().text(); - String[] goldData=r.split(" "); - final int goldArgsIndex = ArrayUtils.indexOf(GoldName, goldArgs)+1; - return goldData[goldArgsIndex]; - - } - static final String GetForwardData(String forwardType ,String forwardArgs) throws IOException { - if(!ArrayUtils.contains(ForwardType,forwardType)||!ArrayUtils.contains(ForwardAndIndexArgs,forwardArgs)){ - return ARGS_ERROR; - } - - final int i = ArrayUtils.indexOf(ForwardType, forwardType); - final String CHINA_BANK_URI = "https://cn.investing.com/commodities/"+ForwardURL[i]; - String agent="Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/89.0.4389.90 Safari/537.36 Edg/89.0.774.54"; - Document doc = Jsoup.connect(CHINA_BANK_URI).ignoreContentType(true).userAgent(agent).get(); - if(ForwardAndIndexArgs[0].equals(forwardArgs)){ - return doc.getElementById("last_last").text(); - } - - final String ELEMENT_ID="quotes_summary_secondary_data"; - final String CSS_QUERY="[ dir=\"ltr\"]"; - final String summaryData = doc.getElementById(ELEMENT_ID).select(CSS_QUERY).text().replaceAll("- ",""); - final String[] split = summaryData.split(" "); - final int argsIndex = ArrayUtils.indexOf(ForwardAndIndexArgs, forwardArgs); - return split[argsIndex-1]; - - } - static final String GetIndexData(String indexType ,String indexdArgs) throws IOException { - FineLoggerFactory.getLogger().info("ForwardAndIndexArgs[0]:{}",ForwardAndIndexArgs[0]); - if(!ArrayUtils.contains(IndexType,indexType)||!ArrayUtils.contains(ForwardAndIndexArgs,indexdArgs)){ - return ARGS_ERROR; - } - - final int i = ArrayUtils.indexOf(IndexType, indexType); - final String CHINA_BANK_URI = "https://cn.investing.com/indices/"+IndexURL[i]; - String agent="Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/89.0.4389.90 Safari/537.36 Edg/89.0.774.54"; - Document doc = Jsoup.connect(CHINA_BANK_URI).ignoreContentType(true).userAgent(agent).get(); - - if(ForwardAndIndexArgs[0].equals(indexdArgs)){ - return doc.getElementById("last_last").text(); - } - - final String summaryData = doc.getElementById("quotes_summary_secondary_data").select("[ dir=\"ltr\"]").text().replaceAll("- ",""); - final String[] split = summaryData.split(" "); - final int argsIndex = ArrayUtils.indexOf(ForwardAndIndexArgs, indexdArgs); - return split[argsIndex-1]; - - } -} diff --git a/src/main/java/com/fr/plugin/market/update/MyLocaleFinder.java b/src/main/java/com/fr/plugin/market/update/MyLocaleFinder.java deleted file mode 100644 index 0b7cb53..0000000 --- a/src/main/java/com/fr/plugin/market/update/MyLocaleFinder.java +++ /dev/null @@ -1,10 +0,0 @@ -package com.fr.plugin.market.update; - -import com.fr.stable.fun.impl.AbstractLocaleFinder; - -public class MyLocaleFinder extends AbstractLocaleFinder { - @Override - public String find() { - return "com/fr/plugin/market/update"; - } -} diff --git a/src/main/market update.iml b/src/main/market update.iml deleted file mode 100644 index 233c41f..0000000 --- a/src/main/market update.iml +++ /dev/null @@ -1,73 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/src/main/resources/com/fr/com.fr.plugin.market.update/marketUpdate_zh_CN.properties b/src/main/resources/com/fr/com.fr.plugin.market.update/marketUpdate_zh_CN.properties deleted file mode 100644 index b722f4f..0000000 --- a/src/main/resources/com/fr/com.fr.plugin.market.update/marketUpdate_zh_CN.properties +++ /dev/null @@ -1,60 +0,0 @@ -Plugin.Function.Market_Update_Shang_Hai=\u4e0a\u6d77 -Plugin.Function.Market_Update_Shen_Zhen=\u6df1\u5733 -Plugin.Function.Market_Update_Stock_Name=\u80a1\u7968\u540d\u5b57 -Plugin.Function.Market_Update_Begin_Price=\u4eca\u65e5\u5f00\u76d8\u4ef7 -Plugin.Function.Market_Update_End_Price=\u6628\u65e5\u6536\u76d8\u4ef7 -Plugin.Function.Market_Update_Now_Price=\u5f53\u524d\u4ef7\u683c -Plugin.Function.Market_Update_High_Price=\u4eca\u65e5\u6700\u9ad8\u4ef7 -Plugin.Function.Market_Update_Low_Price=\u4eca\u65e5\u6700\u4f4e\u4ef7 -Plugin.Function.Market_Update_Bid_Price=\u7ade\u4e70\u4ef7 -Plugin.Function.Market_Update_Auction_Price=\u7ade\u5356\u4ef7 -Plugin.Function.Market_Update_Trade_Volume=\u6210\u4ea4\u80a1\u7968\u6570 -Plugin.Function.Market_Update_Trade_Amount=\u6210\u4ea4\u91d1\u989d -Plugin.Function.Market_Update_Buy_1_Number=\u4e70\u4e00\u624b\u6570 -Plugin.Function.Market_Update_Buy_2_Number=\u4e70\u4e8c\u624b\u6570 -Plugin.Function.Market_Update_Buy_3_Number=\u4e70\u4e09\u624b\u6570 -Plugin.Function.Market_Update_Buy_4_Number=\u4e70\u56db\u624b\u6570 -Plugin.Function.Market_Update_Buy_5_Number=\u4e70\u4e94\u624b\u6570 -Plugin.Function.Market_Update_Buy_1_Price=\u4e70\u4e00\u62a5\u4ef7 -Plugin.Function.Market_Update_Buy_2_Price=\u4e70\u4e8c\u62a5\u4ef7 -Plugin.Function.Market_Update_Buy_3_Price=\u4e70\u4e09\u62a5\u4ef7 -Plugin.Function.Market_Update_Buy_4_Price=\u4e70\u56db\u62a5\u4ef7 -Plugin.Function.Market_Update_Buy_5_Price=\u4e70\u4e94\u62a5\u4ef7 -Plugin.Function.Market_Update_Sell_1_Number=\u5356\u4e00\u624b\u6570 -Plugin.Function.Market_Update_Sell_1_Price=\u5356\u4e00\u62a5\u4ef7 -Plugin.Function.Market_Update_Sell_2_Number=\u5356\u4e8c\u624b\u6570 -Plugin.Function.Market_Update_Sell_2_Price=\u5356\u4e8c\u62a5\u4ef7 -Plugin.Function.Market_Update_Sell_3_Number=\u5356\u4e09\u624b\u6570 -Plugin.Function.Market_Update_Sell_3_Price=\u5356\u4e09\u62a5\u4ef7 -Plugin.Function.Market_Update_Sell_4_Number=\u5356\u56db\u624b\u6570 -Plugin.Function.Market_Update_Sell_4_Price=\u5356\u56db\u62a5\u4ef7 -Plugin.Function.Market_Update_Sell_5_Number=\u5356\u4e94\u624b\u6570 -Plugin.Function.Market_Update_Sell_5_Price=\u5356\u4e94\u62a5\u4ef7 -Plugin.Function.Market_Update_Stock_Date=\u65e5\u671f -Plugin.Function.Market_Update_Stock_Time=\u65f6\u95f4 -Plugin.Function.Market_Update_New_Price=\u6700\u65b0\u4ef7 -Plugin.Function.Market_Update_Rise_Fall=\u6da8\u8dcc -Plugin.Function.Market_Update_Rise_Fall_Amount=\u6da8\u8dcc\u5e45 -Plugin.Function.Market_Update_High_Price1=\u6700\u9ad8\u4ef7 -Plugin.Function.Market_Update_Low_Price1=\u6700\u4f4e\u4ef7 -Plugin.Function.Market_Update_Begin_Price1=\u4eca\u5f00\u4ef7 -Plugin.Function.Market_Update_End_Price1=\u6628\u6536\u4ef7 -Plugin.Function.Market_Update_Crude_Oil=\u0057\u0054\u0049\u539f\u6cb9 -Plugin.Function.Market_Update_Brent_Oil=\u4f26\u6566\u5e03\u4f26\u7279\u539f\u6cb9 -Plugin.Function.Market_Update_Gold=\u9ec4\u91d1 -Plugin.Function.Market_Update_Silver=\u767d\u94f6 -Plugin.Function.Market_Update_Natural_Gas=\u5929\u7136\u6c14 -Plugin.Function.Market_Update_Copper=\u94dc -Plugin.Function.Market_Update_Us_Soybeans=\u7f8e\u56fd\u5927\u8c46 -Plugin.Function.Market_Update_Forward_New_Price=\u6700\u65b0 -Plugin.Function.Market_Update_Forward_End_Price=\u6628\u6536 -Plugin.Function.Market_Update_Forward_Begin_Price=\u5f00\u76d8 -Plugin.Function.Market_Update_Forward_Low_Price=\u6700\u4f4e -Plugin.Function.Market_Update_Forward_High_Price=\u6700\u9ad8 -Plugin.Function.Market_Update_Shanghai_Composite=\u4e0a\u8bc1\u6307\u6570 -Plugin.Function.Market_Update_Ftse_China_A50=\u5bcc\u65f6\u4e2d\u56fd\u0041\u0035\u0030\u6307\u6570 -Plugin.Function.Market_Update_Hang_Sen=\u6052\u751f\u6307\u6570 -Plugin.Function.Market_Update_Japan_Ni225=\u65e5\u7ecf\u0032\u0032\u0035 -Plugin.Function.Market_Update_US_30-Futures=\u9053\u743c\u65af\u0033\u0030\u0028\u0046\u0029 -Plugin.Function.Market_Update_US_Spx_500_futures=\u7f8e\u56fd\u6807\u666e\u0035\u0030\u0030\u0028\u0046\u0029 -Plugin.Function.Market_Update_US_Dollar_Index=\u7f8e\u5143\u6307\u6570\u671f\u8d27 \ No newline at end of file