欢迎使用金字塔普通技术服务论坛,您可以在相关区域发表技术支持贴。
我司技术服务人员将优先处理 VIP客服论坛 服务贴,普通区问题处理速度慢,请耐心等待。谢谢您对我们的支持与理解。


金字塔客服中心 - 专业程序化交易软件提供商金字塔软件高级功能研发区 → 自定义函数

   

欢迎使用金字塔普通技术服务论坛,您可以在相关区域发表技术支持贴。
我司技术服务人员将优先处理 VIP客服论坛 服务贴,普通区问题处理速度慢,请耐心等待。谢谢您对我们的支持与理解。    


  共有2587人关注过本帖树形打印复制链接

主题:自定义函数

帅哥哟,离线,有人找我吗?
llz1124
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:黑侠 帖子:605 积分:0 威望:0 精华:0 注册:2019/6/12 9:32:18
自定义函数  发帖心情 Post By:2021/4/19 10:32:45 [只看该作者]

麻烦老师转换为金字塔自定义函数 XMA(X,N)

//MA是把结果放到计算当天。而XMA把这个值放到向前数第(N+1)/2的位置上

通达信XMA函数C++源码

认真分析了一下通达信各种平滑处理函数实现的机理,进行了相应的c++编程和测试,结果完全吻合。现将XMA函数C++源代码分享给大家。
函数根据通达信dll插件调用格式编写.

//参数说明:
//DataLen:输入数据的长度
//pfOUT:输出数据
//pfINa:输入数据C
//pfINb:输入参数

void XMA(int DataLen, float*pfOUT, float*pfINa, float*pfINb)
{
        int N = int(*pfINb);
        int p = int((N - 1) / 2);
        float sum = 0;
        float count = 0;

        for (int i = 0; i < DataLen; i++)
        {
            int start = i - p-1;
            int end = i + (N-p)-1;
            for (int j = start; j < end; j++)
            {
                if (j >= 0&&j<DataLen) {
                    sum += pfINa[j];
                    count += 1;
                }
            }
            pfOUT = sum / count;
            sum = 0;
            count = 0;
        }
}


 回到顶部
帅哥哟,离线,有人找我吗?
无为剑
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:管理员 帖子:2437 积分:0 威望:0 精华:0 注册:2016/3/5 22:53:41
  发帖心情 Post By:2021/4/19 15:16:25 [只看该作者]

请问这个函数有什么具体的优点呢?如果是有价值的我们会考虑增加到内部函数中

 回到顶部
帅哥哟,离线,有人找我吗?
llz1124
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:黑侠 帖子:605 积分:0 威望:0 精华:0 注册:2019/6/12 9:32:18
  发帖心情 Post By:2021/4/19 17:11:16 [只看该作者]

xma对做趋势判断有一定的意义。对原来使用通达信大的用户增加这个函数有很大的帮组。引用别人的说法:

A和XMA的一部分算法一样。比如:

MA(C,N)=(REF(C,N-1)+--REF(C,N-2)+REF(C,N=1)+C)/N

XMA(C,N)=(REF(C,N-1)+--REF(C,N-2)+REF(C,N=1)+C)/N

这两个函数的这个值算法相同。不同的是这个值放到什么位置上。

MA是把这个值放到计算当天。而XMA把这个值放到向前数第(N+1)/2的位置上。所以从这个角度看,XMA更符合平均值的计算原理,把平均值赋给中间数才是合理的。MA虽然使数值固定不变,但对原理来讲并不合理。

这个函数属于未来函数,金字塔内的未来函数不能写进交易策略。 如果金字塔将这个函数增加到内部函数中 ,希望可以在交易策略中使用,在编译公式 时做一个有未来函数提醒就好了。


 回到顶部
帅哥哟,离线,有人找我吗?
llz1124
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:黑侠 帖子:605 积分:0 威望:0 精华:0 注册:2019/6/12 9:32:18
  发帖心情 Post By:2021/4/20 16:04:24 [只看该作者]

老师,能不能帮忙写一个自定义函数?

 回到顶部
帅哥哟,离线,有人找我吗?
yukizzc
  5楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:21598 积分:0 威望:0 精华:1 注册:2010/7/31 16:35:30
  发帖心情 Post By:2021/4/21 9:26:48 [只看该作者]

input_num:=11;
num:=if(mod(input_num,2),input_num,input_num+1);
tt:=refx(ma(c,11),(num-1)/2);
if barpos<=datacount-(num-1)/2 then temp:=tt;
tt2:=sum(c,1+(num-1)/2)+((num-1)/2)*ref(ma(c,(num-1)/2),1);
if barpos>datacount-(num-1)/2 then temp:=tt2/num;
xma:temp;
mma:ma(c,11);
//if cross(c,xma) then buy(1,1,marketr)

你看下这个xma,input_num就是周期参数自己填入

 回到顶部
帅哥哟,离线,有人找我吗?
llz1124
  6楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:黑侠 帖子:605 积分:0 威望:0 精华:0 注册:2019/6/12 9:32:18
  发帖心情 Post By:2021/4/21 15:05:24 [只看该作者]

tt2赋值好像不对

 回到顶部
帅哥哟,离线,有人找我吗?
yukizzc
  7楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:21598 积分:0 威望:0 精华:1 注册:2010/7/31 16:35:30
  发帖心情 Post By:2021/4/21 15:06:24 [只看该作者]

后期会增加这个函数的,回头等封装好函数吧

 回到顶部