寻找 MACD 背离
Finding MACD Divergence
我想创建一个循环来自动查找具有特定 scenario/criterion 的 MACD 背离,但我发现它很难执行,尽管在观察图表时很容易发现。注意:你可以很容易地得到这个作为现成可用的扫描仪,但我想提高我的 python 知识,希望有人能够帮助我完成这个任务。
我的主要问题是如何让它引用 40 行以上,并向前测试 - 我无法理解逻辑本身。
规则如下:假设我们有下面的table
Date
Price
MACD Hist
04/08/2021
30
1
05/08/2021
29
0.7
06/08/2021
28
0.4
07/08/2021
27
0.1
08/08/2021
26
-0.15
09/08/2021
25
-0.70
10/08/2021
26
-0.1
11/08/2021
27
0.2
12/08/2021
28
0.4
13/08/2021
29
0.5
14/08/2021
30
0.55
15/08/2021
31
0.6
16/08/2021
30
0.55
17/08/2021
29
0.5
18/08/2021
28
0.4225
19/08/2021
27
0.4
20/08/2021
26
0.35
21/08/2021
25
0.3
22/08/2021
24
0.25
23/08/2021
23
0.2
24/08/2021
22
0.15
25/08/2021
21
0.1
26/08/2021
20
0.05
27/08/2021
19
0
28/08/2021
18
-0.05
29/08/2021
17
-0.1
30/08/2021
16
-0.25
我想要代码:
从今天开始往回看40天,这40天之内最低
MACDHist 中达到的点和对应的价格(即价格 25$
本例中的 09/08/2021 和 MACDHist -0.7)
与今天的价格和 MACDHist 比较,根据以下 3 个规则判断是否背离:
- 如果今天的价格 < 点 1 中记录的价格(本例中为 16$ < 25$)并且
- 今天的 MACDHist > 点 1 中记录的绝对值 MACD (ABS(-0.7) > ABS(-0.20)) AND
- 在同一时期,我们记录了那些价格和 MACDHist(从 09/08/2021 到今天),MACDHist 至少一次为正。
如果我的解释不是很清楚,我很抱歉,因为下图可能有助于说明我所追求的场景:
A. 特定时期的Lowes MACDHist
B. 同期MACDHist至少有一次为正
C. 价格低于 A 点(价格 C 低于 A)且 MACDHist 在 A 点高于 MACDHist(即 ABS 术语较低)
在类似的情况下,我使用了 backtrader. Its a feature-rich Python framework for backtesting and trading and you can also use it in order to generate lots of predefined indicators. In addition with this framework you are able to develop your own custom indicator as shown here。它非常易于使用,并且支持许多数据格式,例如 pandas 数据帧。请看一看!
我在这个很棒的 post 中找到了答案。它不是直接实现,但至少逻辑是相同的,通过用 MACDHist 替换 RSI 信息,您可以得出相同的结论。
我想创建一个循环来自动查找具有特定 scenario/criterion 的 MACD 背离,但我发现它很难执行,尽管在观察图表时很容易发现。注意:你可以很容易地得到这个作为现成可用的扫描仪,但我想提高我的 python 知识,希望有人能够帮助我完成这个任务。
我的主要问题是如何让它引用 40 行以上,并向前测试 - 我无法理解逻辑本身。
规则如下:假设我们有下面的table
Date | Price | MACD Hist |
---|---|---|
04/08/2021 | 30 | 1 |
05/08/2021 | 29 | 0.7 |
06/08/2021 | 28 | 0.4 |
07/08/2021 | 27 | 0.1 |
08/08/2021 | 26 | -0.15 |
09/08/2021 | 25 | -0.70 |
10/08/2021 | 26 | -0.1 |
11/08/2021 | 27 | 0.2 |
12/08/2021 | 28 | 0.4 |
13/08/2021 | 29 | 0.5 |
14/08/2021 | 30 | 0.55 |
15/08/2021 | 31 | 0.6 |
16/08/2021 | 30 | 0.55 |
17/08/2021 | 29 | 0.5 |
18/08/2021 | 28 | 0.4225 |
19/08/2021 | 27 | 0.4 |
20/08/2021 | 26 | 0.35 |
21/08/2021 | 25 | 0.3 |
22/08/2021 | 24 | 0.25 |
23/08/2021 | 23 | 0.2 |
24/08/2021 | 22 | 0.15 |
25/08/2021 | 21 | 0.1 |
26/08/2021 | 20 | 0.05 |
27/08/2021 | 19 | 0 |
28/08/2021 | 18 | -0.05 |
29/08/2021 | 17 | -0.1 |
30/08/2021 | 16 | -0.25 |
我想要代码:
从今天开始往回看40天,这40天之内最低 MACDHist 中达到的点和对应的价格(即价格 25$ 本例中的 09/08/2021 和 MACDHist -0.7)
与今天的价格和 MACDHist 比较,根据以下 3 个规则判断是否背离:
- 如果今天的价格 < 点 1 中记录的价格(本例中为 16$ < 25$)并且
- 今天的 MACDHist > 点 1 中记录的绝对值 MACD (ABS(-0.7) > ABS(-0.20)) AND
- 在同一时期,我们记录了那些价格和 MACDHist(从 09/08/2021 到今天),MACDHist 至少一次为正。
如果我的解释不是很清楚,我很抱歉,因为下图可能有助于说明我所追求的场景: A. 特定时期的Lowes MACDHist B. 同期MACDHist至少有一次为正 C. 价格低于 A 点(价格 C 低于 A)且 MACDHist 在 A 点高于 MACDHist(即 ABS 术语较低)
在类似的情况下,我使用了 backtrader. Its a feature-rich Python framework for backtesting and trading and you can also use it in order to generate lots of predefined indicators. In addition with this framework you are able to develop your own custom indicator as shown here。它非常易于使用,并且支持许多数据格式,例如 pandas 数据帧。请看一看!
我在这个很棒的 post 中找到了答案。它不是直接实现,但至少逻辑是相同的,通过用 MACDHist 替换 RSI 信息,您可以得出相同的结论。