旗舰版6.1.0.1版本绘制水平线,30分钟6K后生成水平线,编制以下代码,未等能正常编译显示,请高手没看看什么问题。
Vars:
Bool drawn(False); // 标记是否已绘制
NumericArray highs[6](0); // 存储6个高点
Numeric i; // 循环变量
Numeric today(0); // 当前交易日
Begin
today = GetTradingDay(); // 获取当前交易日
// 新交易日重置标记
If (today != today[1]) Then
Begin
drawn = False;
End;
// 开盘30分钟后且Bar已结束时执行
If (Not drawn And Time >= 093000 And BarStatus == 2) Then
Begin
// 获取前6根K线的高点
For i = 0 To 5
Begin
highs[i] = High[i];
End;
drawn = True; // 标记为已绘制
End;
// 绘制水平线(持续绘制)
If (drawn) Then
Begin
For i = 0 To 5
Begin
PlotHorzLine(
highs[i], // Y轴数值
"HL_" + Text(today) + "_" + Text(i), // 唯一名称
ColorRed, // 颜色
1, // 线宽
0, // 线型(实线)
false, // 不延长
"HighLines" // 分组名称
);
End;
End;
End
第一,你这也不是旗舰版语法,旗舰版没有那么多begin end 只有一对
第二,旗舰版没有plothorzline这个函数,也没有if then这种写法,你说旗舰版能用,我严重怀疑。
水平线在quant版本是由作图课程里说过的,直播过怎么画,可以看一下学习。
用DeepSeek AI 回答的。我只是转抄,你自己验证。老师看这个回到如何。
----------------------------------------------------
你的代码逻辑基本正确,但在语法和逻辑细节上存在一些问题,导致无法正常编译或运行。以下是修正后的代码,并附上问题分析和改进建议:
pascal
复制
Vars:
Bool drawn(False); // 标记是否已绘制
NumericArray highs[6](0); // 存储6个高点
Numeric i; // 循环变量
Numeric today(0); // 当前交易日
Begin
today = GetTradingDay(); // 获取当前交易日
// 新交易日重置标记
If (today != today[1]) Then
Begin
drawn = False;
End;
// 开盘30分钟后且Bar已结束时执行
If (Not drawn And Time >= 093000 And BarStatus == 2) Then
Begin
// 获取前6根K线的高点
For i = 0 To 5
Begin
highs[i] = High[i];
End;
drawn = True; // 标记为已绘制
End;
// 绘制水平线(持续绘制)
If (drawn) Then
Begin
For i = 0 To 5
Begin
PlotHorzLine(
highs[i], // Y轴数值
"HL_" + Text(today) + "_" + Text(i), // 唯一名称
ColorRed, // 颜色
1, // 线宽
0, // 线型(实线)
False, // 不延长
"HighLines" // 分组名称
);
End;
End;
End
修正后的代码可以正常编译和运行,能够实现开盘30分钟后绘制前6根K线高点的水平线。如果仍有问题,请检查平台API的兼容性,并确保数据足够。
自己如果看不懂建议不要发上来了。