- 精华
- 20
- 在线时间
- 2981 小时
- UID
- 4
- 积分
- 22709
- 帖子
- 4802
- 阅读权限
- 255
- 注册时间
- 2007-7-20
- 最后登录
- 2024-1-15
- 精华
- 20
- UID
- 4
- 积分
- 22709
- 帖子
- 4802
- 主题
- 64
- 阅读权限
- 255
- 注册时间
- 2007-7-20
- 最后登录
- 2024-1-15
|
使用环境:
基本数据源为1分钟,通过DataConvert可以转化为对应的5分钟数据,有些朋友希望能够在1分钟图里面取道5分钟的数据的均线,效果要和单独使用5分钟的均线一样。为此,提供以下函数。
1、新建一个用户函数,TransMinsData,返回值为数值型。
参数1:要计算的数据源。
参数2:想按N分钟来处理,本例是5分钟,不能大于60。
参数3:希望取多少个N分钟前的数据。- Params
- NumericSeries Price(1);
- Numeric nMinSet(5);
- Numeric MinsAgo(2);
- Vars
- NumericSeries barCnt;
- NumericSeries MinData;
- Numeric i;
- Numeric j;
- Numeric nIndex(0);
- Begin
- If(IntPart(Minute%nMinSet)==0)
- {
- barCnt = 1;
- }Else
- {
- barCnt = barCnt[1] + 1;
- }
- MinData = Price;
-
- If(MinsAgo == 0)
- {
- return MinData;
- }Else
- {
- For i = 1 To MinsAgo
- {
- If( i == 1)
- {
- j = 0;
- }Else
- {
- j = j + BarCnt[j];
- }
- If (j > CurrentBar ) Return InvalidNumeric;
- nIndex = nIndex + BarCnt[j];
- }
- Return MinData[nIndex];
- }
- End
复制代码 2、新建一个技术指标,用来举例说明如何使用该函数。
本例是取5分钟的均值((O+H+L+C)/4)的10周期移动平均。- Params
- Numeric Length(10);
- Vars
- Numeric MyOpen;
- Numeric MyHigh;
- Numeric MyLow;
- Numeric MyClose;
- NumericSeries MyAvgPrice;
-
- Numeric SumValue(0);
- Numeric Value1;
- Numeric i;
- Begin
- MyOpen = DataConvert(Open,"min",5,"Open");
- MyHigh = DataConvert(High,"min",5,"High");
- MyLow = DataConvert(Low,"min",5,"Low");
- MyClose = DataConvert(Close,"min",5,"Close");
- MyAvgPrice = (MyOpen+MyHigh+MyLow+MyClose)*0.25;
-
- For i = Length-1 DownTo 0
- {
- Value1 = TransMinsData(MyAvgPrice,5,i);
- SumValue = SumValue + Value1;
- }
- PlotNumeric("AvgPrice",SumValue/Length);
- End
复制代码 |
-
总评分: 威望 + 5
查看全部评分
|