技术指标

EquiPeak 回撤追踪器 - MetaTrader 5 指标解析
MetaTrader5
EquiPeak 回撤追踪器 - MetaTrader 5 指标解析

EquiPeak 回撤追踪器的用途 EA表现的直观参考:手动输入您的策略已知或预计的历史最大回撤(例如,通过回测或以往结果得出的数据)。这样,您就能清晰地判断EA的表现是否在正常范围内,或是遇到了意外情况。 实时风险监控:您可以实时监控当前回撤,查看是否超过了需要立即关注的关键水平。 智能详细通知:当设置的新回撤记录被创造时,指标会通过MetaTrader应用程序向手机发送推送通知,或根据您的设置定期发送通知,确保您获得必要的信息而不被冗余信息打扰。 自动记录:允许将回撤持续记录到外部文件(CSV或TXT格式),便于后续分析。 适合哪些人使用? 使用自动或半自动系统的交易者,希望快速了解EA是否在最大预期回撤范围内。 需要直观检查策略在实际条件下表现的用户,以对比基于以往测试的期望。 任何希望有效管理风险的交易者,能够及时了解交易是否超出可接受的范围。 详细配置指南(输入项) 以下是指标的所有可自定义参数: 监控的魔法数字(-1表示监控全部) 指定要监控的持仓魔法数字,使用 -1 来监控所有持仓。 初始最大回撤(%) 输入EA已知的历史最大回撤(例如,长期回测中获得的最高结果)。这将作为视觉参考。 刷新间隔(秒) 计算更新的频率。 最大回撤更新模式 定义历史最高值的更新方式: UPDATE_MAX_DD_IF_BIGGER:当前回撤超过已输入历史值时自动更新。 NO_UPDATE_MAX_DD:手动输入的历史值从不更新,但每60分钟发送当前状态通知。 发送推送通知? 启用或禁用手机推送通知。 固定或峰值参考? 选择如何定义余额参考: REF_FIXED_BALANCE:手动输入的固定余额。 REF_PEAK_BALANCE:始终使用达到的最大余额(自动保存)。 固定余额(0 => 当前余额) 初始固定余额。如果您使用0,则在加载指标时取当前余额。 当前回撤文本颜色 当前回撤文本的颜色。 最大回撤文本颜色 历史回撤文本的颜色。 当前回撤字体大小 当前回撤的字体大小。 最大回撤字体大小 历史回撤的字体大小。 标签放在图表后面? 将文本放在图形后面。 标签X(像素) 从左边缘的水平距离。 标签Y(像素) 从上边缘的垂直距离。 垂直间距 文本之间的垂直间隔。 在日志中打印记录? 在日志中启用详细消息。 启用文件日志 自动将当前回撤记录到外部文件。 文件扩展名(CSV或TXT) 选择生成文件的格式。 自动注册到文件 回撤值会自动记录,包括日期和时间,以CSV或TXT格式保存在MT5公共文件夹中(MetaTrader 5 Terminal/Common/Files/)。这对于后续分析结果非常理想。 获取最大效用的重要建议 始终输入预期的历史最大回撤(回测结果、以往表现等)在输入 “初始最大回撤(%)” 中。这将帮助您快速评估EA是否处于正常状态或需要调整。 将指标放在专用图表上,监控所有魔法数字,或者在每个特定图表上放置以便获取独立数据。 仔细调整刷新率、颜色、位置和文本大小,以便根据您的偏好实现最佳查看效果。 如何在手机上接收推送通知 在手机上打开MetaTrader并复制您的MetaQuotes ID(设置 > 消息)。 在MetaTrader 5桌面版本中,前往工具 > 选项 > 通知。 启用推送通知并粘贴您的MetaQuotes ID。

2025.04.14
Kuskus Starlight 指标:MetaTrader 5 的交易利器
MetaTrader5
Kuskus Starlight 指标:MetaTrader 5 的交易利器

指标名称:Kuskus Starlight 描述:Kuskus Starlight 是一款技术指标,作为振荡器运作,利用 Fisher 价格变换帮助交易者识别潜在的市场趋势和反转。该指标在指定的周期范围内进行归一化,并具有可调的平滑参数,以便根据需求调整其响应速度。交易者特别重视这款指标,因为它在交易系统中作为确认工具,帮助验证潜在的交易信号。 背景:我通过 Stonehill Forex 和 No Nonsense Forex (NNFX) 的 YouTube 频道发现了 Kuskus Starlight 指标。这两个平台都强调了它在交易系统中的确认指标作用。据 Stonehill Forex 的说法,该指标最早可以追溯到 2007 年,而 NNFX 则提到它在 2017 年发布。 如果您想更详细地了解 Kuskus Starlight 指标及其应用,可以参考以下资源: Stonehill Forex 的文章:Kuskus Starlight 作为确认指标 NNFX 的 YouTube 视频:Kuskus Starlight 指标 为什么我编写它:作为一名 MetaTrader 5 (MT5) 用户,我发现没有与 MT5 兼容的 Kuskus Starlight 指标。意识到它对 MT5 环境下交易者的潜在价值,我决定自己编写这一指标,确保其功能和完整性与原始算法一致。 原始 MT4 代码和算法:该指标的原始版本是为 MetaTrader 4 (MT4) 设计的,由 Scriptor 发布,您可以在这里找到:Kuskus Starlight - MQL4 代码库。我基于这段代码进行了 MT5 的改编,保留了其核心原则,同时让 MT5 社区能够使用。 希望这个 MT5 版本的 Kuskus Starlight 能成为您交易工具箱中的宝贵补充! 指标设置:绘图类型选项 绘图类型选项:线型 绘图类型选项:柱状图 绘图类型选项:星星夜 箭头类型选项:多种箭头类型可供选择

2025.04.14
均匀因子指标 - MetaTrader 5 的实用工具
MetaTrader5
均匀因子指标 - MetaTrader 5 的实用工具

引言大家好!今天要跟大家聊聊一个非常有趣且实用的指标——均匀因子指标。这是一款简单的分析工具(非信号型,单次计算),可以帮助我们检验价格时间序列是否呈现“随机游走”特性,尤其是高斯“随机游走”。通过这个指标,我们能够将价格变化转换为更加稳定且可预测的时间序列,至少在波动性方面是如此。随机游走的理解大家可能都知道,某个“随机游走”变量在经过N步后,其预期距离由其标准差乘以根号N(或N^0.5)来估算。指标功能这个指标计算在预定义的K线子区间内每根K线的“平均”价格变化。这里的“平均”是基于距离(到给定N的K线数量)的F次方进行计算,F的取值范围是从0.1到1,步长为0.1。当前图表上可用的所有K线都用于在最多N根K线的滑动窗口内收集统计数据。均匀性分析接下来,指标会找出在不同F值下统计数据的最“规则”的均匀分布,并为这个因子(通常是0.5或0.6,视为最佳)显示直方图。直方图的每一列代表对应交易持续时间(K线数量)的每根K线的“平均”变化量,平均方式是通过N^F来实现的(当F=1时会得到标准平均值)。该指标可以使用不同的方法自动检测统计曲线的“规律性”(平坦度):最小方差三重均值之间的最小差异(均值、中位数、众数),作为平方误差最小基尼系数优化因子的应用了解最佳因子对以下方面非常有帮助:对输入数据(价格变化)进行归一化,以便于神经网络和其他机器学习算法的使用评估在波动性交易系统中进行分析时所需的K线样本数量检测存在异常的交易品种和/或时间框架(非标准的F值或分布曲线中的奇点)输入参数Period — 用于收集价格范围统计的最大K线距离(N),默认值为200;Factor — 用于“平均”计算的指数,默认值为0(表示自动检测),你可以输入0.0到1.0之间的自定义值,例如0.525;Method — 选择均匀性估计的方法:方差、三重均值、基尼;MaxBars — 计算统计的K线限制,默认值为0(表示所有可用的K线);请注意:如果你在图表上使用无限数量或数十万根K线,计算可能会耗费一些时间。如果这是个问题,可以考虑将K线数量限制在数万根以内。输出结果该指标会显示每个距离范围内(1..Period)和所选均匀因子的每根K线的平均价格变化的蓝色直方图。同时,持续增加的K线数量(距离)作为第二个直方图(橙色)供参考。测试因子和当前时间序列相应指标的完整表格会打印在日志中。示例XAGUSD.c D1, Max.Distance: 500, Bars: 2641 Factor: 0.4, Result: var(0.4) mmm(0.4) gini(0.4)*     [factor]  [mean] [variance] [skewness] [kurtosis] [median]  [mode] [mmmse]  [gini]截图展示以下截图演示了在3个时间框架下的指标效果:D1、H1、M1。每个图表中包含2个指标实例:上面的配置为F自动检测,由基尼得出的值(在0.4和0.5之间变化)显示在标题中,以星号标记;下面的配置为预定义F=0.6;在XAGUSD,D1上的均匀因子指标在XAGUSD,H1上的均匀因子指标在XAGUSD,M1上的均匀因子指标

2025.04.07
无延迟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
首页 上一页 3 4 5 6 7 8 9 10 11 12 13 下一页 末页