设为首页 收藏本站 切换语言

拉格朗日Lagrange多项式计算源代码  

| 发表于 2020-8-2 18:53:49 | 显示全部楼层 |复制链接
  1. #property indicator_chart_window
  2. #property indicator_buffers 3
  3. #property indicator_color1 SkyBlue
  4. #property indicator_color2 Crimson
  5. #property indicator_color3 Crimson
  6. //----
  7. extern int Pow=3;
  8. extern int Depth=12;точками
  9. extern int Mode=MODE_HIGH;//MODE_HIGH, MODE_LOW, MODE_CLOSE
  10. extern int TimeFrame=0;
  11. extern int Shift=10;
  12. //----
  13. double Lx[];
  14. double Lx0[];
  15. double Pnt[];
  16. int X[];
  17. double Y[];
  18. double C[];
  19. //----------------------------------------------------------- Lagrange
  20. int init()
  21. {
  22. //---- indicator line
  23. SetIndexBuffer(0,Lx); SetIndexStyle(0,DRAW_LINE);
  24. SetIndexBuffer(1,Lx0); SetIndexStyle(1,DRAW_LINE); SetIndexShift(1, Shift);
  25. SetIndexBuffer(2,Pnt); SetIndexStyle(2,DRAW_ARROW); SetIndexArrow(2, 159);
  26. ArrayResize(X, Pow); ArrayResize(Y, Pow); ArrayResize(C, Pow);
  27. return(0);
  28. }
  29. //----------------------------------------------------------- Lagrange
  30. int start()
  31. {
  32. if (Pow<=1) Pow = 2;
  33. if (Pow>=21) Pow = 20;
  34. FindPoint();
  35. Lagrange();
  36. return(0);
  37. }
  38. //----------------------------------------------------------- FindPoint
  39. void FindPoint()
  40. {
  41. int pos, pos2, pos_prev = -1;
  42. if (Depth<=0) Depth=2;
  43. int i=Depth;
  44. int n=0;
  45. while((i<Bars-Depth) && (n<Pow))
  46. {
  47. if (Mode==MODE_HIGH)
  48. {
  49. pos = iHighest(NULL,0,MODE_HIGH,2*Depth+1,i-Depth); pos2 = iHighest(NULL,0,MODE_HIGH,2*Depth+1,pos-Depth);
  50. if ((pos==pos2)&&(pos!=pos_prev))
  51. {
  52. X[n] = pos; Y[n]=High[pos]; n++;
  53. pos_prev = pos;
  54. }
  55. }
  56. if (Mode==MODE_LOW)
  57. {
  58. pos = iLowest(NULL,0,MODE_LOW,2*Depth+1,i-Depth); pos2 = iLowest(NULL,0,MODE_LOW,2*Depth+1,pos-Depth);
  59. if ((pos==pos2)&&(pos!=pos_prev))
  60. {
  61. X[n] = pos; Y[n]=Low[pos]; n++;
  62. pos_prev = pos;
  63. }
  64. }
  65. i++;
  66. }
  67. }
  68. void Lagrange()
  69. {
  70. int i, j, b;
  71. for (i = 0; i<Pow; i++)
  72. {
  73. C[i] = 1.0;
  74. for (j = 0; j<Pow; j++)
  75. if (j != i)  C[i] = C[i]*(X[i]-X[j]);
  76. C[i] = Y[i]/C[i];
  77. }
  78. int bars = X[ArrayMaximum(X)];
  79. double sx;
  80. for (b = 0; b<=bars; b++)
  81. {
  82. Lx[b] = 0.0; Pnt[b] = 0;
  83. for (i = 0; i<Pow; i++)
  84. {
  85. sx = 1;
  86. for (j = 0; j<Pow; j++)
  87. if (j != i) sx = sx*(b-X[j]);
  88. Lx[b] = Lx[b]+C[i]*sx;
  89. }
  90. }
  91. for (i = 0; i<Pow; i++) Pnt[X[i]] = Y[i];
  92. ArrayInitialize(Lx0, EMPTY_VALUE);
  93. for (b = -Shift; b<=0; b++)
  94. {
  95. Lx0[b+Shift] = 0.0;
  96. for (i = 0; i<Pow; i++)
  97. {
  98. sx = 1;
  99. for (j = 0; j<Pow; j++)
  100. if (j != i) sx = sx*(b-X[j]);
  101. Lx0[b+Shift] = Lx0[b+Shift]+C[i]*sx;
  102. }
  103. }
  104. }
复制代码
举报

评论 使用道具

精彩评论29

fxbienhild
未及格
| 发表于 2021-5-26 11:19:06 | 显示全部楼层
感谢分享
举报

点赞 评论 使用道具

ajax9999
未及格
| 发表于 2021-5-26 17:45:14 来自手机 | 显示全部楼层
谢谢分享
举报

点赞 评论 使用道具

xpian
DD
| 发表于 2021-5-27 23:57:22 来自手机 | 显示全部楼层
谢谢分享
举报

点赞 评论 使用道具

mydiis
DDD
| 发表于 2021-5-29 17:29:58 | 显示全部楼层
谢谢分享,真的不错
举报

点赞 评论 使用道具

ajax9999
未及格
| 发表于 2021-5-31 10:04:49 | 显示全部楼层
感谢分享!
举报

点赞 评论 使用道具

zhq320
DD
| 发表于 2021-11-7 08:55:03 | 显示全部楼层
感谢分享,一起进步
举报

点赞 评论 使用道具

新风向圈
DDD
| 发表于 2021-11-7 09:20:17 | 显示全部楼层
谢谢分享
举报

点赞 评论 使用道具

tianping
DDD
| 发表于 2021-11-7 14:47:14 | 显示全部楼层
感謝分享
举报

点赞 评论 使用道具

一语清清
D
| 发表于 2021-11-7 15:15:40 | 显示全部楼层
谢谢分享
举报

点赞 评论 使用道具

YHX
D
| 发表于 2021-11-7 15:23:11 来自手机 | 显示全部楼层
谢谢分享
举报

点赞 评论 使用道具

linxu
DDD
| 发表于 2021-11-8 23:23:01 | 显示全部楼层
过来学习的
举报

点赞 评论 使用道具

投汇帮-量化技术
DDD
| 发表于 2021-11-9 09:55:10 | 显示全部楼层
感謝分享資訊
举报

点赞 评论 使用道具

EA6666
D
| 发表于 2021-11-9 10:20:10 | 显示全部楼层
谢谢分享
举报

点赞 评论 使用道具

668
DDD
| 发表于 2021-11-24 12:33:24 | 显示全部楼层
感謝分享
举报

点赞 评论 使用道具

wangyang
DD
| 发表于 2021-11-24 14:02:16 | 显示全部楼层
感谢楼主分享
举报

点赞 评论 使用道具

yimu77
DDD
| 发表于 2021-11-24 16:40:12 | 显示全部楼层
感谢分享
举报

点赞 评论 使用道具

jrml
未及格
| 发表于 2022-1-26 01:11:29 来自手机 | 显示全部楼层
谢谢分享!
举报

点赞 评论 使用道具

wangyang
DD
| 发表于 2022-1-26 01:36:20 | 显示全部楼层
感谢分享!
举报

点赞 评论 使用道具

skykey3
DDD
| 发表于 2022-1-26 10:12:40 | 显示全部楼层
举报

点赞 评论 使用道具

12下一页
发新帖
EA交易
您需要登录后才可以评论 登录 | 立即注册

简体中文
繁體中文
English(英语)
日本語(日语)
Deutsch(德语)
Русский язык(俄语)
بالعربية(阿拉伯语)
Türkçe(土耳其语)
Português(葡萄牙语)
ภาษาไทย(泰国语)
한어(朝鲜语/韩语)
Français(法语)