技术指标

无延迟PSAR锯齿线指标:MetaTrader 5的完美选择
MetaTrader5
无延迟PSAR锯齿线指标:MetaTrader 5的完美选择

什么是无延迟PSAR锯齿线?无延迟PSAR锯齿线与大家熟悉的传统锯齿线有所不同。传统锯齿线主要用于突出市场的历史波动,并在确认下一个波动时会延迟一定的时间。这种指标是基于价格行为的,而延迟和重绘的指标并不适合实时信号的检测。在趋势跟随指标中,锯齿线的使用并不常见,更常用于分析历史的转折点,以预测未来的价格走势。无延迟锯齿线的优势不过,这款锯齿线可不一样。它是一种动态、基于趋势的无延迟锯齿线,能够即时反映到当前的K线。我将它基于SAR趋势算法开发,它是一个没有延迟的趋势跟随指标。过去也有基于PSAR的趋势跟随锯齿线,但这些指标通常会产生延迟和无效的波动。为什么要用一个基于无延迟趋势算法的锯齿线去做延迟的锯齿线呢?这对我来说显然是不合逻辑的。因此,我决定创造出这个零延迟的锯齿线。工作原理为了保持波动的有效性,使用了回溯步骤。当寻找高点时,它会在定义的回溯输入中找到最高点;同样地,在寻找低点时,它也会找到最低点。这意味着每段的结束有时会在高点或低点处摆动,或者在最近的支撑或阻力位上。尽管PSAR在震荡市场中表现不佳,但作为一种趋势跟随指标,它的表现还是相当不错的。这款锯齿线结构是代码中最相关的部分,设计上力求简洁、高效和可维护。我希望大家能欣赏这项工作和实验。更新版本v1 — 波动连接来自K线的高点或低点,或者通过回溯找到的支撑和阻力。v2 — 严格连接波动点到K线高低点(尽可能多)。v3 — 包含前向步骤逻辑,以提供对锯齿线的最终控制。

2025.04.01
MetaTrader 5 中的斐波那契之锯齿指标设置指南
MetaTrader5
MetaTrader 5 中的斐波那契之锯齿指标设置指南

指标设置 要设置斐波那契锯齿指标,我们需要: 1 个锯齿图形 2 个数据缓冲区用于存储高点和低点 输入参数 一组系统变量,指标重新计算时会重置 代码示例: #property indicator_buffers 2 #property indicator_plots 1 input double retracement=23.6; //回撤比例 input double minSizeInAtrUnits=0.0; //波动最小尺寸 input int rollingAtrPeriod=14; //滚动 ATR 周期 input color Color=clrDodgerBlue; //波动颜色 input int Width=3; //波动宽度 input ENUM_LINE_STYLE Style=STYLE_SOLID; //波动样式 //--- 上升波动和下降波动 double upWaves[], dwWaves[]; upWaves 数组将存储高点,dwWaves 数组将存储低点。 系统变量: 我们需要跟踪最后的波动类型、开始和结束位置、起始和结束的柱数距离。 另外,我们还需要本地高点和低点变量,以及每个点的柱数距离。 //--- 记录锯齿波动状态 int wave_type=0; //波动类型 [0] 无 [1] 上升 [2] 下降 double wave_start_price=0.0; //波动开始价格 double wave_end_price=0.0; //波动结束价格 int wave_start_distance=0; //开始价格到当前的柱数距离 int wave_end_distance=0; //结束价格到当前的柱数距离 double high_mem=0.0; //高点跟踪 int distance_from_high=0; //距离高点的柱数 double low_mem=0.0; //低点跟踪 int distance_from_low=0; //距离低点的柱数 double rollingAtr=0.0; //滚动 ATR int rollingAtrs=0; //已计算的滚动 ATR 最后,我们需要定义一个系统重置函数: void resetSystem(){ ArrayFill(upWaves,0,ArraySize(upWaves),0.0); ArrayFill(dwWaves,0,ArraySize(dwWaves),0.0); wave_type=0; wave_start_price=0.0; wave_end_price=0.0; wave_start_distance=0; wave_end_distance=0; high_mem=0.0; low_mem=0.0; distance_from_high=0; distance_from_low=0; rollingAtr=0.0; rollingAtrs=0; } 标准操作,填充数组为零并重置系统变量。 在初始化时,我们设置缓冲区、绘图并第一次调用重置函数: SetIndexBuffer(0, upWaves, INDICATOR_DATA); SetIndexBuffer(1, dwWaves, INDICATOR_DATA); PlotIndexSetDouble(0, PLOT_EMPTY_VALUE, 0.0); PlotIndexSetInteger(0, PLOT_DRAW_TYPE, DRAW_ZIGZAG); PlotIndexSetInteger(0, PLOT_LINE_COLOR, 0, Color); PlotIndexSetInteger(0, PLOT_LINE_WIDTH, Width); PlotIndexSetInteger(0, PLOT_LINE_STYLE, Style); resetSystem(); 现在让我们深入计算部分。 首先,我们需要处理滚动 ATR。 在收集的柱数未超过 ATR 周期之前,我们不会进行其他操作。 管理滚动 ATR 的代码如下: 如果未收集超过周期的柱数,则继续将找到的柱数范围添加到总和中 一旦达到周期,进行第一次除法(平均) 之后,减去滚动 ATR 的一部分,并添加新的一部分 我们将最后一部分放在前面,因为它会更频繁地发生,避免访问两个 if 语句。 代码如下: //--- 管理 ATR rollingAtrs++; if(rollingAtrs>rollingAtrPeriod){ double new_portion=((high[i]-low[i])/_Point)/((double)rollingAtrPeriod); rollingAtr=(rollingAtr)-(rollingAtr/((double)rollingAtrPeriod))+new_portion; } else if(rollingAtrs=minSizeInAtrUnits){ wave_type=1; wave_start_price=low_mem; wave_start_distance=distance_from_low; wave_end_price=high[i]; wave_end_distance=0; dwWaves[i-wave_start_distance]=low_mem; upWaves[i]=high[i]; high_mem=high[i]; distance_from_high=0; low_mem=low[i]; distance_from_low=0; } } //--- 如果突破低点而未突破高点 else if(low[i]<low_mem&&high[i]<=high_mem){ double new_wave_size_in_atr_units=((high_mem-low[i])/_Point)/rollingAtr; if(new_wave_size_in_atr_units>=minSizeInAtrUnits){ wave_type=-1; wave_start_price=high_mem; wave_start_distance=distance_from_high; wave_end_price=low[i]; wave_end_distance=0; upWaves[i-wave_start_distance]=high_mem; dwWaves[i]=low[i]; high_mem=high[i]; distance_from_high=0; low_mem=low[i]; distance_from_low=0; } } //--- 如果突破高低点 else if(low[i]<low_mem&&high[i]>high_mem){ high_mem=high[i]; low_mem=low[i]; distance_from_high=0; distance_from_low=0; } } 非常好,最后一块内容。 如果我们有上升波: 如果产生新高,则将锯齿线从之前的高点位置移动到新高点,并更新低点和低点的距离。 如果产生新低,或设定新的低点,则计算从高点到低点的距离并将其除以波动大小,并乘以 100 以匹配输入参数规模。 相关代码如下: if(wave_type==1){ //--- 如果波动向上扩展 if(high[i]>wave_end_price){ upWaves[i-wave_end_distance]=0.0; upWaves[i]=high[i]; wave_end_price=high[i]; wave_end_distance=0; high_mem=high[i]; distance_from_high=0; low_mem=low[i]; distance_from_low=0; } //--- 检查回撤 if(low[i]<low_mem||distance_from_low==0){ low_mem=low[i]; distance_from_low=0; double size_of_wave=(wave_end_price-wave_start_price)/_Point; double size_of_retracement=(wave_end_price-low_mem)/_Point; if(size_of_wave>0.0){ double retraced=(size_of_retracement/size_of_wave)*100.0; double new_wave_size_in_atr_units=((wave_end_price-low_mem)/_Point)/rollingAtr; if(new_wave_size_in_atr_units>=minSizeInAtrUnits){ if(retraced>=retracement){ wave_type=-1; wave_start_price=high[i-distance_from_high]; wave_start_distance=distance_from_high; wave_end_price=low[i]; wave_end_distance=0; upWaves[i-wave_start_distance]=high_mem; dwWaves[i]=low[i]; high_mem=high[i]; distance_from_high=0; low_mem=low[i]; distance_from_low=0; } } } } 当我们有下降波时,处理方法是反的。 至此,我们的回撤锯齿指标就完成了。 下面是回撤比例为 23.6% 和波动最小尺寸为 0.0 的锯齿图: 而这是同样的锯齿图,波动最小尺寸为 3:

2025.03.03
自动缩放Zigzag指标:MetaTrader 5交易者的必备工具
MetaTrader5
自动缩放Zigzag指标:MetaTrader 5交易者的必备工具

大家好!今天我们来聊聊自动缩放Zigzag指标,这是一个在MetaTrader 5平台上非常实用的工具,尤其适合那些喜欢波段交易的朋友们。 这个Zigzag指标能够基于设定的步长,识别新的波段顶底点。其灵敏度由一个叫做“缩放”的输入参数控制,这个参数会影响指标对价格变化的响应速度。 步长定义了价格变动的最小幅度,只有当价格波动超过这个幅度时,当前波段的方向才会发生反转。换句话说,它决定了价格变动需要达到的阈值,才能算作波段方向的变化。 传统的Zigzag指标使用“深度”参数来定义波段反转所需的最小价格柱数,而这个指标则更关注价格的实际变动。不过,尽管有所不同,但它们的功能非常相似,都是在确认新的波段之前,保持波动的延续性。因此,这个指标非常适合用来进行波段分析。 需要注意的是,这个指标是由Evgeniy Chumakov将MT4指标转换而来的,原始的MT4指标可以在这里找到:https://www.mql5.com/en/code/54274 当你提高缩放值时,指标对价格变化的敏感度就会增加,这意味着会有更多的Zigzag点出现,尤其是在缩放值较高的情况下。 默认的缩放输入值为1.0,主要针对货币对进行设计。对于XAUUSD,可以从3000的缩放输入开始,然后逐步调整。对于BTCUSD,则可以从25000的缩放输入开始尝试。 对于其他类型的市场,可能需要通过反复试验来找到合适的起始缩放值。希望这篇文章能对大家的交易有所帮助!

2025.03.03
MT5交易助手:提升您的交易分析能力
MetaTrader5
MT5交易助手:提升您的交易分析能力

MT5交易助手指标是一款基于三种标准指标的多时间框架指标:随机振荡器(Stochastic)、相对强弱指数(RSI)和商品通道指数(CCI)。它能够显示M1、M5、M15、M30、H1、H4、D1、W1和MN1等多个时间框架的当前趋势方向。使用这个指标,您可以清晰地把握各个重要时间框架的趋势,无论您将其应用于哪个时间框架,都能获得有效的分析。此指标可供MT4和MT5用户下载使用。 输入参数 CheckCandle(默认 = Previous)— 用于检查指标值的蜡烛图,适用于显示和预警。 PercentK(默认 = 8)— 随机指标%K线的计算周期(以柱数为单位)。 PercentD(默认 = 3)— 随机指标%D线的计算周期(以柱数为单位)。 Slowing(默认 = 3)— 随机指标的减速值。 RSIP1(默认 = 14)— 第一个RSI(快速)的计算周期。 RSIP2(默认 = 70)— 第二个RSI(慢速)的计算周期。 Enable(默认 = false/true)— 如果为true,则MT5交易助手会根据指定时间框架计算并显示信号。 EnableNativeAlerts(默认 = false)— 如果为true,当某些时间框架的信号发生重叠时,将使用MetaTrader原生弹出警报。 EnableEmailAlerts(默认 = false)— 如果为true,当某些时间框架的信号重叠时,将发送电子邮件通知。请确保在MetaTrader中通过工具->选项->电子邮件正确配置电子邮件。 EnablePushAlerts(默认 = false)— 如果为true,当某些时间框架的信号重叠时,将发送推送通知。请确保在MetaTrader中通过工具->选项->通知正确配置通知。 其他参数— 用于趋势方向箭头和颜色的符号代码。

2025.02.04
总能量指标MT5:提升交易决策的利器
MetaTrader5
总能量指标MT5:提升交易决策的利器

总能量指标(MetaTrader指标)——基于两个标准指标——熊市力量和牛市力量。该指标计算在指定回溯期内有多少看涨和看跌的K线,并依此计算当前K线的多头、空头及总能量的比例指数(总能量为多头和空头的绝对差值)。通过这种方式,我们可以获得相对平均的熊市和牛市力量的连续线条,弥补了原始熊市/牛市力量指标缺乏长期视角的主要缺陷。总能量指标MT4版本由Daniel Fernandez于2011年在Asirikuy创建,而现在MT5版本也已上线。 输入参数 回溯期(默认 = 45)——指标的主要回溯期。决定了向回查看多少K线以计算多头/空头主导的数量。 力量周期(默认 = 10)——原始熊市力量和牛市力量指标的周期。 在100力量时提醒(默认 = false)——如果设置为true,当牛市或熊市力量达到100时,将发出提醒。这是一个强烈的超买/超卖信号,通常预示着趋势反转。 交叉时提醒(默认 = false)——如果设置为true,当牛市和熊市力量线交叉时,将发出提醒。 启用本地提醒(默认 = false)——如果设置为true,将在上述两种条件下使用MetaTrader的本地弹窗提醒。 启用邮件提醒(默认 = false)——如果设置为true,在提醒条件触发时会发送邮件。邮件需在MetaTrader中通过工具->选项->邮件进行正确配置。 启用推送提醒(默认 = false)——如果设置为true,在提醒条件触发时会发送推送通知。通知需在MetaTrader中通过工具->选项->通知进行正确配置。 触发蜡烛(默认 = 上一根)——发出提醒的蜡烛:上一根——最近关闭的蜡烛,或当前——尚未完成的蜡烛。 总能量指标的工作方式类似于其他振荡器类型指标: 一种最可靠的入场方法(尽管不常见)是等待牛市或熊市力量线达到100的值,然后进行反转交易。 熊市和牛市线的交叉也可用于入场交易。如果牛市线在上方——做多;如果熊市线在上方——做空。 牛市或熊市线与总能量线的交叉可用于保守地退出交易。

2025.02.03
TD Sequential Ultimate:提升MetaTrader 5交易效率的强大指标
MetaTrader5
TD Sequential Ultimate:提升MetaTrader 5交易效率的强大指标

TD Sequential Ultimate指标是由传奇技术分析师汤姆·德马克(Tom DeMark)开发的TD Sequential方法的完整展示。这个指标不仅能显示买入和卖出的设置,还包含设置完美的箭头、买入和卖出倒计时,甚至包括失败的13次尝试的计数,以及TDST支撑和阻力水平。与许多其他TD Sequential方法的实现不同,该指标提供了多项改进。 输入参数 计算 MaxBars(默认 = 1000) — 计算TD Sequential所需的最大柱数。设为零表示指标将计算所有可用的柱数。数字越大,指标的运行速度越慢。 显示 BuySetupColor(默认 = clrLime) — 买入设置计数和完美箭头的颜色。 SellSetupColor(默认 = clrRed) — 卖出设置计数和完美箭头的颜色。 CountdownColor(默认 = clrOrange) — 倒计时值的颜色。 FontFace(默认 = "Verdana") — 计数所用的字体。 FontSize(默认 = 12) — 计数所用的字体大小。 ArrowWidth(默认 = 2) — 设置完美的箭头大小。 PixelDistance(默认 = 3) — 计数对象之间的垂直距离(单位:像素)。 Prefix(默认 = "TDS_") — 图表对象命名的文本前缀。 警报设置 AlertOnSetup(默认 = false) — 当买入/卖出设置完成(计数#9打印)时触发警报。 AlertOnPerfecting(默认 = false) — 当买入/卖出设置完美时(出现箭头)触发警报。 AlertOnCount13(默认 = false) — 当倒计时蜡烛#13出现时触发警报。 AlertOnSupportResistance(默认 = false) — 当蜡烛收盘高于阻力或低于支撑时触发警报。 AlertNative(默认 = false) — 如果为 true,则每次触发警报事件时将发出本地弹窗警报。 AlertEmail(默认 = false) — 如果为 true,则警报将通过电子邮件发送。电子邮件需在MetaTrader中通过 工具->选项->电子邮件进行正确配置。 AlertNotification(默认 = false) — 如果为 true,则警报将通过推送通知发送到您的移动设备。您需要在MetaTrader中通过 工具->选项->通知设置MetaQuotes ID,以确保此功能正常工作。

2025.02.03
MT5点差指标:实时监控交易成本
MetaTrader5
MT5点差指标:实时监控交易成本

MT5点差指标——在图表主窗口中显示当前的点差。您可以根据需要调整字体参数、指标位置以及点差值的规范化。该指标会在每个tick后重新绘制,确保您获取到最新、最活跃的点差值。这对于使用浮动点差或点差经常扩大的交易商尤其有用。您还可以选择在当前买入价附近显示点差标签。该指标适用于MT4和MT5。 输入参数说明 UseCustomPipSize(默认 = false)——如果设置为 true,点差大小将基于 DecimalPlaces 输入参数,否则将使用经纪商的默认点差大小。 DecimalPlaces(默认 = 0)——每个点的十进制位数。例如,如果点差为“0.0001”,则该值为“4”。 AlertIfSpreadAbove(默认 = 0)——如果大于零,当点差超过指定值时,将发出一个或多个定义的警报。 AlertNative(默认 = true)——如果设置为 true,将使用本机弹出警报。 AlertSound(默认 = false)——如果设置为 true,将播放声音警报。 AlertEmail(默认 = false)——如果设置为 true,警报将通过电子邮件发送。请确保在MetaTrader中正确配置电子邮件,路径为 工具 -> 选项 -> 邮件。 AlertNotification(默认 = false)——如果设置为 true,警报将通过推送通知发送到您的移动设备。请确保在MetaTrader中正确配置通知,路径为 工具 -> 选项 -> 通知。 DrawLabel(默认 = false)——如果设置为 true,将在买入价附近绘制一个小文本标签,显示当前点差值。 font_color(默认 = 红色)——点差指标的颜色。 font_size(默认 = 14)——点差指标的字体大小。 font_face(默认 = "Arial")——点差指标的字体。 corner(默认 = ANCHOR_LEFT_UPPER)——点差指标在图表上的位置。 spread_distance_x(默认 = 10)——指标距离角落的水平距离。 spread_distance_y(默认 = 130)——指标距离角落的垂直距离。 DrawTextAsBackground(默认 = false)——如果设置为 true,将以背景形式绘制点差值文本标签。这在您希望防止指标遮挡图表时非常有用。 label_font_color(默认 = 红色)——点差标签的颜色。 label_font_size(默认 = 13)——点差标签的字体大小。 label_font_face(默认 = "Courier")——点差标签的字体。

2025.02.03
首页 上一页 2 3 4 5 6 7 8 9 10 11 12 下一页 末页