http://www.5xcg.com/bbs/forum.php?mod=viewthread&tid=51143&extra=page%3D1

博主分享了在股市中通过技术分析获利的经验,重点介绍了选择上海钢联这支股票的过程,并强调了结合大盘形势判断的重要性。

http://www.5xcg.com/bbs/forum.php?mod=viewthread&tid=51143&extra=page%3D1

 

 

因为身在酒店设备有限,只能尽量把文字汇集于图片上。万望见谅。发个技术贴,证明一下我们靠技术的一直都在,并且赚着那些什么用金叉银叉什么黄金分割比例分析股票的人无法理解的钱~~
上海钢联这支股是在1月6号周六的时候选出来的。当时看它无论从形态还是时间上来说,都证明低位有资金在吸筹建仓。具体图片里有介绍。
最关键的是当时行情下多数资金正在追逐上证50那些不断创新高的股,而这种情况下正好适合我们默默建仓那些位置低有潜力的黄苹果。
而经过这一战最深的总结就是无论何时都要结合大盘当前形势进行判断!背景环境尤为重要。
我经过这一年多的学习和不断实战,终于开始有真正稳定的盈利。感谢师父教给我们知识和分析方法,没有您就没有今天的我,再次感谢师父!
<ignore_js_op> 
下面是今天的交割单,实盘操作不吹牛逼。 我这会用的苹果系统无法上传图片,只能用手机上传,不知道效果怎样一会再看。

<ignore_js_op><ignore_js_op> 

另外麻烦有些喷子羡慕嫉妒恨的就开大号来,别建个小号猥琐的要命。自己不努力吹再多牛也没用。 

论坛的师兄弟们早日稳定盈利迎来晴天!!









补充内容 (2018-1-23 18:49):
实际上机会总是在没人关注的地方默默的等你发现。  在只赚指数不赚钱的行情下回头去找找一些位置低走出形态的小票,比如上海钢联从12月份开始与创业板走势背道而驰,逐渐强于创业板。在1月15号创业板砸出大阴线时它却略微调整洗盘,并且16号就收复调整的区域。遇到这种情况显然值得我们散户思考一下为什么主力这么做。。。 这就是它吸筹完毕准备拉升的前兆啊。   其实思路都在那张图里,多去拿上海钢联的走势和创业板做对比,尤其关键点。  你必然能有收获。

转载于:https://www.cnblogs.com/maohuidong/p/9022379.html

using Autodesk.AutoCAD.ApplicationServices; using Autodesk.AutoCAD.DatabaseServices; using Autodesk.AutoCAD.EditorInput; using Autodesk.AutoCAD.Geometry; using Autodesk.AutoCAD.Runtime; using System; using System.Collections.Generic; using System.Linq; using System.Text.RegularExpressions; namespace ScaffoldMaterialStatistics { public class ScaffoldStatsCommands { // 定义材料类型枚举 private enum MaterialType { HorizontalBar, // 横杆 VerticalBar, // 立杆 DiagonalBrace, // 水平斜拉杆 SteelTread, // 钢踏板 SteelSection, // 型钢 WallConnector, // 连墙件 Fastener // 扣件 } // 定义材料信息结构 private struct MaterialInfo { public MaterialType Type; public string Name; public double Length; // 单位:毫米 public int Quantity; } // 预编译正则表达式以提高性能 private static readonly Regex _lengthRegex = new Regex( @"(\d+\.?\d*)\s*(mm|米|m)|^(\d+\.?\d*)$", RegexOptions.Compiled | RegexOptions.IgnoreCase ); private static readonly Regex _diagonalBraceRegex = new Regex( @"水平斜拉杆", RegexOptions.Compiled | RegexOptions.IgnoreCase ); [CommandMethod("MCS", CommandFlags.Modal)] public void ScaffoldMaterialStatistics() { Document doc = Application.DocumentManager.MdiActiveDocument; Database db = doc.Database; Editor ed = doc.Editor; try { // 提示用户选择对象 PromptSelectionOptions opts = new PromptSelectionOptions(); opts.MessageForAdding = "请框选外架材料: "; PromptSelectionResult selRes = ed.GetSelection(opts); if (selRes.Status != PromptStatus.OK) { ed.WriteMessage("\n操作已取消。"); return; } using (Transaction tr = db.TransactionManager.StartTransaction()) { // 获取选择集 SelectionSet selSet = selRes.Value; // 统计材料 List<MaterialInfo> materials = CountMaterials(selSet, tr, ed); // 检查是否有统计数据 if (materials.Count == 0) { ed.WriteMessage("\n未找到可统计的材料!"); return; } // 创建统计表格 CreateStatisticsTable(doc, materials, ed); tr.Commit(); } ed.WriteMessage("\n外架材料统计完成!"); } catch (System.Exception ex) { ed.WriteMessage($"\n错误: {ex.Message}\n{ex.StackTrace}"); } } private List<MaterialInfo> CountMaterials(SelectionSet selSet, Transaction tr, Editor ed) { // 使用字典直接存储MaterialInfo结构 Dictionary<string, MaterialInfo> materialDict = new Dictionary<string, MaterialInfo>(); int unrecognizedCount = 0; // 遍历选择集中的每个对象ID foreach (SelectedObject selectedObj in selSet) { if (selectedObj == null) continue; Entity entity = tr.GetObject(selectedObj.ObjectId, OpenMode.ForRead) as Entity; string layerName = entity.Layer.ToUpper(); // 统一转为大写便于比较 MaterialInfo? info = null; string entityInfo = $"图层: {layerName}, "; if (entity is BlockReference blockRef) { // 获取块名 BlockTableRecord btr = tr.GetObject(blockRef.BlockTableRecord, OpenMode.ForRead) as BlockTableRecord; string blockName = btr.Name.ToUpper(); // 统一转为大写 entityInfo += $"块名: {blockName}"; // 解析块名和图层名并获取材料信息 info = ParseBlockAndLayerName(blockName, layerName); } else { // 非块对象 entityInfo += $"实体类型: {entity.GetType().Name}"; info = ParseLayerName(layerName); } if (info.HasValue) { MaterialInfo material = info.Value; // 应用乘数规则 if (material.Type == MaterialType.SteelTread && !material.Name.Contains("单片")) { // 非单片钢踏板数量×3 material.Quantity = 3; } else if (material.Type == MaterialType.Fastener && material.Name == "900mm扣件") { // 900mm扣件数量×3 material.Quantity = 3; } else { material.Quantity = 1; } // 创建唯一标识键 string key = $"{material.Type}_{material.Name}_{material.Length:F1}"; // 更新材料数量 if (materialDict.TryGetValue(key, out MaterialInfo existing)) { existing.Quantity += material.Quantity; materialDict[key] = existing; } else { materialDict[key] = material; } entityInfo += $" -> 识别为: {material.Name} [数量: {material.Quantity}]"; } else { unrecognizedCount++; entityInfo += " -> 未识别"; } // 输出调试信息 ed.WriteMessage($"\n{entityInfo}"); } // 输出未识别对象数量 if (unrecognizedCount > 0) { ed.WriteMessage($"\n警告: 有 {unrecognizedCount} 个对象未被识别"); } return materialDict.Values.ToList(); } // 主要解析函数(块和图层) private MaterialInfo? ParseBlockAndLayerName(string blockName, string layerName) { // 1. 处理扣件 (包含900mm扣件识别) if (blockName.Contains("扣件") || layerName.Contains("扣件")) { return new MaterialInfo { Type = MaterialType.Fastener, Name = (blockName.Contains("900") || layerName.Contains("900")) ? "900mm扣件" : "标准扣件", Length = 0 }; } // 2. 处理钢踏板 (包含单片识别) if (blockName.Contains("钢踏板") || layerName.Contains("钢踏板")) { double length = ExtractLengthFromString(blockName) > 0 ? ExtractLengthFromString(blockName) : ExtractLengthFromString(layerName); return new MaterialInfo { Type = MaterialType.SteelTread, Name = (blockName.Contains("单片") || layerName.Contains("单片")) ? "单片钢踏板" : "钢踏板", Length = length }; } // 3. 增强型钢识别 if (IsSteelSection(blockName, layerName)) { double length = ExtractSteelLength(blockName, layerName); string name = "型钢"; if (blockName.Contains("工字钢连梁") || layerName.Contains("工字钢连梁")) name = "工字钢连梁"; else if (blockName.Contains("悬挑") || layerName.Contains("悬挑")) name = "悬挑型钢"; else if (blockName.Contains("90") || layerName.Contains("90")) name = "90度型钢"; else if (blockName.Contains("右45") || layerName.Contains("右45")) name = "右45°角型钢"; else if (blockName.Contains("左45") || layerName.Contains("左45")) name = "左45°角型钢"; return new MaterialInfo { Type = MaterialType.SteelSection, Name = name, Length = length }; } // 4. 其他材料类型 if (blockName.Contains("横杆") || layerName.Contains("横杆")) { double length = ExtractLengthFromString(blockName) > 0 ? ExtractLengthFromString(blockName) : ExtractLengthFromString(layerName); return new MaterialInfo { Type = MaterialType.HorizontalBar, Name = "横杆", Length = length }; } if (_diagonalBraceRegex.IsMatch(blockName) || _diagonalBraceRegex.IsMatch(layerName)) { double length = ExtractLengthFromString(blockName) > 0 ? ExtractLengthFromString(blockName) : ExtractLengthFromString(layerName); return new MaterialInfo { Type = MaterialType.DiagonalBrace, Name = "水平斜拉杆", Length = length }; } if (blockName.Contains("立杆") || layerName.Contains("立杆")) { return new MaterialInfo { Type = MaterialType.VerticalBar, Name = "立杆", Length = 0 }; } if (blockName.Contains("连墙件") || layerName.Contains("连墙件")) { double length = ExtractWallConnectorLength(blockName, layerName); return new MaterialInfo { Type = MaterialType.WallConnector, Name = "连墙件", Length = length }; } // 未识别 return null; } // 图层解析(独立对象) private MaterialInfo? ParseLayerName(string layerName) { // 1. 钢踏板 if (layerName.Contains("钢踏板")) { return new MaterialInfo { Type = MaterialType.SteelTread, Name = layerName.Contains("单片") ? "单片钢踏板" : "钢踏板", Length = ExtractLengthFromString(layerName) }; } // 2. 型钢 if (IsSteelSection("", layerName)) { double length = ExtractSteelLength("", layerName); string name = "型钢"; if (layerName.Contains("工字钢连梁")) name = "工字钢连梁"; else if (layerName.Contains("悬挑")) name = "悬挑型钢"; else if (layerName.Contains("90")) name = "90度型钢"; else if (layerName.Contains("右45")) name = "右45°角型钢"; else if (layerName.Contains("左45")) name = "左45°角型钢"; return new MaterialInfo { Type = MaterialType.SteelSection, Name = name, Length = length }; } // 3. 连墙件 if (layerName.Contains("连墙件")) { return new MaterialInfo { Type = MaterialType.WallConnector, Name = "连墙件", Length = ExtractWallConnectorLength("", layerName) }; } // 4. 扣件 if (layerName.Contains("扣件")) { return new MaterialInfo { Type = MaterialType.Fastener, Name = layerName.Contains("900") ? "900mm扣件" : "标准扣件", Length = 0 }; } return null; } private double ExtractLengthFromString(string input) { if (string.IsNullOrEmpty(input)) return 0; var match = _lengthRegex.Match(input); if (!match.Success) return 0; // 处理带单位的数字(修复分组索引错误) if (match.Groups[1].Success && double.TryParse(match.Groups[1].Value, out double result)) { string unit = match.Groups[2].Value.ToLower(); // 使用传统switch语句替代switch表达式 switch (unit) { case "米": case "m": return result * 1000; // 米转毫米 default: return result; } } // 处理纯数字(分组索引应为3) if (match.Groups[3].Success && double.TryParse(match.Groups[3].Value, out result)) return result; return 0; } // 增强型钢识别(替换or模式) private bool IsSteelSection(string blockName, string layerName) { string combined = $"{blockName} {layerName}".ToUpper(); return combined.Contains("型钢") || combined.Contains("工字钢") || combined.Contains("XCG") || combined.Contains("悬挑") || combined.Contains("90度") || combined.Contains("90°") || combined.Contains("45度") || combined.Contains("45°") || combined.Contains("角型钢"); } // 从字符串中提取长度信息 private double ExtractLengthFromString(string input) { if (string.IsNullOrEmpty(input)) return 0; var match = _lengthRegex.Match(input); if (!match.Success) return 0; // 处理带单位的数字 if (double.TryParse(match.Groups[1].Value, out double result)) { string unit = match.Groups[2].Value.ToLower(); return unit switch { "米" or "m" => result * 1000, // 米转毫米 _ => result }; } // 处理纯数字 if (double.TryParse(match.Groups[3].Value, out result)) return result; return 0; } // 提取型钢长度(优先考虑图层名) private double ExtractSteelLength(string blockName, string layerName) { // 优先从图层名提取 double length = ExtractLengthFromString(layerName); if (length > 0) return length; // 然后从块名提取 return ExtractLengthFromString(blockName); } // 提取连墙件长度 private double ExtractWallConnectorLength(string blockName, string layerName) { // 优先从图层名提取 double length = ExtractLengthFromString(layerName); if (length > 0) return length; // 然后从块名提取 return ExtractLengthFromString(blockName); } // 创建统计表格 private void CreateStatisticsTable(Document doc, List<MaterialInfo> materials, Editor ed) { Database db = doc.Database; // 获取插入点 PromptPointResult ppr = ed.GetPoint("\n请指定统计表插入点: "); if (ppr.Status != PromptStatus.OK) { ed.WriteMessage("\n未指定插入点,取消创建表格。"); return; } Point3d insertPoint = ppr.Value; using (Transaction tr = db.TransactionManager.StartTransaction()) { // 创建表格 Table table = new Table(); table.SetDatabaseDefaults(db); table.Position = insertPoint; // 设置表格尺寸 table.NumRows = materials.Count + 3; // 标题+表头+数据行+说明行 table.NumColumns = 4; // 设置列宽 table.SetColumnWidth(0, 10); // 序号 table.SetColumnWidth(1, 25); // 材料名称 table.SetColumnWidth(2, 25); // 杆件长度 table.SetColumnWidth(3, 15); // 数量 // 设置标题行 table.Cells[0, 0].Value = "外架材料统计表"; table.Cells[0, 0].Alignment = CellAlignment.MiddleCenter; table.Cells[0, 0].TextHeight = 3.0; // 合并标题行单元格 table.MergeCells(CellRange.Create(table, 0, 0, 0, 3)); // 设置表头 string[] headers = { "序号", "材料名称", "杆件长度(mm)", "数量" }; for (int i = 0; i < headers.Length; i++) { table.Cells[1, i].Value = headers[i]; table.Cells[1, i].Alignment = CellAlignment.MiddleCenter; table.Cells[1, i].TextHeight = 2.5; } // 填充数据 int row = 2; int index = 1; foreach (var material in materials.OrderBy(m => m.Type).ThenBy(m => m.Length)) { table.Cells[row, 0].Value = index++.ToString(); // 序号 table.Cells[row, 1].Value = material.Name; // 材料名称 table.Cells[row, 2].Value = material.Length > 0 ? material.Length.ToString("F0") : ""; // 杆件长度(取整) table.Cells[row, 3].Value = material.Quantity; // 数量 // 设置数据单元格样式 for (int j = 0; j < 4; j++) { table.Cells[row, j].Alignment = CellAlignment.MiddleCenter; table.Cells[row, j].TextHeight = 2.0; } row++; } // 添加说明行 table.Cells[row, 0].Value = "说明:①本表中钢踏板除单钢踏板外其余钢踏板已乘3计算数量;本表中钢踏板按一步一设计算数量。②连墙件按楼层计算数量;扣件按每根连墙件4个扣件计算数量;③本表中横杆计算数量含外侧两道护腰横杆内侧未涉及在内;本表中材料用量为预估算用量;具体实际用量按现场实际施工用量为准。"; table.Cells[row, 0].Alignment = CellAlignment.MiddleLeft; table.Cells[row, 0].TextHeight = 1.2; // 合并说明行单元格 table.MergeCells(CellRange.Create(table, row, 0, row, 3)); // 将表格添加到当前空间 BlockTable bt = tr.GetObject(db.BlockTableId, OpenMode.ForRead) as BlockTable; BlockTableRecord btr = tr.GetObject(bt[BlockTableRecord.ModelSpace], OpenMode.ForWrite) as BlockTableRecord; btr.AppendEntity(table); tr.AddNewlyCreatedDBObject(table, true); tr.Commit(); } } } } CS0111类型ScaffoldStatsCommands”已定义了一个名为“ExtractLengthFromString”的具有相同参数类型的成员
09-16
using Autodesk.AutoCAD.Runtime; using System; using System.Collections.Generic; using System.IO; using System.Linq; using System.Reflection; using SystemException = System.Exception; [assembly: ExtensionApplication(typeof(MainPluginHost.PluginLoader))] namespace MainPluginHost { public class PluginLoader : IExtensionApplication { // 包含所有需要嵌入的资源 private readonly string[] _embeddedResources = { // DLL插件 "BW.dll", "bzxl.dll", "fgbz.dll", "gjl.dll", "gtbbz.dll", "ktj.dll", "MyCadPlugin.dll", "pkbz.dll", "pmhz.dll", "pmxlg.dll", "th.dll", "tk.dll", "tyck.dll", "tytk.dll", "tzcl.dll", "wjpm.dll", "wjtj.dll", "xgbz.dll", "zs.dll" // 新增资源文件 "System thesaurus.txt", "qrcode.png" }; // 存储提取的资源路径 public static Dictionary<string, string> ExtractedResources { get; } = new Dictionary<string, string>(StringComparer.OrdinalIgnoreCase); public void Initialize() { LoadEmbeddedResources(); } public void Terminate() { // 清理临时文件 foreach (var path in ExtractedResources.Values) { try { File.Delete(path); } catch { /* 忽略清理错误 */ } } ExtractedResources.Clear(); } private void LoadEmbeddedResources() { var availableResources = Assembly.GetExecutingAssembly().GetManifestResourceNames(); int successCount = 0; var failedList = new System.Text.StringBuilder(); foreach (string resourceName in _embeddedResources) { try { string fullResourcePath = FindMatchingResource(availableResources, resourceName); if (fullResourcePath == null) { throw new FileNotFoundException($"资源未找到: {resourceName}"); } // 根据文件类型处理 string extension = Path.GetExtension(resourceName).ToLower(); switch (extension) { case ".dll": // 加载程序集 Assembly.Load(ExtractResource(fullResourcePath)); break; case ".txt": case ".png": default: // 提取到文件系统 string tempPath = ExtractToTempFile(fullResourcePath, resourceName); ExtractedResources[resourceName] = tempPath; break; } // 输出加载信息 var doc = Autodesk.AutoCAD.ApplicationServices.Application.DocumentManager.MdiActiveDocument; if (doc != null) { doc.Editor.WriteMessage($"\n✓ 已处理: {resourceName}"); } successCount++; } catch (SystemException ex) { failedList.AppendLine($"× {resourceName}: {ex.Message}"); Autodesk.AutoCAD.ApplicationServices.Application.ShowAlertDialog($"处理失败: {resourceName}\n{ex.Message}"); } } // 打印最终报告 var docFinal = Autodesk.AutoCAD.ApplicationServices.Application.DocumentManager.MdiActiveDocument; if (docFinal != null) { docFinal.Editor.WriteMessage( $"\n\n资源加载报告: {successCount}/{_embeddedResources.Length} 成功处理\n失败列表:\n{failedList}"); // 输出提取的资源路径(调试用) docFinal.Editor.WriteMessage("\n提取文件路径:"); foreach (var item in ExtractedResources) { docFinal.Editor.WriteMessage($"\n- {item.Key} → {item.Value}"); } } } // 提取资源到临时文件 private string ExtractToTempFile(string resourceName, string originalName) { // 创建临时目录 string tempDir = Path.Combine(Path.GetTempPath(), "MyCadPlugin"); Directory.CreateDirectory(tempDir); // 保持原始文件名 string fileName = Path.GetFileName(originalName); string tempPath = Path.Combine(tempDir, fileName); // 避免文件锁定冲突 if (File.Exists(tempPath)) { File.Delete(tempPath); } // 写入文件 File.WriteAllBytes(tempPath, ExtractResource(resourceName)); return tempPath; } private string FindMatchingResource(string[] allResources, string resourceName) { // 1. 精确匹配(区分大小写) string exactMatch = allResources.FirstOrDefault(r => r.EndsWith(resourceName, StringComparison.Ordinal)); if (exactMatch != null) return exactMatch; // 2. 忽略大小写匹配 string ignoreCaseMatch = allResources.FirstOrDefault(r => r.EndsWith(resourceName, StringComparison.OrdinalIgnoreCase)); if (ignoreCaseMatch != null) return ignoreCaseMatch; // 3. 使用文件名匹配(忽略路径差异) string fileNameOnly = Path.GetFileName(resourceName); string fileNameMatch = allResources.FirstOrDefault(r => r.EndsWith(fileNameOnly, StringComparison.OrdinalIgnoreCase)); return fileNameMatch; } private byte[] ExtractResource(string resourceName) { using (Stream stream = Assembly.GetExecutingAssembly().GetManifestResourceStream(resourceName)) { if (stream == null) { throw new FileNotFoundException($"资源流为空: {resourceName}"); } byte[] buffer = new byte[stream.Length]; stream.Read(buffer, 0, buffer.Length); return buffer; } } } // 资源访问器示例 public static class ResourceAccessor { // 获取文本资源内容 public static string GetThesaurusText() { if (PluginLoader.ExtractedResources.TryGetValue("System thesaurus.txt", out string path)) { return File.ReadAllText(path); } throw new FileNotFoundException("词典文件未加载"); } // 获取图像资源路径(可直接用于AutoCAD界面) public static string GetQrCodeImagePath() { if (PluginLoader.ExtractedResources.TryGetValue("qrcode.png", out string path)) { return path; } throw new FileNotFoundException("二维码图像未加载"); } } } 1、主程序已加载的嵌入插件 AutoCAD 菜单实用工具 已加载。 ✓ 已加载: BW.dll ✓ 已加载: bzxl.dll ✓ 已加载: fgbz.dll ✓ 已加载: gjl.dll ✓ 已加载: gtbbz.dll ✓ 已加载: ktj.dll ✓ 已加载: MyCadPlugin.dll ✓ 已加载: pkbz.dll ✓ 已加载: pmhz.dll ✓ 已加载: pmxlg.dll ✓ 已加载: th.dll ✓ 已加载: tk.dll ✓ 已加载: tyck.dll ✓ 已加载: tytk.dll ✓ 已加载: tzcl.dll ✓ 已加载: wjpm.dll ✓ 已加载: wjtj.dll ✓ 已加载: xgbz.dll ✓ 已加载: zs.dll 插件加载完成: 19个程序集加载成功*取消* REGEN 命令: *取消* FileTab COMMANDLINE 忠利模架CAD插件 未知命令“忠利模架CAD插件”。按 F1 查看帮助。 但以下功能命令根本用不了型钢布置=XCG;连墙件布置=LQJ;型钢+连墙件替换=SCF;删除重叠=SCDEL 2、手动加载时加载时日志显示问题 命令: NETLOAD 无法加载程序集。错误详细信息: Autodesk.AutoCAD.Runtime.Exception: eDuplicateKey 在 Autodesk.AutoCAD.Runtime.CommandClass.AddCommand(ICommandLineCallable ca, MethodInfo mi) 在 Autodesk.AutoCAD.ApplicationServices.AutoCADApplicationHolder.Initialize(Assembly assembly) 在 Autodesk.AutoCAD.ApplicationServices.ExtensionLoader.ProcessAssembly(Assembly assembly)
最新发布
10-17
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值