
绘制支撑/阻力位的方法
简介
支撑/阻力位几乎是所有交易者采用的基本工具。大多数预测中都可以见到这些位置,每个交易者必须能够独立找出。
本文描述了用于检测支撑/阻力位的简单脚本的创建过程。由于面向的对象为初学者,你可以找到过程中每个阶段的详细解释。然而,尽管脚本非常简单,本文对于高级交易者和MetaTrader 4 平台用户也非常有帮助。其中包含了数据导出至表格格式、表格导入 Microsoft Excel 和绘制便于更加详细分析图表的示例。
支撑/阻力位
以下可见两个支撑/阻力位。
可以在下图中找到佐证。
这种计算并不很难。因此,我们在每个价格和交叉该价格的柱的数量之间建立关联。现在我们的问题是显示这些结果。在 MetaTrader 中使用指标图无法实现,因为我们并不需要时间上的价格图,而是价格上的柱形图。这就是我们需要导出数据并在其他不同程序中分析的原因。
创建脚本
首先,我们必须创建新的脚本。
为此,前往“导航器”窗口并在“脚本”区右击并选择“创建”命令。将显示新的窗口。确保要创建的程序类型为脚本,然后单击“下一步”按钮。
然后根据要求输入脚本名称和参数。单击“完成”按钮后,可以开始编写脚本。
编写脚本
脚本的源代码不超过二十行:
//+------------------------------------------------------------------+ //| ExportLevels.mq4 | //| Copyright © 2006, MetaQuotes Software Corp. | //| https://www.metaquotes.net | //+------------------------------------------------------------------+ #property copyright "Copyright © 2006, MetaQuotes Software Corp." #property link "https://www.metaquotes.net" #property show_inputs extern int MaxLimit = 1000; //+------------------------------------------------------------------+ //| script program start function | //+------------------------------------------------------------------+ int start() { int handle; handle = FileOpen("FindLevels.txt", FILE_CSV|FILE_WRITE, '\t'); FileWrite(handle, "Cost", "Bars Num"); double d1 = Low[iLowest(NULL, 0, MODE_LOW, MaxLimit, 0)]; double d2 = High[iHighest(NULL, 0, MODE_HIGH, MaxLimit, 0)]; for (double d = d1; d d2; d += 0.0001) { double a = 0.0; for(int i = 0; i MaxLimit; i++) if(d > Low[i] && d High[i]) a+=1; FileWrite(handle, d, a); } FileClose(handle); return(0); } //+------------------------------------------------------------------+
脚本仅包含一个函数,start()。每次调用脚本时都会运行。在下面可以看到源代码的详细解释:
#property show_inputs extern int MaxLimit = 1000;
第一行表明,在运行脚本之前,要求用户选择外部参数。实际上,在第二行定义了一个单一参数。MaxLimit 涉及程序使用的历史柱的数量。默认为 1000,但用户可以随时更改。
int handle; handle = FileOpen("FindLevels.txt", FILE_CSV|FILE_WRITE, '\t'); FileWrite(handle, "Cost", "Bars Num");
start() 函数的前两行负责打开含有参数 FILE_CSV(意味着文件为文本表格)和 FILE_WRITE(意味着文件打开以进行编写)的“FindLevels.txt”文件。‘\t’参数表示文件中的数字将以表格分割。文件中会有两列,第一列是“成本” - 价格,第二列是“柱数” - 交叉该价格的柱的数量。使用 FileWrite() 函数,我们在“FindLevels. txt”文件中写下列的名称。
double d1 = Low[iLowest(NULL, 0, MODE_LOW, MaxLimit, 0)]; double d2 = High[iHighest(NULL, 0, MODE_HIGH, MaxLimit, 0)];
然后我们从零柱到具有记录中 MaxLimit 数量的柱找到最高和最低价格。iLowest() 显示了最低价格所在的柱的索引。Low[] 是该柱的最低价格值。对于 iHighest() 和 High[],遵循相同的步骤。
for (double d = d1; d <= d2; d += 0.0001) { double a = 0.0; for(int i = 0; i < MaxLimit; i++) if(d > Low[i] && d < High[i]) a+=1; FileWrite(handle, d, a); }
之后,我们得到“for”循环。该循环以 0.0001 的步长从最低价 d1 运行至最高价 d2。变量‘a’是交叉价格“d”的柱的数量。第二个封闭的循环运行 MaxLimit 记录柱并检验是否交叉价格“d”。在封闭循环结束后,FileWrite 过程将价格“d”和柱的数量“a”写入文件。
FileClose(handle); return(0);
在 start() 过程结束后,关闭文件并用 return() 函数结束该过程。编写脚本后,可以单击“编译”按钮进行编译,并从 MetaTrader“导航器”窗口的“脚本”区运行。
Excel 文件
调用脚本后,程序在“\experts\files\”文件夹创建“FindLevels.txt”文件。用 Excel 将其打开。为此,我们必须调用 Microsoft Excel 并单击“打开”按钮,然后选择“文本文件”文件类型,找到我们需要的文件并单击“打开”按钮。
在前两个窗口中,我们并不需要做任何更改,只需单击“下一步”按钮。
在第三个窗口,单击“高级”按钮,选择点符号(“.”)作为小数点和 '(撇号)作为千分位。然后单击“确定”和“结束”。
于是,我们在 Excel 得到两列。现在我们得绘制图表。选择 插入->“图表”。
最后需要做的是选择期货图表类型及其显示类型。
最终我们得到价格上的柱形图。
可以看到图表的最小值位于 1.2582、1.2616、1.2644、1.2705、1.2712、1.2730、1.2744、1.2850、1.2879 点。这些是支撑/阻力位。
我们可以对比 2006 年 11 月 10 日的结果和前一日期 10 月 9 日的结果。2006:
RES 4 $1.2880 八月三十一日最高值
RES 3 $1.2865 1.618 从 1.2795 跌至 1.2680 后的摆动目标
RES 2 $1.2830 斐波纳契 76.4% 从 1.2940 至 1.2485
RES 1 $1.2805 小时阻力位
当前位:1.2760
SUP 1 $1.2745 3 周的上涨趋势线
SUP 2 $1.2730 斐波纳契 61.8% 从 1.2680 至 1.2820
SUP 3 $1.2715 斐波纳契 76.4% 从 1.2680 至 1.2820
SUP 4 $1.2680 十一月三日的最低值
如上所示,图表和预测值之间有着非常好的关联。意味着我们找到的位置是真正的支撑/阻力位。
本文由MetaQuotes Ltd译自俄文
原文地址: https://www.mql5.com/ru/articles/1439
注意: MetaQuotes Ltd.将保留所有关于这些材料的权利。全部或部分复制或者转载这些材料将被禁止。
This article was written by a user of the site and reflects their personal views. MetaQuotes Ltd is not responsible for the accuracy of the information presented, nor for any consequences resulting from the use of the solutions, strategies or recommendations described.
