分类
用技术指标进行交易

NewZigzag指标

为什么选择OnCalculate(…,开盘,最高,最低,收盘)?
首先OnCalculate是所有价格计算处理函数,其次此处我们要写的是一个取当日最高价和最低价中值的折线指标。选择带有最高价(&high[])和最低价(&low[])参数的OnCalculate更合适。

Python - Draw zigzag trendline of stock prices

menglongbor 于 2020-12-14 17:55:32 发布 172 收藏

In Python, to draw a zigzag trendline of stock prices, you need to first find the peak and valley values of the chart. This can be done by using NewZigzag指标 scipy.signal.argrelextrema() function. Then, you have to combine them together and sort them in chronological order. After this, you end up forming a zigzag trendline. The code below show you how to draw a zigzag trendline of Apple stock prices. It NewZigzag指标 is assumed that you have the following libraries installed on your computer:

  • numpy: pip install numpy
  • matplotlib: pip install matplotlib
  • pandas: pip install pandas
  • scipy: pip install scipy

The code

Output

apple.csv sample data

About the author

Xuan Ngo is the NewZigzag指标 founder of OpenWritings.net. He currently lives NewZigzag指标 in Montreal, Canada. He loves to write about programming and open source subjects.

NewZigzag指标

Best Collection of MT4 & MT5 Indicators

Profitable Trading Signals for All Markets

Shved Supply and Demand Zones

Shved Supply and Demand Zones for MT5

Buy Sell Levels

Buy Sell Levels Indicator for MT5

Fibo Pivot V2 Indicator

Fibo Pivot V2 Indicator

Price Heatmap Indicator

Price Heatmap V1 05 Indicator

4️⃣ Top 10 MT4 Indicators

5️⃣ Top 10 MT5 Indicators

2️⃣ Top Trading NewZigzag指标 NewZigzag指标 Systems for MT4 & MT5

Top Trading System for MT4 & MT5

Favourite free MT4 and MT5 indicators all in one place for more successful trading 📈

MQL5:写一个简单的自定义指标

森林猩 于 2020-03-06 17:24:17 发布 2980 收藏 12

MQL5:写一个简单的自定义指标

在这里将写一个 取当日最高价和最低价中值的折线 的指标 作为演示(结尾有可运行的完整代码)。

写指标一般可以概述为如下步骤:
1.新建自定义指标项目
2.代码部分
2.1 NewZigzag指标 设置指标属性
2.2 定义数据存放的数组
2.3 在初始化函数 NewZigzag指标 OnInit中设置数组映射
2.4 在OnCalculate函数中,编写绘制指标的算法

1.新建自定义指标项目。

在编辑器中,点击左上角的 新


然后在 向导 中 选择 自定义指标。

在这里插入图片描述

填写 自定义指标 的名字和 作者信息
在模板选择中选择 OnCalculate(…,开盘,最高,最低,收盘)

为什么选择OnCalculate(…,开盘,最高,最低,收盘)? NewZigzag指标
首先OnCalculate是所有价格计算处理函数,其次此处我们要写的是一个取当日最高价和最低价中值的折线指标。选择带有最高价(&high[])和最低价(&low[])参数的OnCalculate更合适。

在这里插入图片描述


然后点击下一步,下一步不选择独立窗口,最后点击完成

在得到的my_indicator.mq5中可以看到已经生成的模板

到这步就已经完成了自定义指标的第一步准备。

2.代码部分

2.1 设置指标属性

使用语句 **#property identifier value **来设置指标属性。

#property
每个mql5-程序都允许指定额外的名为#property的特殊参数,有助于客户端不用启动程序就能够进行贴切的互联网服务。首先,它包括指标外部设置。包括文件中描述的属性完全忽略。属性必须在mql5-主文件中指定。
该部分写在全局,
具体代码和释义如下:

在这里插入图片描述

指标的颜色名称在 MQL5帮助文档里有
例如:网页颜色

2.2 定义数据存放的数组
2.3 在初始化函数 OnInit中设置数组映射
2.4 在OnCalculate函数中,编写绘制指标的算法

这个算法就是简单的(最高价+最低价)/2 。代码如下。
注意要先检查循环的变量值,若忽略该部分,可能导致画不出指标 。

在这里插入图片描述

NewZigzag指标
到此,就完成了一个简单指标的编写。
完整代码,放在这

基于后缀数组的LCP

这里写图片描述

设h[i]=H[rank[i]],我们发现,h[i]>=h[i-1]-1!这难道是巧合吗?不是的,我们可以证明得到:(k是SA[rank[i-1]-1],也就是排序过后i-1的前一个)

①当h[i-1]>1时
因为h[i-1]>1,说明至少有2个匹配到了。我们现在把第一个删除,就可以得到后缀k+1和i,那么后缀k+1肯定在i前面。显然SA[rank[k+1]]SA[rank[i]]之间所有的后缀的前h[i-1]-1位是和k+1和i一样的(想一想,为什么)。又因为SA[rank[k+1]]SA[rank[i]]的最长公共前缀是最小的h,所以每一个h都>=h[i-1]-1,由此得到h[i]>=h[i-1]-1。

这里写图片描述

下面给出示意图:

基于哈希的LCP

比如这样的一个字符串(len为5),我们构造一个H(i)表示i~len哈希值:
abcde (ASCII码为97 98 99 100 101)

(毕竟是哈希……Base乱取即可)
有一个问题就是素数怎么取比较好?刘汝佳大神表示可以放在unsigned long long里让H自然溢出,就不需要特别选个素数了。

定义Hash(i,len)为从i位开始,向右推len位(包括i)的哈希值,不难发现:
H a s h ( i , l e n ) = H ( i ) − H ( i + l e n ) ∗ x l e n Hash(i,len)=H(i)-H(i+len)*x^ H a s h ( i , l e n ) = H ( i ) − H ( i + l e n ) ∗ x l e n