指标名称:艾略特波浪预测 Elliott Wave Prophet
版本:MT4 ver. 2.0
Elliott Wave Prophet ,艾略特波浪预测指标是一款创新的外汇指标,旨在帮助进行波浪分析,并基于已形成的波浪来一定程度上预测未来的价格走势。Elliott Wave Prophet 可以应用于所有货币对和所有时间周期。
Elliott Wave Prophet 指标特点
-
平台:Metatrader4
-
货币对:任意
-
交易时间:全天候
-
时间周期:任意
在实际操作中,使用波浪分析的交易者通常会面临一些挑战,其中主要困难是确定波浪周期和结构。为了简化交易者或波浪分析师的工作,我们开发了这款特殊的指标——Elliott Wave Prophet。虽然不应过高估计这种工具的能力,但在某些分析阶段,这类波浪指标确实可以提供重要的帮助。
Elliott Wave Prophet 可以在图表上显示已形成的波浪,并不仅限于此。它还能够为潜在的价格走势提供一些指导,涵盖了冲击波和调整波。该指标能够识别特定的波浪周期,并标示出关键水平。
艾略特波浪指标有一个内置设置,通过它可以绘制或延伸当前波浪线到未来。利用该线的预测水平,我们可以设置止损并进行预测。
Elliott Wave Prophet 指标安装步骤
-
将 MQL4 文件夹复制到 Metatrader4 的 “打开数据文件夹” 目录中。
-
重启 MT4。
-
选择图表,点击菜单栏的 “插入” - “指标” - “自定义”,然后选择 Elliott Wave Prophet 指标,或使用我们提供的模板 “Elliott Wave Prophet Indicator”。
-
选择 Elliott Wave Prophet 后,会弹出设置窗口,在此您可以调整一些参数。例如,DrawFirstLines 参数可以设置从第几波开始绘制。同时,您还可以设置波浪的颜色和成熟度等。
如果交易者对自动生成的波浪不满意,他也可以手动设置初始条件。只需按照波浪的顺序,将波浪拖动到图表上交易者认为有明确结构的部分,然后指标会自动生成可能的价格变动方案。
Elliott Wave Prophet 指标使用建议
波浪分析可以有多种方式进行。一个可能的操作步骤是:交易者先对波浪结构进行目测判断,然后再使用该波浪指标进行比对。因此,无论波浪分析师的训练程度和经验如何,Elliott Wave Prophet 指标都可以在市场动态分析中起到重要的辅助作用。
Elliot Wave Prophet 外汇指标的设置非常简单。进入指标设置后,我们可以更改以下参数。
-
DrawFirstLines: 让我们使用斐波那契数来改变艾略特波浪外汇指标在过去数据上形成的波浪数。
-
PaintedColor: 这让我们可以改变固定波浪的颜色。
-
ProphetColor: 这让我们可以改变未来预测波的指示颜色。
部分代码展示:
//+----------------------------------------------------------------------+
//| Elliott Wave Prophet.mq4 |
//| Copyright © 2009-2024, www.QChaos.com |
//| https://www.qchaos.com/ |
//+------------------------------------------------------------------+
#property copyright "Copyright © 量化混沌, www.qchaos.com"
#property link "https://www.qchaos.com"
#property version "2.0"
#property description "---------------------------------------------"
#property description "EA、指标公式分享"
#property description "EA、指标编写业务承接"
#property description "---------------------------------------------"
#property description "更多资源,关注公众号:量化程序"
#property description "微 信:QChaos001"
#property description "手机号:134-8068-5281"
#property description "---------------------------------------------"
#property indicator_chart_window
double gda_76[200];
int gia_80[9];
double gda_84[9];
extern int DrawFirstLines = 3;
extern color PaintedColor = Blue;
extern color ProphetColor = Red;
int gi_100 = 12;
string gs_unused_104 = "";
string gs_dummy_112;
double g_point_120;
int g_count_128 = 49;
int gi_132;
bool gi_144 = TRUE;
bool gi_148 = FALSE;
//+------------------------------------------------------------------+
//| |
//+------------------------------------------------------------------+
void update_high(double &ada_0[], int ai_4)
{
for(int li_8 = ai_4 + 1; li_8 < ai_4 + 100; li_8++)
if(ada_0[li_8] != 0.0)
break;
if(ada_0[li_8] == High[li_8])
{
if(High[ai_4] > High[li_8])
ada_0[li_8] = 0;
if(High[ai_4] < High[li_8])
ada_0[ai_4] = 0;
}
}
//+------------------------------------------------------------------+
//| |
//+------------------------------------------------------------------+
void update_low(double &ada_0[], int ai_4)
{
for(int li_8 = ai_4 + 1; li_8 < ai_4 + 100; li_8++)
if(ada_0[li_8] != 0.0)
break;
if(ada_0[li_8] == Low[li_8])
{
if(Low[ai_4] < Low[li_8])
ada_0[li_8] = 0;
if(Low[ai_4] > Low[li_8])
ada_0[ai_4] = 0;
}
}
//+------------------------------------------------------------------+
//| |
//+------------------------------------------------------------------+
void update_fractals_one(double &ada_0[], int ai_4, int ai_8, bool ai_12 = TRUE)
{
int li_16 = is_fractal(ai_8, ai_4);
if(li_16 == 0)
ada_0[ai_8] = 0;
if(li_16 == 1)
{
ada_0[ai_8] = High[ai_8];
if(ai_12)
update_high(ada_0, ai_8);
}
if(li_16 == 2)
{
ada_0[ai_8] = Low[ai_8];
if(ai_12)
update_low(ada_0, ai_8);
}
}
//+------------------------------------------------------------------+
//| |
//+------------------------------------------------------------------+
int deinit()
{
int l_objs_total_0;
Comment("");
string l_name_4 = "";
bool li_12 = TRUE;
while(li_12)
{
li_12 = FALSE;
l_objs_total_0 = ObjectsTotal();
for(int li_16 = 0; li_16 < l_objs_total_0; li_16++)
{
l_name_4 = ObjectName(li_16);
if(StringFind(l_name_4, "Wave") != -1)
{
ObjectDelete(l_name_4);
li_12 = TRUE;
}
}
}
return (0);
}
//+------------------------------------------------------------------+
//| |
//+------------------------------------------------------------------+
int is_fractal(int ai_0, int ai_4)
{
int li_8 = 1;
int l_count_12 = 0;
int l_count_16 = 0;
while(li_8 < ai_4)
{
if(High[ai_0] > High[ai_0 + li_8])
{
if(ai_0 - li_8 >= 0)
if(High[ai_0] > High[ai_0 - li_8])
l_count_12++;
}
if(Low[ai_0] < Low[ai_0 + li_8])
{
if(ai_0 - li_8 >= 0)
if(Low[ai_0] < Low[ai_0 - li_8])
l_count_16++;
}
li_8++;
}
if(l_count_12 == ai_4 - 1)
return (1);
if(l_count_16 == ai_4 - 1)
return (2);
return (0);
}