Stock War
Home
CheckList
View
TableManual
Memo
Update
Table
Period
FuSpIndicator
Indicator
Check
View
Chat
Privacy
Dnownload
Memo
當盤 (Now)
盤勢 (Market)
程式 (Program)
其他 (Others)
當盤內容
1.更新 http://stockwar.somee.com/Update a) Update.cshtml.cs 的 OnPostUpdateDataAsync() 更新 按鈕 更新[台指現貨]TXD.txt 更新[台指期貨]TXFD.txt 2.FuSpIndicator http://stockwar.somee.com/FuSpIndicator a)OnPostGenerateMahlIndex()調整SelectedSourceKey 或是改函數 TXD.txt -> TXDMAHLIndex.txt 產生的MAHLIndex.txt 按鈕 TXFD.txt -> TXFDMAHLIndex.txt 產生的MAHLIndex.txt 按鈕 b) OnPostGenerateFuSpIndicator() 產生對應的 FuSpIndicator.txt 按鈕 --------------------- 期現表最後加入計算之期現表(檢討表前) 更新按鈕 TXFDMAHLIndex.txt、TXDMAHLIndex.txt、TXFDFuSpIndicator.txt [計算之期現表] 顯示近50筆 Date,TXFDHigh, TXFDLow, TXD Close, TXFD Close,TXFDM MASideC, TXFDM FuSpmcHBarH,...,FuSpFlg,TXFDFuSp FuSpmcFuSpHBarH.... ----- ------------- 1.FuSpIndicator.cshtml選擇來源檔案,自動切換「對應的 MAHLIndex.txt 名稱」,並讀取其檔案內容,顯示於MAHLIndex 內容 2.FuSpIndicator.cshtml.cs於376 加"時間" --- TableManual 1.建立table,[右邊]計畫表,[左邊]盤勢內容Memo(可存Market) 建立一個html table 2*2左右各50%(無框線) 2.計畫表加入[加碼條件] 觸價? 守價? 停損價? 3.期現表一次顯示10筆,超過的用拉Bar 4.期現表下方加入事後檢討表Post-mortem(參考Memo做法),起點:日期,價格;迄點:日期,價格。天數、報酬率。 --------------- 增加頁面:新增頁面改編號、全面換位子、全面改權限、調整有某權限的加入此頁面權限 -------- 周一、二可周選逢低/高當沖(盤沒創低,選擇權創低守時進)
儲存 Now
盤勢內容
TXDMvmcHBarH ~ vmcFuSpmcLBarL 現在價格跟支撐壓力排序 支撐 不能為 波段低 計畫表舊的往最後擺,新的調整上去 期現表新的往上擺 Data/TXDFuSpIndicator.txt 取最後一筆 日期: 價格 備註 TXDMvmcHBarH 空損 vmcFuSpmcHBarH 空進 TXDMvmcHBarL vmcFuSpmcHBarL 現價 方向 TXDMvmcLBarH vmcFuSpmcLBarH vmcFuSpmcLBarL 多進 TXDMvmcLBarL 多損
儲存 Market
程式內容
net core 10 C# cshtml 取txt最後30筆,自動判斷分隔符號,ajxa產生出html table在 ASP.NET Core 10 中,如果您希望將前端程式碼直接整合在 .cshtml (Razor Pages 或 MVC View) 中,並透過 AJAX 呼叫同一個頁面(或獨立的 Controller/API)來取得資料,最簡潔的架構是使用 Razor Pages。以下為您規劃「單一 Razor Page 檔案 (.cshtml + .cshtml.cs)」的完整實作,包含 C# 倒序高效讀取、自動字元頻率判定分隔符,以及前端 AJAX 渲染。1. 後端邏輯:Index.cshtml.cs在 Razor Page 的後端類別中,我們利用 OnGet() 渲染初始頁面,並建立一個 OnGetLogData() 的處理方法 (Page Handler),專門應付 AJAX 的 JSON 請求。csharpusing Microsoft.AspNetCore.Mvc; using Microsoft.AspNetCore.Mvc.RazorPages; using System.IO; using System.Text; public class IndexModel : PageModel { private readonly IWebHostEnvironment _env; public IndexModel(IWebHostEnvironment env) { _env = env; } public void OnGet() { // 負責初始頁面載入 } // 💡 專供 AJAX 呼叫的 Page Handler public IActionResult OnGetLogData() { // 假設文字檔放在 App_Data 或 wwwroot 底下,請依需求調整路徑 string filePath = Path.Combine(_env.ContentRootPath, "data.txt"); if (!System.IO.File.Exists(filePath)) { return new NotFoundObjectResult(new { message = "找不到目標記錄檔。" }); } // 1. 讀取最後 30 行 (在 .NET 10 中此方法會自動優化避免載入全檔案) var last30Lines = System.IO.File.ReadLines(filePath, Encoding.UTF8) .TakeLast(30) .ToList(); if (last30Lines.Count == 0) { return new JsonResult(new { headers = new List<string>(), rows = new List<List<string>>() }); } // 2. 自動判斷分隔符號 char delimiter = DetectDelimiter(last30Lines); // 3. 解析資料 (假設第一行為欄位表頭) var parsedData = last30Lines .Select(line => line.Split(delimiter).Select(cell => cell.Trim()).ToList()) .ToList(); var headers = parsedData.First(); var rows = parsedData.Skip(1).ToList(); return new JsonResult(new { headers, rows }); } // 💡 智慧分隔符偵測:統計常見符號在樣本中出現的次數 private char DetectDelimiter(List<string> lines) { char[] candidates = { ',', '\t', ';', '|' }; var counts = candidates.ToDictionary(c => c, c => 0); // 抽取前 5 行作為特徵樣本進行統計 foreach (var line in lines.Take(5)) { foreach (var c in candidates) { counts[c] += line.Count(ch => ch == c); } } // 找出出現次數最多者,若無則預設為 CSV 逗號 var bestMatch = counts.OrderByDescending(kv => kv.Value).First(); return bestMatch.Value > 0 ? bestMatch.Key : ','; } } 請謹慎使用程式碼。2. 前端網頁:Index.cshtml在檢視畫面中,我們配置一個容器區塊,並在網頁載入時,透過原生 Fetch API 向特定的 Handler 網址 (?handler=LogData) 發送 AJAX 請求,最後組裝成 HTML 表格。html@page @model IndexModel @{ ViewData["Title"] = "記錄檔即時檢視"; } <h2>最新 30 筆資料統計</h2> <!-- 表格呈現容器 --> <div id="table-container"> <p>正在動態讀取並分析文字檔...</p> </div> @section Scripts { <script> document.addEventListener("DOMContentLoaded", () => { // 💡 呼叫對應後端 OnGetLogData 的 Handler 路由 const fetchUrl = '?handler=LogData'; fetch(fetchUrl) .then(response => { if (!response.ok) throw new Error('伺服器回應錯誤'); return response.json(); }) .then(data => { if (!data.headers || data.headers.length === 0) { document.getElementById('table-container').innerHTML = '<p>目前檔案中沒有任何資料。</p>'; return; } // 解析成功,開始渲染表格 renderHtmlTable(data.headers, data.rows); }) .catch(error => { console.error('AJAX Error:', error); document.getElementById('table-container').innerHTML = `<span style="color:red; font-weight:bold;">載入失敗:${error.message}</span>`; }); }); // 💡 動態產生 HTML Table 結構 function renderHtmlTable(headers, rows) { let tableHtml = '<table class="table table-striped table-bordered">'; // 產生表頭 tableHtml += '<thead class="table-light"><tr>'; headers.forEach(header => { tableHtml += `<th>${escapeHtml(header)}</th>`; }); tableHtml += '</tr></thead>'; // 產生表身資料 tableHtml += '<tbody>'; rows.forEach(row => { tableHtml += '<tr>'; row.forEach(cell => { tableHtml += `<td>${escapeHtml(cell)}</td>`; }); tableHtml += '</tr>'; }); tableHtml += '</tbody></table>'; // 置入網頁 document.getElementById('table-container').innerHTML = tableHtml; } // 💡 XSS 記憶體防護跳脫,避免文字檔內含惡意 HTML 標籤 function escapeHtml(text) { return String(text) .replace(/&/g, '&') .replace(/</g, '<') .replace(/>/g, '>') .replace(/"/g, '"') .replace(/'/g, '''); } </script> }
儲存 Program
其他內容
進場檢核表 CheckList 期貨切日、夜盤,不同盤可進場:夜盤測試打底,日盤測低守時進場。 ------ 測進 [60K] 1.破前期現背-低(前背低-最低>150) 2.上過期現背-低(前背低>50) 3.今天現低(前背低-現低>100) 4.今天現低未破今天低點進場。 5.有守今天低點留倉(停損今低-100) ------------------------------------ 觀盤重點: 1.日盤看正2表現 2.夜盤台積電表現 3.遠近期都破/過整數關卡才可以進場 4.開期現背,開高不漲時,要等收盤確認。 ------------- 2026/6/1 2026/6/2 TRUE 2026/6/3 2026/6/4 TRUE 2026/6/5 2026/6/8 2026/6/9 2026/6/10 TRUE 2026/6/11 2026/6/12 2026/6/15 2026/6/16 2026/6/17 2026/6/18 2026/6/22 2026/6/23 2026/6/24 2026/6/25 TRUE 1.[原網站]自-繳款紀錄(檢視隱藏版)。 2.[TableManual] TXFClose,HLBarFlg中間插入MAFlg,最後加欄位TXMAFlg TXMA5 TXMA10 TXMA20 LBarL,FutRecFlg中間插入:FutRecFlg FuSpHBarH,FuSpHBarL,FuSpLBarH,FuSpLBarL [日K]期現表下方加入「計畫表」資金:40?,可進場次數:? 更新按鈕旁邊加入「儲存」(存Table),計畫表的儲存要區隔(存計畫表) 底/頭 雙背離直接進?? 3.[FuSpIndicator]待測試新增此功能 ----- [FuSpIndicator] [進場檢核表]增加填入進場日期,備註:期貨不同盤可以進場,夜盤守住關鍵K,日盤回測進場(未再創低) ------------------------------------------- Table TXFClose,HLBarFlg中間插入MAFlg,最後加欄位TXMAFlg TXMA5 TXMA10 TXMA20 [待加入]LBarL,FutRecFlg中間插入:FutRecFlg FuSpHBarH,FuSpHBarL,FuSpLBarH,FuSpLBarL [待加入][日K]期現表下方 加入「計畫表」 資料來源:EntryPlan.txt,儲存按鈕(覆蓋內容,按下後儲存輸入下述內容(不含期現表TableManual.txt)) 進場日:?,進場盤:日盤(預設)/夜盤,進場價1:?,備註:? (破44700,而不破44600則掛單),停損價:?,備註:?(低點50) 進場價2:?,備註:?,進場價1:?,備註:? (破44700,而不破44600則掛單) [In]45054,停損守44955 [In]44713,停損守44671 [In]44334,停損守44185 [X]44185 ================================================================================ TXD.txt Date(key) Open High Low Close Vol ================= ================= TXDMAHLIndex.txt Date(key) ================== YesterdayOpen: Open price of the previous trading day YesterdayHigh: High price of the previous trading day YesterdayLow: Low price of the previous trading day YesterdayClose: Close price of the previous trading day YesterdayVol: volume of the previous trading day ================= a.TodayOpenUpPoint: TXD.txt's Open - YesterdayClose (今開-昨收) b.TodayNewHighPoint: TXD.txt's High - YesterdayHigh c.TodayNewLowPoint: TXD.txt's Low - YesterdayLow d.TodayNewClosePoint: TXD.txt's Close - YesterdayClose RecFlg: if a. > 0 then 開高 + a.數值 else 開低 + a.數值 end + "," + if b. > 0 then 創高 + b.數值 else 高內 + b.數值 end + "," + if c. > 0 then 創低 + c.數值 else 低內 + c.數值 end + "," + if d. > 0 then 收高 + d.數值 else 收低 + d.數值 end + "," + a.數值,b.數值,c.數值,d.數值去掉+/- ================= MA5 MA10 MA20 ================= MAFlg:[example]H>C>O>L>5>10>20 (TXD.txt's Open,TXD.txt's High,TXD.txt's Low,TXD.txt's Close,MA5,MA10,MA20由大到小排列) MASideC: if TXD.txt's Close > MAX( MA5 , MA10 , MA20 ) then Long else if TXD.txt's Close < MIN( MA5 , MA10 , MA20 ) then Short else MASideC of the previous trading day + "Mid" (LongMid/ShortMid) MASideHL: if MIN(TXD.txt's High , TXD.txt's Low) > MAX( MA5 , MA10 , MA20 ) then Long else if MAX(TXD.txt's High , TXD.txt's Low) < MIN( MA5 , MA10 , MA20 ) then Short else MASideHL of the previous trading day + "Mid" (LongMid/ShortMid) ===================== 參考MASideC,如果為Long/LongMid則存最高K(mcHBarH:最高K的高,mcHBarL:最高K的低),mcLBarH=0,mcLBarL=0; 如果為Short/ShortMid則存最低K(mcLBarH:最低K的高,mcLBarL:最低K的低),mcHBarH=0,mcHBarL=0。 mcHBarH mcHBarL mcLBarH mcLBarL ========================== mcHLBarFlg: [example]H>C>O>L> HH > HL > LH > LL (TXD.txt's Open,TXD.txt's High,TXD.txt's Low,TXD.txt's Close,mcHBarH,mcHBarL,mcLBarH,mcLBarL由大到小排列) ===================== 參考MASideHL,如果為Long/LongMid則存最高K(mhlHBarH:最高K的高,mhlHBarL:最高K的低),mhlLBarH=0,mhlLBarL=0; 如果為Short/ShortMid則存最低K(mhlLBarH:最低K的高,mhlLBarL:最低K的低),mhlHBarH=0,mhlHBarL=0。 mhlHBarH mhlHBarL mhlLBarH mhlLBarL ========================== mhlHLBarFlg: [example]H>C>O>L> HH > HL > LH > LL (TXD.txt's Open,TXD.txt's High,TXD.txt's Low,TXD.txt's Close,mhlHBarH,mhlHBarL,mhlLBarH,mhlLBarL由大到小排列) ================== ================== TXFDMAHLIndex.txt 參考TXDMAHLIndex.txt ===================== TTXDXFDFuSpIndicator.txt ===================== Date(key) ================== FuSpFlg: if TXFDMAHLIndex.txt's b.TodayNewHighPoint > 0 and TXDMAHLIndex.txt's b.TodayNewHighPoint <= 0 then "期現背-高" else if TXFDMAHLIndex.txt's c.TodayNewLowPoint > 0 and TXDMAHLIndex.txt's c.TodayNewLowPoint <= 0 then "期現背-低" else "-" end [說明]FuSpFlg為"期現背-高" / "期現背-低"且 TXFD.txt's High 於 mcHBarH,mcHBarL之中 則 FuSpmcHBarH = TXFD.txt's High , FuSpmcHBarL = TXFD.txt's Low FuSpmcHBarH FuSpmcHBarL [說明]FuSpFlg為"期現背-高" / "期現背-低"且 TXFD.txt's Low 於 mcLBarH,mcLBarL之中 則 FuSpmcLBarH = TXFD.txt's High , FuSpmcLBarL = TXFD.txt's Low FuSpmcLBarH FuSpmcLBarL [說明]FuSpFlg為"期現背-高" / "期現背-低"且 TXFD.txt's High 於 mhlHBarH,mhlHBarL之中 則 FuSpmhlHBarH = TXFD.txt's High , FuSpmhlHBarL = TXFD.txt's Low FuSpmhlHBarH FuSpmhlHBarL [說明]FuSpFlg為"期現背-高" / "期現背-低"且 TXFD.txt's Low 於 mhlLBarH,mhlLBarL之中 則 FuSpmhlLBarH = TXFD.txt's High , FuSpmhlLBarL = TXFD.txt's Low FuSpmhlLBarH FuSpmhlLBarL ============ ===================== TXDTXFDSpFuIndicator ============= SpFuFlg if TXFDMAHLIndex.txt's b.TodayNewHighPoint <= 0 and TXDMAHLIndex.txt's b.TodayNewHighPoint > 0 then "現期背-高" else if TXFDMAHLIndex.txt's c.TodayNewLowPoint <= 0 and TXDMAHLIndex.txt's c.TodayNewLowPoint > 0 then "現期背-低" else "-" end [說明]SpFuFlg為"現期背-高" / "現期背-低"且 TXFD.txt's High 於 mcHBarH,mcHBarL之中 則 SpFumcHBarH = TXFD.txt's High , SpFumcHBarL = TXFD.txt's Low SpFumcHBarH SpFumcHBarL [說明]SpFuFlg為"現期背-高" / "現期背-低"且 TXFD.txt's Low 於 mcHBarH,mcHBarL之中 則 SpFumcHBarH = TXFD.txt's High , SpFumcHBarL = TXFD.txt's Low SpFumcLBarH SpFumcLBarL [說明]SpFuFlg為"現期背-高" / "現期背-低"且 TXFD.txt's High 於 mhlHBarH,mhlHBarL之中 則 SpFumhlHBarH = TXFD.txt's High , SpFumhlHBarL = TXFD.txt's Low SpFumhlHBarH SpFumhlHBarL 說明]SpFuFlg為"現期背-高" / "現期背-低"且 TXFD.txt's Low 於 mhlHBarH,mhlHBarL之中 則 SpFumhlHBarH = TXFD.txt's High , SpFumhlHBarL = TXFD.txt's Low SpFumhlLBarH SpFumhlLBarL 有高/低,有且回期現背做 --------------------------- 先做日線策略 寫功能: 進場檢核表 [O/X?]1.要進場:做多/做空? [O/X?]2.低K(L<MA5,MA10,MA20)/高K(H>MA5,MA10,MA20)(Date:?,H:?,L:?)※不能是今天 [O/X?]3.期現背K(-高還低)(Date:?,H:?,L:?)於低K/高K內。※不能跟低K/高K為同K [O/X?]4.破回/過回期現背K低/高 [O/X?]5.當盤只做兩次,[1:進場價?,2:進場價?](1個60分K 1次) [O/X?]6.停損設定(價格?) ?為input /為選做多 或 選空 切換顯示內容 修改內容 ----- [Update]TX轉換西元年,每個txt可個別修改儲存 [TableManual]HBar ,LBar,更新時 套用前次值。 顯示大於20筆才刪除,之後自動判斷:FutRecFlg期:創低(破昨K低)、收內(昨K內)OptRecFlg現:創低(破昨K低)、創高(過昨K高)、收高(昨K上) --- 「期貨現貨背離」的英文通常翻譯為 Futures-spot divergence 或 Spot-futures divergence。 ----- ----- \Views\sfPayRecord\Index.cshtml 黃金白銀何時旺季?在貴金屬市場中,黃金與白銀具備非常強烈的「季節性循環(Seasonality)」特徵。統計近25年來的價格數據,金銀走勢通常呈現「年初與秋冬雙頭旺、春夏季軟趴趴」的規律。以下為您精確解析黃金與白銀的實質旺季月份、背後推動力以及最佳的佈局時機:一、 黃金(Gold)的季節性循環:年內兩波大旺季黃金現貨有超過 70% ~ 80% 的實體需求來自「珠寶製造業」與「民間傳統節慶買盤」。珠寶商通常會提前 1 到 2 個月在期貨與現貨市場大舉備料,進而推升金價。第 ① 波強烈旺季:08 月 至 09 月(秋季狂歡) 📈主因:印度全球最大的珠寶消費季(11月的排燈節、秋冬結婚潮)即將來臨,大批實體買盤自 8 月初便開始瘋狂進貨。第 ② 波最強旺季:12 月 至 次年 02 月(跨年巔峰) 🚀主因:西方聖誕節新年長假、緊接著全球華人春節的黃金送禮與淘金潮,這 3 個月往往是黃金年內漲幅最高、上漲機率高達 65% ~ 70% 的黃金波段。黃金的淡季(最佳買點) 🛑:03 月至 04 月(春節後需求空窗期)、以及 05 月至 07 月(夏季融資與傳統五窮六絕)。統計上,6 月份通常是黃金歷史上最便宜、最疲軟的月份。二、 白銀(Silver)的季節性循環:工業與投資雙重催化白銀與黃金不同,它除了具備避險屬性,更有超過 50% ~ 60% 的「工業製造需求」(如太陽能光電板、半導體導線、電動車元件)。第 ① 波主升段旺季:12 月 至 次年 02 月(主力合約重頭戲) ⚡主因:年底全球機構法人的投資組合重新配置、經銷商年初實體銀幣補庫存,加上中國春節前夕需求,使得 1 月份歷史上高居白銀單月勝率最高(高達 70%)的月份。第 ② 波補漲旺季:07 月 至 08 月(第三季工業備貨) 🏭主因:各科技大廠為了準備第四季(Q4)的全球電子消費旺季,會提前在 7、8 月對白銀等高導電貴金屬進行「工業庫存回補」。白銀的淡季(最佳買點) 🛑:05 月至 06 月。白銀的波動度(Beta值)是黃金的 2 ~ 3 倍,因此在年中夏季「商品市場枯水期」時,白銀往往跌得比黃金更慘烈,6 月同樣是白銀統計上表現最差的月份。 TXD.txt Date Open High Low Close Vol ================= ================= TXDMAHLIndex.txt Date ================== YesterdayOpen YesterdayHigh YesterdayLow YesterdayClose YesterdayVol ================= TodayOpenUpPoint:open+20 (今開-昨收) IsTodayNewHigh:Y/N IsTodayNewLow:Y/N IsTodayNewClose:收過高/收破低 IsTodayUpDn: Up/Dn/小漲/小跌(<100) RecFlg:彙整 ================= MA5 MA10 MA20 ================= MAFlg:H>C>L>5>10>20 (依大小排列) MASideC:Long/Short(C<5<10<20),if C 在MA一兩個裡面,則之前的Long+Mid MASideHL:Long/Short(H&L<5<10<20) ===================== 參考MASideC mcHBarH mcHBarL mcLBarH mcLBarL ========================== mcHLBarFlg: H>C>L> HH > HL > LH > LL (依大小排列) ===================== 參考MASideHL mhlHBarH mhlHBarL mhlLBarH mhlLBarL ========================== mhlHLBarFlg: H>C>L> HH > HL > LH > LL (依大小排列) ================== ================== TXFDMAHLIndex 同TX ===================== TTXDXFDFuSpIndicator ===================== Date ================== FuSpFlg [期現背-高/低],期貨有創高/低,現貨沒有 FuSpmcHBarH FuSpmcHBarL FuSpmcLBarH FuSpmcLBarL FuSpmhlHBarH FuSpmhlHBarL FuSpmhlLBarH FuSpmhlLBarL ============ ===================== TXDTXFDSpFuIndicator ============= SpFuFlg [現期背-高/低],現貨有創高/低,期貨沒有 同FuSpFlg 自-繳款紀錄(無檢視)加入頁面放最下面 SfPayRecordNoVw:將SfPayRecord1複製過去,index.cshtml拿掉檢視。 ----- ============================= 寫功能: 進場檢核表 [O/X?]1.要進場:做多/做空? [O/X?]2.低K(L<MA5,MA10,MA20)/高K(H>MA5,MA10,MA20)(Date:?,H:?,L:?)※不能是今天 [O/X?]3.期現背K(-高還低)(Date:?,H:?,L:?)於低K/高K內。※不能跟低K/高K為同K [O/X?]4.破回/過回期現背K低/高 [O/X?]5.當盤只做兩次,[1:進場價?,2:進場價?](1個60分K 1次) [O/X?]6.停損設定(價格?) ?為input /為選做多 或 選空 切換顯示內容
儲存 Others