有人可以分享一下缠论自动画笔中枢的代码吗?文华财经的麦语言就可以,真心真心感谢你
5条回答 默认 最新
关注引自免费微信小程序:皆我百晓生
在文华财经的麦语言中,编写缠论自动画笔中枢的代码涉及到多个步骤,包括定义趋势、笔的识别、以及中枢的构建。这里我会提供一个基础的示例,这个示例仅包含一些核心逻辑,实际应用可能需要根据具体需求进行调整和优化。
首先,确保你已经理解了缠论的基本概念,比如上涨趋势、下跌趋势、笔(由三段重叠的线段构成)和中枢(至少三个重叠的笔构成)。
以下是一个基本的中枢识别的麦语言代码片段:
// 定义变量 var upTrend = 0; // 上涨趋势标记 var downTrend = 0; // 下跌趋势标记 var trend = 0; // 当前趋势 var lastHigh = 0; // 上一高点 var lastLow = 0; // 上一低点 var startBar = 0; // 笔起始bar var endBar = 0; // 笔结束bar var startCZBar = 0; // 中枢起始bar var endCZBar = 0; // 中枢结束bar // 计算高点和低点 if (Close > High) then lastHigh := Close; else if (Close < Low) then lastLow := Close; // 判断趋势 if (lastHigh > lastHigh[1]) and (trend != 1) then { trend := 1; upTrend := 1; downTrend := 0; } else if (lastLow < lastLow[1]) and (trend != -1) then { trend := -1; upTrend := 0; downTrend := 1; } // 判断笔的开始和结束 if (trend == 1) and (Close < lastHigh[1]) then { if (upTrend == 1) then startBar := BarIndex; else { trend := 0; upTrend := 0; downTrend := 0; } } else if (trend == -1) and (Close > lastLow[1]) then { if (downTrend == 1) then startBar := BarIndex; else { trend := 0; upTrend := 0; downTrend := 0; } } // 如果趋势改变,则结束当前笔 if (trend != trend[1]) then { endBar := BarIndex - 1; if (startBar != 0) { Print("Start Bar: " + startBar); Print("End Bar: " + endBar); // 检查是否形成中枢 CheckCentral(startBar, endBar); // 重置笔状态 startBar := 0; } } // 检查并标记中枢 Procedure CheckCentral(int start, int end) { var i = start + 1; while (i <= end) { if ((High[i] >= High[start]) and (Low[i] <= Low[start])) or ((High[i] <= High[start]) and (Low[i] >= Low[start])) { // 找到中枢的第一个符合条件的bar if (startCZBar == 0) then startCZBar := i; // 更新中枢的结束bar endCZBar := i; } else { // 如果不符合条件,退出循环 break; } i++; } if (startCZBar != 0) { Print("Start CZ Bar: " + startCZBar); Print("End CZ Bar: " + endCZBar); } }这段代码会输出每个笔的开始和结束位置,并尝试找到满足条件的中枢。注意,这只是一个基础版本,实际应用中可能需要处理更多边界情况,例如笔的合并、延伸等。
由于麦语言不支持图形绘制,你需要在交易软件中手动设置画线规则,以便将这些数据可视化。你可以在每个笔的开始和结束位置画出横线,在中枢的范围内画矩形或者其他形状,以此表示中枢。
如果你需要完整的代码或者有更复杂的需求,请告知我,我可以进一步帮助你。
解决 无用评论 打赏 举报 编辑记录