文章 "掌握市场动态:创建有关支撑与阻力位策略的EA"

 

新文章 掌握市场动态:创建有关支撑与阻力位策略的EA已发布:

一个关于基于支撑位与阻力位策略开发自动化交易算法的全面指南。详细介绍了在MQL5中创建EA以及在MetaTrader 5中对其进行测试的所有方面——从分析价格区间行为到风险管理。

支撑位与阻力位策略的描述主要围绕其在交易场景中的应用。支撑位通常表示价格难以突破的下限,这表明存在集中的需求,而阻力位则表示上限,表明存在集中的供给。买家通常在支撑位进入市场,价格可能会上涨,因此这是交易者考虑买入或做多的好时机。另一方面,卖家在阻力位进入市场,价格可能会下跌,从而允许交易者卖出或做空。以下是我们所描述内容的可视化展示:

S & R

尽管有两种基本方式进行交易,但个人进入市场的时机总是动态的,并取决于每个人的偏好。一些交易者喜欢当价格跌至支撑位时买入,当价格升至阻力位时卖出。相反,其他交易者则喜欢当价格突破阻力位时买入,当价格跌破支撑位时卖出。因此,人们可以选择逆势交易突破(Fade the Break)或顺势交易突破(Trade the Break)。

作者:Allan Munene Mutiiria

 
这个策略看起来很有趣,关于代码,进入标准是什么?止损和止盈水平 是如何计算的? 谢谢。
 



我想澄清一下 "打破 "一词的用法。

按照惯例,当一个东西被打破时,它就不再起作用了。在交易中,如果一个支撑位 被突破,它的作用就有可能转变为阻力位,或者随着价格继续下行,根据价格走势而变得无效

当我认为价格 "突破 "一个价位时,它的意思是越过该价位,如果是潜在的多头,则是从低点到高点,如果是潜在的空头,则是从高点到低点。

从你使用的 "突破 "一词,我猜你的意思是 "反弹"。就你的蓝图而言,我认为 "反弹 "一词更为恰当。例如,如果价格在支撑位上方,向下移动并突破 支撑位,我认为价格会继续向下,突破支撑位。在这种情况下,我倾向于做空,因为突破 支撑位是做空的良好信号。另一方面,如果价格确实从支撑位反弹,我设想价格会从上方回落到支撑位,以某种相对的方式与支撑位相遇,然后继续上行。

 
davesarge1 止盈水平 是如何计算的? 谢谢。
         if (open1 > close1 && open1 < ResistancePriceLevel
            && high1 > ResistancePriceLevel && Bid < ResistancePriceLevel){
            Print("$$$$$$$$$$$$ SELL NOW SIGNAL!");
            obj_Trade.Sell(0.01,_Symbol,Bid,Bid+350*5*_Point,Bid-350*_Point);
         if (open1 < close1 && open1 > SupportPriceLevel
            && low1 < SupportPriceLevel && Ask > SupportPriceLevel){
            Print("$$$$$$$$$$$$ BUY NOW SIGNAL!");
            obj_Trade.Buy(0.01,_Symbol,Ask,Ask-350*5*_Point,Ask+350*_Point);
 
Kyle Young Sangster 支撑位 被突破,它的作用就有可能转变为阻力位,或者随着价格继续下行,根据价格走势而变得无效

当我认为价格 "突破 "一个价位时,它的意思是越过该价位,如果是潜在的多头,则是从低点到高点,如果是潜在的空头,则是从高点到低点。

从你使用的 "突破 "一词,我猜你的意思是 "反弹"。就你的蓝图而言,我认为 "反弹 "一词更为恰当。例如,如果价格在支撑位上方,向下移动并突破 支撑位,我认为价格会继续向下,突破支撑位。在这种情况下,我倾向于做空,因为突破 支撑位是做空的良好信号。另一方面,如果价格确实从支撑位反弹,我设想价格会从上方回落到支撑位,以某种相对的方式与支撑位相遇,然后继续上行。

好的,谢谢。

 
您好,
,请澄清有关使用 `pricesHighest` 和 `pricesLowest` 的混淆之处

这两个值是指最高价和最低价,还是指最低价和最高价?

,先此致谢。
 

在使用 ArraySetAsSeries 对数组进行修改时使用 ArraySort 的注意事项:

如果通过ArraySetAsSeries 对数组进行了修改,ArraySort 将按 DESCENDING 顺序对数组进行排序!!!
要获得 ASCENDING 顺序,请将数组传递给 ArrayReverse。这样就可以轻松获得前 10 个元素:

ArrayRemove(myArray, 10, WHOLE_ARRAY);


谢谢,祝您编码愉快。

 
Kyle Young Sangster #:


要获得按顺时针顺序排列的元素,可将数组传递给ArrayReverse。这样就可以轻松获得前 10 个元素:

ArrayRemove(myArray, 10, WHOLE_ARRAY);

谢谢,祝你编码好运。

黄色突出显示--没有混淆吗?

弗拉基米尔

 
Kyle Young Sangster #:

在使用 ArraySetAsSeries 对数组进行修改时使用 ArraySort 的注意事项:

如果通过ArraySetAsSeries 对数组进行了修改,ArraySort 将按 DESCENDING 顺序对数组进行排序!!!
要获得 ASCENDING 顺序,请将数组传递给 ArrayReverse。这样就可以轻松获得前 10 个元素:


谢谢,祝您编码愉快。

MrBrooklin#:

黄色突出显示 - 没有混淆?

敬上,弗拉基米尔。

我无法编辑我的原帖,所以在此回复。

最初的意图是从系列中获取价格最低的 n 个数。使用 ArraySetAsSeries 设置数组 "作为系列 "并使用 ArraySort 排序后,价格数组是降序排列的。根据 ArraySort 文档,我希望它们是升序。因此,我将排序后的数组通过 ArrayReverse 转换为升序。然后,我使用 ArrayRemove 删除前 n 项以外的所有内容。(在我的示例中,n = 10)。

还有什么问题吗?

谢谢您的反馈。

 
Kyle Young Sangster #:
还有什么问题吗?

我现在明白了。谢谢。

问候,弗拉基米尔。

 
Kyle Young Sangster #:

在使用 ArraySetAsSeries 对数组进行修改时使用 ArraySort 的注意事项:

如果通过ArraySetAsSeries 对数组进行了修改,ArraySort 将按 DESCENDING 顺序对数组进行排序!!!
要获得 ASCENDING 顺序,请将数组传递给 ArrayReverse。这样就可以轻松获得前 10 个元素:

如果你已经使用ArraySetAsSeries 改变了数组的逻辑方向,就没有必要再使用ArrayReverse 了--更有效、更符合逻辑的方法是再次调用ArraySetAsSeries 还原方向标志。