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

NB_SHI_Channel  

| 发表于 2020-8-7 09:13:46 | 显示全部楼层 |复制链接
  1. #property indicator_chart_window
  2. #property indicator_buffers 4
  3. #property indicator_color1 Red
  4. //#property indicator_color2 Green
  5. //#property indicator_color3 Green
  6. //#property indicator_color4 Green
  7. double buf1[];
  8. double buf2[];
  9. double buf3[];
  10. double ExtMapBuffer1[];
  11. //---- input parameters
  12. extern int       AllBars=240;
  13. extern int       BarsForFract=0;
  14. int CurrentBar=0;
  15. double Step=0;
  16. int B1=-1,B2=-1;
  17. int UpDown=0;
  18. double P1=0,P2=0,PP=0;
  19. int i=0,AB=300,BFF=0;
  20. int ishift=0;
  21. double iprice=0;
  22. datetime T1,T2;
  23. //+------------------------------------------------------------------+
  24. //| Custom indicator initialization function                         |
  25. //+------------------------------------------------------------------+
  26. int init()
  27.   {
  28. //---- indicators
  29.    SetIndexStyle(0,DRAW_ARROW);
  30.    SetIndexArrow(0,164);
  31.    SetIndexBuffer(0,ExtMapBuffer1);
  32.    SetIndexEmptyValue(0,0.0);
  33.    SetIndexStyle(1,DRAW_LINE);
  34.    SetIndexBuffer(1,buf1);
  35.    SetIndexStyle(2,DRAW_LINE);
  36.    SetIndexBuffer(2,buf2);
  37.    SetIndexStyle(3,DRAW_LINE);
  38.    SetIndexBuffer(3,buf3);
  39. //----
  40.    return(0);
  41.   }
  42. //+------------------------------------------------------------------+
  43. //| Custor indicator deinitialization function                       |
  44. //+------------------------------------------------------------------+
  45. int deinit()
  46.   {
  47. //----
  48. //----
  49.    return(0);
  50.   }
  51. //+------------------------------------------------------------------+
  52. //|                                                                  |
  53. //+------------------------------------------------------------------+
  54. void DelObj()
  55.   {
  56.    ObjectDelete("TL1");
  57.    ObjectDelete("TL2");
  58.    ObjectDelete("MIDL");
  59.   }
  60. //+------------------------------------------------------------------+
  61. //| Custom indicator iteration function                              |
  62. //+------------------------------------------------------------------+
  63. int start()
  64.   {
  65.    //  if( Time[0]>= StrToTime("2005.8.19 06:00")) return(0);
  66.    int    counted_bars=IndicatorCounted();
  67. //----
  68.    if ((AllBars==0) || (Bars<AllBars)) AB=Bars; else AB=AllBars;
  69.    if (BarsForFract>0)
  70.       BFF=BarsForFract;
  71.    else
  72.      {
  73.       switch(Period())
  74.         {
  75.          case 1: BFF=12; break;
  76.          case 5: BFF=48; break;
  77.          case 15: BFF=24; break;
  78.          case 30: BFF=24; break;
  79.          case 60: BFF=12; break;
  80.          case 240: BFF=15; break;
  81.          case 1440: BFF=10; break;
  82.          case 10080: BFF=6; break;
  83.          default: DelObj(); return(-1); break;
  84.         }
  85.      }
  86.    CurrentBar=2;
  87.    B1=-1; B2=-1; UpDown=0;
  88.    while(((B1==-1) || (B2==-1)) && (CurrentBar<AB))
  89.      {
  90.       if((UpDown<1) && (CurrentBar==Lowest(Symbol(),Period(),MODE_LOW,BFF*2+1,CurrentBar-BFF)))
  91.         {
  92.          if(UpDown==0) { UpDown=-1; B1=CurrentBar; P1=Low[B1]; }
  93.          else { B2=CurrentBar; P2=Low[B2];}
  94.         }
  95.       if((UpDown>-1) && (CurrentBar==Highest(Symbol(),Period(),MODE_HIGH,BFF*2+1,CurrentBar-BFF)))
  96.         {
  97.          if(UpDown==0) { UpDown=1; B1=CurrentBar; P1=High[B1]; }
  98.          else { B2=CurrentBar; P2=High[B2]; }
  99.         }
  100.       CurrentBar++;
  101.      }
  102.    if((B1==-1) || (B2==-1)) {DelObj(); return(-1);}
  103.    Step=(P2-P1)/(B2-B1);
  104.    P1=P1-B1*Step; B1=0;
  105.    ishift=0; iprice=0;
  106.    if(UpDown==1)
  107.      {
  108.       PP=Low[2]-2*Step;
  109.       for(i=3;i<=B2;i++)
  110.         {
  111.          if(Low[i]<PP+Step*i) { PP=Low[i]-i*Step; }
  112.         }
  113.       if(Low[0]<PP) {ishift=0; iprice=PP;}
  114.       if(Low[1]<PP+Step) {ishift=1; iprice=PP+Step;}
  115.       if(High[0]>P1) {ishift=0; iprice=P1;}
  116.       if(High[1]>P1+Step) {ishift=1; iprice=P1+Step;}
  117.      }
  118.    else
  119.      {
  120.       PP=High[2]-2*Step;
  121.       for(i=3;i<=B2;i++)
  122.         {
  123.          if(High[i]>PP+Step*i) { PP=High[i]-i*Step;}
  124.         }
  125.       if(Low[0]<P1) {ishift=0; iprice=P1;}
  126.       if(Low[1]<P1+Step) {ishift=1; iprice=P1+Step;}
  127.       if(High[0]>PP) {ishift=0; iprice=PP;}
  128.       if(High[1]>PP+Step) {ishift=1; iprice=PP+Step;}
  129.      }
  130.    P2=P1+AB*Step;
  131.    T1=Time[B1]; T2=Time[AB];
  132. //----
  133.    if(iprice!=0) ExtMapBuffer1[ishift]=iprice;
  134.    DelObj();
  135.    ObjectCreate("TL1",OBJ_TREND,0,T2,PP+Step*AB,T1,PP);
  136.    ObjectSet("TL1",OBJPROP_COLOR,Lime);
  137.    ObjectSet("TL1",OBJPROP_WIDTH,2);
  138.    ObjectSet("TL1",OBJPROP_STYLE,STYLE_SOLID);
  139.    ObjectCreate("TL2",OBJ_TREND,0,T2,P2,T1,P1);
  140.    ObjectSet("TL2",OBJPROP_COLOR,Lime);
  141.    ObjectSet("TL2",OBJPROP_WIDTH,2);
  142.    ObjectSet("TL2",OBJPROP_STYLE,STYLE_SOLID);
  143.    ObjectCreate("MIDL",OBJ_TREND,0,T2,(P2+PP+Step*AB)/2,T1,(P1+PP)/2);
  144.    ObjectSet("MIDL",OBJPROP_COLOR,Lime);
  145.    ObjectSet("MIDL",OBJPROP_WIDTH,1);
  146.    ObjectSet("MIDL",OBJPROP_STYLE,STYLE_DOT);
  147. //----
  148.    double cbars=AB-B1;
  149.    double startPP=PP+Step*AB, endPP=PP;
  150.    double startP1=P2, endP1=P1;
  151.    double startP2=(P2+PP+Step*AB)/2, endP2=(P1+PP)/2;
  152.    double deltaPP=(startPP-endPP)/cbars;
  153.    double deltaP1=(startP1-endP1)/cbars;
  154.    double deltaP2=(startP2-endP2)/cbars;
  155.    buf1[AB]=startPP;
  156.    buf2[AB]=startP1;
  157.    buf3[AB]=startP2;
  158.      for(int i=AB-1; i>=0; i--)
  159.      {
  160.       buf1[i]=buf1[i+1]-deltaPP;
  161.       buf2[i]=buf2[i+1]-deltaP1;
  162.       buf3[i]=buf3[i+1]-deltaP2;
  163.      }
  164. //----
  165.    return(0);
  166.   }
复制代码
举报

评论 使用道具

精彩评论16

ddzlzg
D
| 发表于 2020-8-7 10:32:19 来自手机 | 显示全部楼层
学习了
举报

点赞 评论 使用道具

升龙
DD
| 发表于 2021-5-12 17:13:01 | 显示全部楼层
感谢分享
举报

点赞 评论 使用道具

jongjongyoshen
D
| 发表于 2021-5-12 17:47:45 | 显示全部楼层
感谢分享
举报

点赞 评论 使用道具

daerwushen
DD
| 发表于 2021-5-13 08:38:44 | 显示全部楼层
谢谢分享
举报

点赞 评论 使用道具

addat
DD
| 发表于 2021-5-16 11:47:39 | 显示全部楼层
感谢分享
举报

点赞 评论 使用道具

升龙
DD
| 发表于 2021-6-25 23:42:52 | 显示全部楼层
感谢分享
举报

点赞 评论 使用道具

如鱼得水
未及格
| 发表于 2021-6-26 23:53:32 | 显示全部楼层
学习学习
举报

点赞 评论 使用道具

zhou6282610
D
| 发表于 2021-6-27 00:45:47 | 显示全部楼层
谢谢分享
举报

点赞 评论 使用道具

luo518
C
| 发表于 2021-6-28 15:26:16 | 显示全部楼层
谢谢分享
举报

点赞 评论 使用道具

狂奔的蚂蚁
未及格
| 发表于 2021-11-30 12:20:43 来自手机 | 显示全部楼层
谢谢分享
举报

点赞 评论 使用道具

交易者
DDD
| 发表于 2022-1-8 21:07:16 | 显示全部楼层
感谢分享
举报

点赞 评论 使用道具

jrml
未及格
| 发表于 2022-2-5 21:28:30 | 显示全部楼层
谢谢分享!
举报

点赞 评论 使用道具

985086809
DD
| 发表于 2022-2-5 22:09:21 | 显示全部楼层
感谢分享
举报

点赞 评论 使用道具

daerbushen
DD
| 发表于 2022-3-30 14:12:31 | 显示全部楼层
感谢分享
举报

点赞 评论 使用道具

nanaliu
CC
| 发表于 2022-6-6 21:47:20 | 显示全部楼层
看看。。感谢分享。。。。
举报

点赞 评论 使用道具

dong
D
| 发表于 2022-6-6 22:11:55 | 显示全部楼层
感谢分享
举报

点赞 评论 使用道具

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

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