下午。批评。一天并不总是固定的蜡烛数。就您的情况而言 - 检查 M15 的 96 根蜡烛的数据并不总是正确的。有时您可以使用另一天的数据。
Tapochun:
下午。批评。一天并不总是固定的蜡烛数。就您的情况而言 - 检查 M15 的 96 根蜡烛的数据并不总是正确的。有时您可能会进入另一天的数据。
谢谢您的意见,我自己还没有遇到过这种情况,因为我已经放弃了每日 TL,转而进行日内交易(我看的是 4 小时、小时和 M15)。但总的来说,我得仔细看看这种情况。
下午。批评。一天并不总是固定的蜡烛数。就您的情况而言 - 检查 M15 的 96 根蜡烛的数据并不总是正确的。有时您可能会进入另一天的数据。
Almat Kaldybay:
感谢您的评论,我自己确实没有遇到过这种情况,因为我已经放弃了每日 TL,转而进行日内交易(我关注 4 小时、1 小时和 m15)。但总的来说,我们必须仔细观察一下情况。
任何 TF 都是如此,不一定是 M15。问题是,如果您要寻找一天内的顶部/底部,例如前一天,您不应该依赖于固定的蜡烛数,最好是依赖于时间:从前一天的开盘(在这种情况下,从开盘到当天的开盘(第一根蜡烛,其时间可能不是 00.00)。
感谢您的评论,我自己确实没有遇到过这种情况,因为我已经放弃了每日 TL,转而进行日内交易(我关注 4 小时、1 小时和 m15)。但总的来说,我们必须仔细观察一下情况。
Tapochun:
这适用于任何 TF,不一定是 M15。问题是,如果您要寻找一天内的顶部/底部,例如前一天,您就不应该依赖于固定的蜡烛数,最好是依赖于时间:从前一天的开盘(在这种情况下,从开盘到当天的开盘(第一根蜡烛,其时间可能不是 00.00)。
这适用于任何 TF,不一定是 M15。问题是,如果您要寻找一天内的顶部/底部,例如前一天,您就不应该依赖于固定的蜡烛数,最好是依赖于时间:从前一天的开盘(在这种情况下,从开盘到当天的开盘(第一根蜡烛,其时间可能不是 00.00)。
刚才我在 mql4 上编写一个 EA,想起了您的批评。虽然在实践中没有遇到过这种情况,但我还是决定将其排除在外。解决方案如下:
//1.2 确定极值之后的横杠 int UpperFractal_1_base_next=UpperFractal_1_base-1; int UpperFractal_2_base_next=UpperFractal_2_base-1; int LowerFractal_1_base_next=LowerFractal_1_base-1; int LowerFractal_2_base_next=LowerFractal_2_base-1; //1.3 确定分形形成的时间 datetime UpFractalTime_1_base=iTime(NULL,base_tf,UpperFractal_1_base); datetime UpFractalTime_2_base=iTime(NULL,base_tf,UpperFractal_2_base); datetime LowFractalTime_1_base=iTime(NULL,base_tf,LowerFractal_1_base); datetime LowFractalTime_2_base=iTime(NULL,base_tf,LowerFractal_2_base); //1.4 确定极值之后的横杠时间 datetime UpFractalTime_1_base_next=iTime(NULL,base_tf,UpperFractal_1_base_next); datetime UpFractalTime_2_base_next=iTime(NULL,base_tf,UpperFractal_2_base_next); datetime LowFractalTime_1_base_next=iTime(NULL,base_tf,LowerFractal_1_base_next); datetime LowFractalTime_2_base_next=iTime(NULL,base_tf,LowerFractal_2_base_next); //1.5 在 m15 上确定分形柱打开时间的柱形指数 int UpperFractal_1_m15_base=iBarShift(NULL, 15, UpFractalTime_1_base,true); int UpperFractal_2_m15_base=iBarShift(NULL, 15, UpFractalTime_2_base,true); int LowerFractal_1_m15_base=iBarShift(NULL, 15, LowFractalTime_1_base,true); int LowerFractal_2_m15_base=iBarShift(NULL, 15, LowFractalTime_2_base,true); //1.6 为极值之后的条形图确定 m15 上的条形图指数 int UpperFractal_1_m15_base_next=iBarShift(NULL, 15, UpFractalTime_1_base_next,true); int UpperFractal_2_m15_base_next=iBarShift(NULL, 15, UpFractalTime_2_base_next,true); int LowerFractal_1_m15_base_next=iBarShift(NULL, 15, LowFractalTime_1_base_next,true); int LowerFractal_2_m15_base_next=iBarShift(NULL, 15, LowFractalTime_2_base_next,true); //1.7 计算 m15 上的柱状分形与下一个柱状分形之间的柱状数 int UpperFractal_1_m15_NumBars_base=(UpperFractal_1_m15_base-UpperFractal_1_m15_base_next); int UpperFractal_2_m15_NumBars_base=(UpperFractal_2_m15_base-UpperFractal_2_m15_base_next); int LowerFractal_1_m15_NumBars_base=(LowerFractal_1_m15_base-LowerFractal_1_m15_base_next); int LowerFractal_2_m15_NumBars_base=(LowerFractal_2_m15_base-LowerFractal_2_m15_base_next); // --- 第 2 阶段 --- 完善极值 //2.1 第一个最小分形 int Bar_1_Lowest_m15_base=iLowest(NULL,PERIOD_M15,MODE_LOW,LowerFractal_1_m15_NumBars_base,LowerFractal_1_m15_base_next); datetime Time_1_Lowest_m15_base=iTime(NULL,PERIOD_M15,Bar_1_Lowest_m15_base); double Price_1_Lowest_m15_base=iLow(NULL,PERIOD_M15,Bar_1_Lowest_m15_base); //2.2 对于第二小分形 int Bar_2_Lowest_m15_base=iLowest(NULL,PERIOD_M15,MODE_LOW,LowerFractal_2_m15_NumBars_base,LowerFractal_2_m15_base_next); datetime Time_2_Lowest_m15_base=iTime(NULL,PERIOD_M15,Bar_2_Lowest_m15_base); double Price_2_Lowest_m15_base=iLow(NULL,PERIOD_M15,Bar_2_Lowest_m15_base); //2.3 第一大分形 int Bar_1_Highest_m15_base=iHighest(NULL,PERIOD_M15,MODE_HIGH,UpperFractal_1_m15_NumBars_base,UpperFractal_1_m15_base_next); datetime Time_1_Highest_m15_base=iTime(NULL,PERIOD_M15,Bar_1_Highest_m15_base); double Price_1_Highest_m15_base=iHigh(NULL,PERIOD_M15,Bar_1_Highest_m15_base); //2.4 为第二大分形 int Bar_2_Highest_m15_base=iHighest(NULL,PERIOD_M15,MODE_HIGH,UpperFractal_2_m15_NumBars_base,UpperFractal_2_m15_base_next); datetime Time_2_Highest_m15_base=iTime(NULL,PERIOD_M15,Bar_2_Highest_m15_base); double Price_2_Highest_m15_base=iHigh(NULL,PERIOD_M15,Bar_2_Highest_m15_base);
Almat Kaldybay:
虽然我在实践中没有遇到过这种情况,但我还是决定将其排除在外。
例如,今天打开货币对 GBPUSD/EURUSD M5,第一根蜡烛在 00:05 打开。如果我们将 288 根蜡烛线与 M15 进行类比,我们将获得另一天的数据。
诚然,这是 MT5...在 MT4(MetaQuotes-Demo 服务器)上 - 同样,在另一家经纪商上,从 00:00 开始,所以...一切都是个别的,您仍然需要检查。
你好、
我没有得到如上图所示的趋势线。
有什么特殊设置吗?
Hairi Baba:
您好,也许您没有 M15 的历史数据。
你好、
我没有看到如上图所示的趋势线。
有什么特殊设置吗?
嗨,阿尔马特、
我没有在图表中看到趋势线,但我收到了连续的移动警报。如果我错过了什么,请帮助我。
谢谢,
Prakash.R
prakki79:
你好,阿尔马特、
我没有在图表中看到趋势线,但我收到了连续的移动警报。如果我错过了什么,请帮助我。
谢谢,
Prakash.R
您好、
1.您需要在元编辑器中编译 mq4 文件;
2. 我认为图表中有趋势线,但由于图表的比例问题,您看不到它们
您好,请告诉我如何在 mt4 中安装智能交易系统。我下载了trendlines.mq4 文件, 将其编译后连同源代码一起发送到 mql4/Indicators 文件夹,重新加载了终端,尝试将指标附加到图表上,但没有任何反应。我做错了什么?
新文章 使用MQL4和MQL5绘制基于分形指标的趋势线已发布:
本文介绍一种使用MQL4和MQL5语言,自动绘制基于分形指标趋势线的方法。本文以比较的视角,提供两种语言的解决方案。使用最近的两个分形来绘制趋势线。
近,我一直在考虑如何使用趋势线。如何选择绘制趋势线的点以及绘制的精确度一直是个问题。我决定使用分形来作为基础。
我的 主要工作是分析市场,也能花些时间来做交易。你不能仅仅在长时间框架下绘制趋势线,应能够通过极点精确到15分钟图表上。原因是长时间框架上的分形时间并 不总是等于M15上的极值点的时间。简而言之,自动化在此能够派上用场。我开始用MQL5编写代码然后移植到MQL4上,因为我需要程序运行于 MetaTrader 4。
在本文中,我将以MQL4和MQL5两种语言来呈现问题的解决方案。虽然在本文中对两种语言进行了比较,但并不是为了对比MQL4和MQL5的执行效率。 当然我也意识到可能有比我更好的解决方法。本文对使用MQL4或MQL5编写脚本的初学者有帮助,尤其是那些计划使用分形和趋势线的朋友。
. 确定分形的价格和时间
要绘制趋势线,我们需要确定分形的时间和价格。当然,在MQL4中我们可以简单的使用High[]和Low[]预定义时间序列变量,以及iTime()函数,然而我们也需要获取更为精确的坐标来确保绘制趋势线的准确性。
图1-2显示了H4和M15时间框架下极点时间的差别。
图1. H4图表上的极点时间。
图2. M15图表上的极点时间
作者:Almat Kaldybay