diff --git a/app.go b/app.go
index b9ffbbb..d447eb0 100644
--- a/app.go
+++ b/app.go
@@ -1107,3 +1107,11 @@ func (a *App) GetIndustryRank(sort string, cnt int) []any {
res := data.NewMarketNewsApi().GetIndustryRank(sort, cnt)
return res["data"].([]any)
}
+func (a *App) GetIndustryMoneyRankSina(fenlei string) []map[string]any {
+ res := data.NewMarketNewsApi().GetIndustryMoneyRankSina(fenlei)
+ return res
+}
+func (a *App) GetMoneyRankSina(sort string) []map[string]any {
+ res := data.NewMarketNewsApi().GetMoneyRankSina(sort)
+ return res
+}
diff --git a/backend/data/market_news_api.go b/backend/data/market_news_api.go
index b606902..801ad19 100644
--- a/backend/data/market_news_api.go
+++ b/backend/data/market_news_api.go
@@ -237,3 +237,41 @@ func (m MarketNewsApi) GetIndustryRank(sort string, cnt int) map[string]any {
json.Unmarshal([]byte(js), &res)
return res
}
+
+func (m MarketNewsApi) GetIndustryMoneyRankSina(fenlei string) []map[string]any {
+ url := fmt.Sprintf("https://vip.stock.finance.sina.com.cn/quotes_service/api/json_v2.php/MoneyFlow.ssl_bkzj_bk?page=1&num=20&sort=netamount&asc=0&fenlei=%s", fenlei)
+
+ response, _ := resty.New().SetTimeout(time.Duration(5)*time.Second).R().
+ SetHeader("Host", "vip.stock.finance.sina.com.cn").
+ SetHeader("Referer", "https://finance.sina.com.cn").
+ SetHeader("User-Agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/117.0.0.0 Safari/537.36 Edg/117.0.2045.60").
+ Get(url)
+ js := string(response.Body())
+ res := &[]map[string]any{}
+ err := json.Unmarshal([]byte(js), &res)
+ if err != nil {
+ logger.SugaredLogger.Error(err)
+ return *res
+ }
+ return *res
+}
+
+func (m MarketNewsApi) GetMoneyRankSina(sort string) []map[string]any {
+ if sort == "" {
+ sort = "netamount"
+ }
+ url := fmt.Sprintf("https://vip.stock.finance.sina.com.cn/quotes_service/api/json_v2.php/MoneyFlow.ssl_bkzj_ssggzj?page=1&num=20&sort=%s&asc=0&bankuai=&shichang=", sort)
+ response, _ := resty.New().SetTimeout(time.Duration(5)*time.Second).R().
+ SetHeader("Host", "vip.stock.finance.sina.com.cn").
+ SetHeader("Referer", "https://finance.sina.com.cn").
+ SetHeader("User-Agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/117.0.0.0 Safari/537.36 Edg/117.0.2045.60").
+ Get(url)
+ js := string(response.Body())
+ res := &[]map[string]any{}
+ err := json.Unmarshal([]byte(js), &res)
+ if err != nil {
+ logger.SugaredLogger.Error(err)
+ return *res
+ }
+ return *res
+}
diff --git a/backend/data/market_news_api_test.go b/backend/data/market_news_api_test.go
index 0ece1d7..31fd7aa 100644
--- a/backend/data/market_news_api_test.go
+++ b/backend/data/market_news_api_test.go
@@ -35,3 +35,17 @@ func TestGetIndustryRank(t *testing.T) {
}
}
+func TestGetIndustryMoneyRankSina(t *testing.T) {
+ res := NewMarketNewsApi().GetIndustryMoneyRankSina("2")
+ for i, re := range res {
+ logger.SugaredLogger.Debugf("key: %+v, value: %+v", i, re)
+
+ }
+}
+func TestGetMoneyRankSina(t *testing.T) {
+ res := NewMarketNewsApi().GetMoneyRankSina("r3_net")
+ for i, re := range res {
+ logger.SugaredLogger.Debugf("key: %+v, value: %+v", i, re)
+
+ }
+}
diff --git a/frontend/src/App.vue b/frontend/src/App.vue
index 52b5cb2..4795a4f 100644
--- a/frontend/src/App.vue
+++ b/frontend/src/App.vue
@@ -23,7 +23,7 @@ import {
AlarmOutline,
SparklesOutline,
NewspaperOutline,
- AnalyticsOutline, BarChartSharp, NewspaperSharp, Flame,
+ AnalyticsOutline, BarChartSharp, NewspaperSharp, Flame, BarChartOutline, Wallet,
} from '@vicons/ionicons5'
import {GetConfig, GetGroupList} from "../wailsjs/go/main/App";
import { useRouter } from 'vue-router'
@@ -196,6 +196,27 @@ const menuOptions = ref([
),
key: 'market4',
icon: renderIcon(Flame),
+ },
+ {
+ label: () =>
+ h(
+ RouterLink,
+ {
+ href: '#',
+ to: {
+ name: 'market',
+ query: {
+ name:"个股资金流向",
+ }
+ },
+ onClick: ()=>{
+ EventsEmit("changeMarketTab", {ID:0,name:'个股资金流向'})
+ },
+ },
+ { default: () => '个股资金流向',}
+ ),
+ key: 'market5',
+ icon: renderIcon(Wallet),
}
]
},
diff --git a/frontend/src/components/market.vue b/frontend/src/components/market.vue
index ee7edb9..403c367 100644
--- a/frontend/src/components/market.vue
+++ b/frontend/src/components/market.vue
@@ -16,6 +16,7 @@ import {NAvatar, NButton, NFlex, NText, useMessage, useNotification} from "naive
import {ExportPDF} from "@vavt/v3-extension";
import {MdEditor, MdPreview} from "md-editor-v3";
import { useRoute } from 'vue-router'
+import RankTable from "./rankTable.vue";
const route = useRoute()
const icon = ref('https://raw.githubusercontent.com/ArvinLovegood/go-stock/master/build/appicon.png');
@@ -400,13 +401,44 @@ function ReFlesh(source){
{{item.bd_zdf}}%
{{item.bd_zdf5}}%
{{item.bd_zdf20}}%
- {{item.nzg_name}}
+ {{item.nzg_name}} {{item.nzg_code}}
{{item.nzg_zdf}}%
{{item.nzg_zxj}}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/frontend/src/components/rankTable.vue b/frontend/src/components/rankTable.vue
new file mode 100644
index 0000000..90bf5c6
--- /dev/null
+++ b/frontend/src/components/rankTable.vue
@@ -0,0 +1,87 @@
+
+
+
+
+
+
+ 代码
+ 名称
+ 最新价
+ 涨跌幅
+ 换手率
+ 成交额/万
+ 流出资金/万
+ 流入资金/万
+ 净流入/万
+ 净流入率
+ 主力流出/万
+ 主力流入/万
+ 主力净流入/万
+ 主力净流入率
+ 散户流出/万
+ 散户流入/万
+ 散户净流入/万
+ 散户净流入率
+
+
+
+
+ {{ item.symbol }}
+ {{ item.name }}
+ {{item.trade}}
+ {{(item.changeratio*100).toFixed(2)}}%
+ {{(item.turnover/100).toFixed(2)}}%
+ {{(item.amount/10000).toFixed(2)}}
+ {{(item.outamount/10000).toFixed(2)}}
+ {{(item.inamount/10000).toFixed(2)}}
+ {{(item.netamount/10000).toFixed(2)}}
+ {{(item.ratioamount*100).toFixed(2)}}%
+ {{(item.r0_out/10000).toFixed(2)}}
+ {{(item.r0_in/10000).toFixed(2)}}
+ {{(item.r0_net/10000).toFixed(2)}}
+ {{(item.r0_ratio*100).toFixed(2)}}%
+ {{(item.r3_out/10000).toFixed(2)}}
+ {{(item.r3_in/10000).toFixed(2)}}
+ {{(item.r3_net/10000).toFixed(2)}}
+ {{(item.r3_ratio*100).toFixed(2)}}%
+
+
+
+
+
+
\ No newline at end of file
diff --git a/frontend/wailsjs/go/main/App.d.ts b/frontend/wailsjs/go/main/App.d.ts
index 93bc89c..67d6ee2 100644
--- a/frontend/wailsjs/go/main/App.d.ts
+++ b/frontend/wailsjs/go/main/App.d.ts
@@ -33,8 +33,12 @@ export function GetGroupList():Promise>;
export function GetGroupStockList(arg1:number):Promise>;
+export function GetIndustryMoneyRankSina(arg1:string):Promise>>;
+
export function GetIndustryRank(arg1:string,arg2:number):Promise>;
+export function GetMoneyRankSina(arg1:string):Promise>>;
+
export function GetPromptTemplates(arg1:string,arg2:string):Promise;
export function GetStockCommonKLine(arg1:string,arg2:string,arg3:number):Promise;
diff --git a/frontend/wailsjs/go/main/App.js b/frontend/wailsjs/go/main/App.js
index 06c801c..933c9d4 100644
--- a/frontend/wailsjs/go/main/App.js
+++ b/frontend/wailsjs/go/main/App.js
@@ -62,10 +62,18 @@ export function GetGroupStockList(arg1) {
return window['go']['main']['App']['GetGroupStockList'](arg1);
}
+export function GetIndustryMoneyRankSina(arg1) {
+ return window['go']['main']['App']['GetIndustryMoneyRankSina'](arg1);
+}
+
export function GetIndustryRank(arg1, arg2) {
return window['go']['main']['App']['GetIndustryRank'](arg1, arg2);
}
+export function GetMoneyRankSina(arg1) {
+ return window['go']['main']['App']['GetMoneyRankSina'](arg1);
+}
+
export function GetPromptTemplates(arg1, arg2) {
return window['go']['main']['App']['GetPromptTemplates'](arg1, arg2);
}