交易危机

 找回密码
 快捷注册(禁q号)

QQ登录

只需一步,快速开始

搜索
广告位
查看: 1779|回复: 6
打印 上一主题 下一主题

[指标] 打开任意图表

[复制链接]

130

主题

9821

积分

0

精华

操盘专家

金钱
9821 美元
权重
0
跳转到指定楼层
楼主
发表于 2019-6-29 12:12 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
有时候想打开比特币,原油或者不常见的货币对,等图表,从左边找很麻烦,用这个就可以快速打开。









这些直接输入中文就可以打开,想要添加更多,自己修改一下这里即可





另外附送  多空轨道源码   


指标见1楼   指标放在  \MQL4\indicators  目录下
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 转播转播 分享分享 分享淘帖 支持支持 保留保留
装死

130

主题

9821

积分

0

精华

操盘专家

金钱
9821 美元
权重
0
沙发
 楼主| 发表于 2019-6-29 12:13 | 只看该作者
本帖最后由 sanbuxiaozhu 于 2019-7-2 09:05 编辑
  1. //+------------------------------------------------------------------+
  2. //|                                                       多空轨道.mq4 |
  3. //|                        Copyright 2018, MetaQuotes Software Corp. |
  4. //|                                             https://www.mql5.com |
  5. //+------------------------------------------------------------------+
  6. #property copyright "http://my.fx3q.com"
  7. #property link      "https://www.mql5.com"
  8. #property version   "1.00"
  9. #property strict

  10. extern int MA = 60;
  11. extern ENUM_MA_METHOD method = MODE_SMA;
  12. int 箭头间隔 = 100,juli = 20;

  13. extern double 内轨系数 = 1;
  14. extern double 外轨系数 = 8;

  15. ENUM_BASE_CORNER Corner   =1;//显示位置
  16. int FontSize =10;
  17. color Fontcolor=clrWhite;
  18. color BGcolor=clrBlack;
  19. color BRcolor=clrCoral;
  20. int Win=0;
  21. int x1=0,y1=0;


  22. double middle,up1,low1;
  23. bool upp = true,downpp = true;

  24. #property indicator_chart_window
  25. #property indicator_buffers 7
  26. #property indicator_plots   7
  27. //--- plot ma
  28. #property indicator_label1  "ma"
  29. #property indicator_type1   DRAW_LINE
  30. #property indicator_color1  clrRed
  31. #property indicator_style1  STYLE_SOLID
  32. #property indicator_width1  1
  33. //--- plot maHigh
  34. #property indicator_label2  "maHigh"
  35. #property indicator_type2   DRAW_LINE
  36. #property indicator_color2  clrGold
  37. #property indicator_style2  STYLE_SOLID
  38. #property indicator_width2  1
  39. //--- plot maLow
  40. #property indicator_label3  "maLow"
  41. #property indicator_type3   DRAW_LINE
  42. #property indicator_color3  clrDeepSkyBlue
  43. #property indicator_style3  STYLE_SOLID
  44. #property indicator_width3  1
  45. //--- plot maMax
  46. #property indicator_label4  "maMax"
  47. #property indicator_type4   DRAW_LINE
  48. #property indicator_color4  clrGold
  49. #property indicator_style4  STYLE_SOLID
  50. #property indicator_width4  2
  51. //--- plot maMin
  52. #property indicator_label5  "maMin"
  53. #property indicator_type5   DRAW_LINE
  54. #property indicator_color5  clrDeepSkyBlue
  55. #property indicator_style5  STYLE_SOLID
  56. #property indicator_width5  2
  57. //--- plot up
  58. #property indicator_label6  "up"
  59. #property indicator_type6   DRAW_ARROW
  60. #property indicator_color6  clrRed
  61. #property indicator_style6  STYLE_SOLID
  62. #property indicator_width6  3
  63. //--- plot down
  64. #property indicator_label7  "down"
  65. #property indicator_type7   DRAW_ARROW
  66. #property indicator_color7  clrDeepSkyBlue
  67. #property indicator_style7  STYLE_SOLID
  68. #property indicator_width7  3
  69. //--- indicator buffers
  70. double         maBuffer[];
  71. double         maHighBuffer[];
  72. double         maLowBuffer[];
  73. double         maMaxBuffer[];
  74. double         maMinBuffer[];
  75. double         upBuffer[];
  76. double         downBuffer[];
  77. //+------------------------------------------------------------------+
  78. //| Custom indicator initialization function                         |
  79. //+------------------------------------------------------------------+
  80. int OnInit()
  81.   {
  82. //--- indicator buffers mapping

  83.   mianban();
  84.    IndicatorShortName("多空轨道");
  85.    SetIndexBuffer(1,maHighBuffer);
  86.    SetIndexBuffer(2,maLowBuffer);
  87.    SetIndexBuffer(3,maMaxBuffer);
  88.    SetIndexBuffer(4,maMinBuffer);
  89.    SetIndexBuffer(5,upBuffer);
  90.    SetIndexBuffer(6,downBuffer);
  91. //--- setting a code from the Wingdings charset as the property of PLOT_ARROW
  92.    
  93.    SetIndexBuffer(0,maBuffer);
  94.    SetIndexLabel(0,MA+"日均线");
  95.    

  96.    SetIndexArrow(5,241);
  97.    SetIndexLabel(5,"up");
  98.    
  99.    SetIndexArrow(6,242);
  100.    SetIndexLabel(6,"down");
  101.    
  102.    if(Period() == 5){ 箭头间隔 = 15;juli = 20;}  //Period()返回当前图表的时间表  属于几分钟图  
  103.    if(Period() == 15){ 箭头间隔 = 25;juli =30;}
  104.    if(Period() == 30){ 箭头间隔 = 35;juli =40;}
  105.    if(Period() == 60){ 箭头间隔 = 66;juli =50;}
  106.    if(Period() == 240){ 箭头间隔 = 88;juli =66;}
  107.    if(Period() == 1440){ 箭头间隔 = 150;juli = 100;}
  108.    if(Period() == 10080){ 箭头间隔 = 250;juli = 120;}
  109.    if(Period() == 1){ 箭头间隔 = 10;juli =15;}
  110.    
  111.    
  112. //---
  113.    return(INIT_SUCCEEDED);
  114.   }
  115.   
  116. int OnDeinit(){
  117. ObjectsDeleteAll();
  118. return 0;

  119. }
  120. //+------------------------------------------------------------------+
  121. //| Custom indicator iteration function                              |
  122. //+------------------------------------------------------------------+
  123. int OnCalculate(const int rates_total,
  124.                 const int prev_calculated,
  125.                 const datetime &time[],
  126.                 const double &open[],
  127.                 const double &high[],
  128.                 const double &low[],
  129.                 const double &close[],
  130.                 const long &tick_volume[],
  131.                 const long &volume[],
  132.                 const int &spread[])
  133.   {
  134.   

  135.    int counted_bars=IndicatorCounted();
  136.    if (counted_bars<0) return(-1);
  137.    if (counted_bars>0) counted_bars--;
  138.    int limit=Bars-counted_bars;
  139.    
  140.    double c1,c2,d1,d2,middle1,middle2;
  141.    for(int i=limit-2; i>=0; i--)   //必须是limit-2 否则数组下标越界
  142.      {
  143.         

  144.         
  145.      
  146.         middle = iMA(Symbol(),PERIOD_CURRENT,MA,0,method,PRICE_CLOSE,i+1);  //最后一个参数表示第几个MA值
  147.         up1 = iMA(Symbol(),PERIOD_CURRENT,MA,0,method,PRICE_HIGH,i+1);  
  148.         low1 = iMA(Symbol(),PERIOD_CURRENT,MA,0,method,PRICE_LOW,i+1);  
  149.         
  150.         middle1 = iMA(Symbol(),PERIOD_CURRENT,MA,0,method,PRICE_CLOSE,i+2);  
  151.         
  152.         
  153.         maBuffer[i] = middle;
  154.         maHighBuffer[i] = (up1-low1)*内轨系数 + middle;
  155.         maLowBuffer[i] = middle - (up1-low1)*内轨系数;
  156.         
  157.         maMaxBuffer[i] = (up1-low1)*外轨系数 + middle;
  158.         maMinBuffer[i] = middle - (up1-low1)*外轨系数;
  159.         
  160.         
  161.         
  162.         if(maHighBuffer[i+1] < Close[i+1] && downpp == true){
  163.             upBuffer[i] = Low[i] - 箭头间隔*Point;
  164.             upp = true;
  165.             downpp = false;
  166.         }
  167.         
  168.         if(maLowBuffer[i+1] > Close[i+1] && upp == true){
  169.             downBuffer[i] = High[i] + 箭头间隔*Point;
  170.             upp = false;
  171.             downpp = true;
  172.         }
  173.      
  174.      }
  175.   
  176.   
  177.   
  178.    return(rates_total);
  179.   }
  180. //+------------------------------------------------------------------+



  181. void CreateLabel(long  chart_ID,
  182.                  string Name,
  183.                  int Window,
  184.                  int xPos,
  185.                  int yPos,
  186.                  int 宽,
  187.                  int 高,
  188.                  int FontSz,
  189.                  color FontColor1,
  190.                  color BGcolor1,
  191.                  color BRcolor1,
  192.                  int Corner1,
  193.                  string LblTxt,
  194.                  string tooltip)
  195.    {
  196.    if(ObjectFind(Name)!=0) ObjectCreate(chart_ID,Name,OBJ_BUTTON,Window,0,0);
  197.    ObjectSetInteger(chart_ID,Name,OBJPROP_CORNER,Corner1);
  198.    ObjectSetInteger(chart_ID,Name,OBJPROP_XDISTANCE,xPos);
  199.    ObjectSetInteger(chart_ID,Name,OBJPROP_YDISTANCE,yPos);
  200.    ObjectSetInteger(chart_ID,Name,OBJPROP_XSIZE,宽);
  201.    ObjectSetInteger(chart_ID,Name,OBJPROP_YSIZE,高);
  202.    ObjectSetString(chart_ID,Name,OBJPROP_FONT,"黑体");
  203.    ObjectSetInteger(chart_ID,Name,OBJPROP_FONTSIZE,FontSz);
  204.    ObjectSetInteger(chart_ID,Name,OBJPROP_COLOR,FontColor1);
  205.    ObjectSetInteger(chart_ID,Name,OBJPROP_BORDER_COLOR,BRcolor1);
  206.    ObjectSetInteger(chart_ID,Name,OBJPROP_BGCOLOR,BGcolor1);
  207.    ObjectSetInteger(chart_ID,Name,OBJPROP_SELECTABLE,0);
  208.    ObjectSetInteger(chart_ID,Name,OBJPROP_SELECTED,0);
  209.    ObjectSetInteger(chart_ID,Name,OBJPROP_BACK,false);
  210.    ObjectSetInteger(chart_ID,Name,OBJPROP_ALIGN,ALIGN_LEFT);
  211.    ObjectSetString(chart_ID,Name,OBJPROP_TEXT,LblTxt);
  212.    ObjectSetString(chart_ID,Name,OBJPROP_TOOLTIP,tooltip);
  213.   }


  214.   
  215. //+------------------------------------------------------------------+
  216. bool EditCreate( long             chart_ID=0,
  217.                  string           name="Edit",
  218.                  int              sub_window=0,
  219.                  int              x=0,
  220.                  int              y=0,
  221.                  int              width=50,
  222.                  int              height=18,
  223.                  color            clr=clrYellow,
  224.                  string           text="Text",
  225.                  string           tooltip="",
  226.                  ENUM_BASE_CORNER corner=CORNER_LEFT_UPPER,
  227.                  string           font="Arial",
  228.                  int              font_size=10,
  229.                  ENUM_ALIGN_MODE  align=ALIGN_CENTER,
  230.                  bool             read_only=false,
  231.                  color            back_clr=clrBlack,
  232.                  color            border_clr=clrFireBrick,
  233.                  bool             back=false,
  234.                  bool             selection=false,
  235.                  bool             hidden=true,
  236.                  long             z_order=0
  237.                 )
  238.   {
  239.    ResetLastError();
  240.    if(!ObjectCreate(chart_ID,name,OBJ_EDIT,sub_window,0,0))
  241.      {
  242.       Print(__FUNCTION__,
  243.             ": failed to create "Edit" object! Error code = ",GetLastError());
  244.       return(false);
  245.      }
  246.    ObjectSetInteger(chart_ID,name,OBJPROP_XDISTANCE,x);
  247.    ObjectSetInteger(chart_ID,name,OBJPROP_YDISTANCE,y);
  248.    ObjectSetInteger(chart_ID,name,OBJPROP_XSIZE,width);
  249.    ObjectSetInteger(chart_ID,name,OBJPROP_YSIZE,height);
  250.    ObjectSetString(chart_ID,name,OBJPROP_TEXT,text);
  251.    ObjectSetString(chart_ID,name,OBJPROP_FONT,font);
  252.    ObjectSetInteger(chart_ID,name,OBJPROP_FONTSIZE,font_size);
  253.    ObjectSetInteger(chart_ID,name,OBJPROP_ALIGN,align);
  254.    ObjectSetInteger(chart_ID,name,OBJPROP_READONLY,read_only);
  255.    ObjectSetInteger(chart_ID,name,OBJPROP_CORNER,corner);
  256.    ObjectSetInteger(chart_ID,name,OBJPROP_COLOR,clr);
  257.    ObjectSetInteger(chart_ID,name,OBJPROP_BGCOLOR,back_clr);
  258.    ObjectSetInteger(chart_ID,name,OBJPROP_BORDER_COLOR,border_clr);
  259.    ObjectSetInteger(chart_ID,name,OBJPROP_BACK,back);
  260.    ObjectSetInteger(chart_ID,name,OBJPROP_SELECTABLE,selection);
  261.    ObjectSetInteger(chart_ID,name,OBJPROP_SELECTED,selection);
  262.    ObjectSetInteger(chart_ID,name,OBJPROP_HIDDEN,hidden);
  263.    ObjectSetInteger(chart_ID,name,OBJPROP_ZORDER,z_order);
  264.    ObjectSetString(chart_ID,name,OBJPROP_TOOLTIP,tooltip);
  265.    return(true);
  266.   }



  267. //+------------------------------------------------------------------+
  268. //|   创建控制面板                                                   |
  269. //+------------------------------------------------------------------+

  270. void mianban()
  271.   {
  272.      int a1 = 80,b1=140 ,y1 = 50;
  273.      
  274.      for(int j=1;j<=3;j++)
  275.         {
  276.         
  277.          switch(j)
  278.            {

  279.             case 1 : CreateLabel(0,"hekc"+(string)j,Win,b1,290,62,25,FontSize,Fontcolor,clrPurple,clrRed,Corner,"打开图表","打开图表"); break;
  280.             case 2 : EditCreate(0,"hekc"+(string)j,Win,a1-10,290,66,25,clrWhite,"镑美","Symbol",Corner); break;
  281.             case 3 : CreateLabel(0,"hekc"+(string)j,Win,168,290,20,25,FontSize,Fontcolor,clrRed,clrRed,Corner,"X","卸载指标"); break;
  282.            }
  283.        }
  284.   }


  285. void OnChartEvent(const int    id,
  286.                   const long   &lparam,
  287.                   const double &dparam,
  288.                   const string &sparam)
  289.   {
  290.    string name,sym="";
  291.    
  292.       if(id==CHARTEVENT_OBJECT_CLICK)
  293.      {
  294.    //获取EDIT值  
  295.           if(ObjectFind(0,"hekc"+(string)2)>=0)//zhiying
  296.           {  
  297.              name=ObjectGetString(0,"hekc"+(string)2,OBJPROP_TEXT);

  298.           }

  299.         if(sparam=="hekc"+(string)1)   
  300.         {
  301.         
  302.          if(name == "美日")sym = "USDJPY";
  303.          if(name == "欧美")sym = "EURUSD";
  304.          if(name == "美加")sym = "USDCAD";
  305.          if(name == "欧日")sym = "EURJPY";
  306.          if(name == "纽美")sym = "NZDUSD";
  307.          if(name == "美瑞")sym = "USDCHF";
  308.          if(name == "镑美")sym = "GBPUSD";
  309.          if(name == "镑日")sym = "GBPJPY";
  310.          if(name == "黄金")sym = "XAUUSD";
  311.          if(name == "澳美")sym = "AUDUSD";
  312.          if(name == "磅美")sym = "GBPUSD";
  313.          if(name == "人民币")sym = "USDCNH";
  314.          if(name == "里拉")sym = "USDTRY";
  315.          if(name == "原油")sym = "XTIUSD";
  316.          if(name == "比特币")sym = "BTCUSD";
  317.          

  318.         if(ChartOpen(sym,PERIOD_H1) == false){
  319.          Alert("输入有误,打开失败");
  320.         }
  321.         
  322.         }
  323.         
  324.         if(sparam=="hekc"+(string)3)   //减
  325.         {
  326.         
  327.          ChartIndicatorDelete(0,0,"多空轨道");
  328.          ObjectsDeleteAll();
  329.         }
  330.         
  331.    }
  332.    
  333. }   
  334.       
复制代码
装死

15

主题

1万

积分

0

精华

操盘专家

金钱
15204 美元
权重
0
板凳
发表于 2019-6-29 13:37 来自手机 | 只看该作者
利害~

30

主题

1万

积分

0

精华

操盘专家

金钱
13838 美元
权重
1
地板
发表于 2019-6-29 23:11 | 只看该作者
楼主。你这个可以再修改下:
做个货币名称字符串提取,如:如果输入的汉字是镑美,那就将镑转换成GBP,美转换成USD
就不用改你的那个输入了。

130

主题

9821

积分

0

精华

操盘专家

金钱
9821 美元
权重
0
5
 楼主| 发表于 2019-6-30 07:46 | 只看该作者
过去了 发表于 2019-6-29 23:11
楼主。你这个可以再修改下:
做个货币名称字符串提取,如:如果输入的汉字是镑美,那就将镑转换成GBP,美 ...

谢谢提醒

面板可移动怎么写?   
装死

130

主题

9821

积分

0

精华

操盘专家

金钱
9821 美元
权重
0
6
 楼主| 发表于 2019-6-30 16:40 | 只看该作者
本帖最后由 sanbuxiaozhu 于 2019-7-2 09:07 编辑

感谢 @过去了 提供建议
增加函数

  1. int strreplace(string &s){

  2.    int num=0;

  3.    if(s == "") { s = Symbol(); num = 1;}  //空返回本货币

  4.    num = StringReplace(s,"日","JPY");

  5.    num += StringReplace(s,"美","USD");

  6.    num += StringReplace(s,"加","CAD");

  7.    num += StringReplace(s,"瑞","CHF");

  8.    num += StringReplace(s,"镑","GBP");

  9.    num += StringReplace(s,"欧","EUR");

  10.    num += StringReplace(s,"澳","AUD");

  11.    num += StringReplace(s,"纽","NZD");

  12.    num += StringReplace(s,"黄金","XAUUSD");

  13.    num += StringReplace(s,"比特币","BTCUSD");

  14.    num += StringReplace(s,"人民币","USDCNH");

  15.    num += StringReplace(s,"里拉","USDTRY");
  16.    
  17.    return num;  
  18. }
复制代码



原先的这部分改成
  1.         if(sparam=="hekc"+(string)1)   
  2.         {
  3.         
  4.         strreplace(name);
  5.         
  6.         if(ChartOpen(name,PERIOD_H1) == false){
  7.          Alert("输入有误,打开失败");
  8.         }
  9.         
  10.         }
  11.         
复制代码



装死

11

主题

1935

积分

0

精华

初级操盘手

金钱
1935 美元
权重
0
7
发表于 2019-7-3 15:42 | 只看该作者
快速,可以用。
您需要登录后才可以回帖 登录 | 快捷注册(禁q号)

本版积分规则

QQ|黄金吧|黄金论坛|手机版|指标下载|非农|目录|交易危机

版权所有: ©2014-2021 fx3q.com Powered by Discuz! X3
皖ICP备: 2024050410号-2

风险提示:杠杆风险高,交易要谨慎 声明:坛友发言和回复均为个人观点,不代表论坛立场。
若有侵权请联系fx3q@qq.com删除

快速回复 返回顶部 返回列表