MT5入门到精通之十五(文件操作,图表操作,通知邮件发送)

一.文件操作
1.对应文件路径

image.png

2.常用操作代码

//+------------------------------------------------------------------+
//|                                            operateFileScript.mq5 |
//|                        Copyright 2017, MetaQuotes Software Corp. |
//|                                             https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2017, MetaQuotes Software Corp."
#property link      "https://www.mql5.com"
#property version   "1.00"
#include <wz\Kline.mqh>

Kline kl;
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
void OnStart()
  {
//---
   MqlRates rates[];
   kl.getRates(rates,50);
   int f_h;

//1.正常文件写入流程(一般打开这个属性FILE_SHARE_READ,其他进程也可以查看)
   f_h=FileOpen("abc.txt",FILE_READ|FILE_WRITE|FILE_TXT|FILE_SHARE_READ,",");
   FileWrite(f_h,TimeToString(rates[0].time),DoubleToString(rates[0].open,Digits()));
   FileWrite(f_h,TimeToString(rates[1].time),DoubleToString(rates[1].open,Digits()));
//1.2Writes to a disk all data remaining in the input/output file buffer.
   FileFlush(f_h);
   FileClose(f_h);
//2.文件读取操作
   f_h=FileOpen("abc.txt",FILE_READ|FILE_WRITE|FILE_TXT|FILE_SHARE_READ,",");
   while(FileIsEnding(f_h)==false)
     {
      //2.1返回整行的数据(2017.05.03 02:00,1.09307)
      string fr=FileReadString(f_h);
     }
   FileClose(f_h);

//3.在文件底部添加数据,而不是直接覆盖
//3.1推荐用csv格式,不需要有分割号,
   f_h=FileOpen("abc.csv",FILE_READ|FILE_WRITE|FILE_CSV|FILE_SHARE_READ);
   FileSeek(f_h,0,SEEK_END);
   FileWrite(f_h,TimeToString(rates[0].time),DoubleToString(rates[0].open,Digits()));
   FileWrite(f_h,TimeToString(rates[1].time),DoubleToString(rates[1].open,Digits()));
   FileWrite(f_h,TimeToString(rates[2].time),DoubleToString(rates[2].open,Digits()));
   FileFlush(f_h);
   FileClose(f_h);
//4.删除文件
// FileDelete("abc.csv");


//5.二进制文件读取操作
   f_h=FileOpen("test.bin",FILE_READ|FILE_WRITE|FILE_BIN|FILE_SHARE_READ);
   FileWriteDouble(f_h,1.23456);
   FileClose(f_h);

   f_h=FileOpen("test.bin",FILE_READ|FILE_WRITE|FILE_BIN|FILE_SHARE_READ);
   string valueD=FileReadDouble(f_h);
   FileClose(f_h);

//6.文件的复制(文件夹和目录)
   f_h=FileOpen("directory\\abc.txt",FILE_READ|FILE_WRITE|FILE_TXT|FILE_BIN|FILE_SHARE_READ);
   FileWrite(f_h,TimeToString(rates[0].time),DoubleToString(rates[0].open,Digits()));
   FileWrite(f_h,TimeToString(rates[1].time),DoubleToString(rates[1].open,Digits()));
   FileFlush(f_h);
   FileClose(f_h);
   FileCopy("directory\\abc.txt",0,"directory\\dcd.txt",FILE_REWRITE);

//6.1文件夹创建
   FolderCreate("test");
   FolderDelete("test");
   FolderClean("test");

//7.文件搜索遍历
   string fName;
   int s_h=FileFindFirst("directory\\a*.*",fName);
   if(s_h!=INVALID_HANDLE)
     {
      do
        {
         if(FileIsExist(fName)==true)
           {
            printf(fName+"这是一个文件");
           }
         else
           {
            printf(fName+"这是一个文件夹");
           }
        }
      while(FileFindNext(s_h,fName)==true);
     }
  }
//+------------------------------------------------------------------+

二.图表操作
1.操作如下图表


image.png

2.代码实现

//+------------------------------------------------------------------+
//|                                           operateChartScript.mq5 |
//|                        Copyright 2017, MetaQuotes Software Corp. |
//|                                             https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2017, MetaQuotes Software Corp."
#property link      "https://www.mql5.com"
#property version   "1.00"
//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
void OnStart()
  {

//1.打开制定周期的图表
   ChartOpen("GBPUSD",PERIOD_H1);
//2.1获取图表属性ChartGetInteger ChartGetDouble ChartGetString
   int cMode=ChartGetInteger(0,CHART_MODE);
   if(cMode==CHART_BARS)Alert("柱状图");
   if(cMode==CHART_CANDLES)Alert("蜡烛图");
   if(cMode==CHART_LINE)Alert("线形图");


//2.1.1获取当前图表价格边界
   double min=ChartGetDouble(0,CHART_PRICE_MIN);
   double max=ChartGetDouble(0,CHART_PRICE_MAX);

   string eaName=ChartGetString(0,CHART_EXPERT_NAME);
   string scriptName=ChartGetString(0,CHART_SCRIPT_NAME);
//2.2设置图表属
   ChartSetInteger(0,CHART_SHOW_ONE_CLICK,true);


//3.遍历所有窗口,可以关闭指定类型的货币窗口
   long first_chartId=ChartFirst();
   for(int i=0;i<200;i++)
     {
      string symbol=ChartSymbol(first_chartId);
      //3.1 关闭指定货币的窗口
      if(symbol=="EURUSD")
        {
         ChartClose(first_chartId);
        }
      first_chartId=ChartNext(first_chartId);
      if(first_chartId<0)
        {
         break;
        }
     }
//3.1当前宽口价值指标 
   int ma_h=iMA(Symbol(),0,5,0,0,0);
   ChartIndicatorAdd(0,0,ma_h);
   int bands=iBands(Symbol(),0,20,0,2.0,PRICE_CLOSE);
   ChartIndicatorAdd(0,0,bands);

//3.2遍历指标
   int indicatorsTotal=ChartIndicatorsTotal(0,0);
   for(int i=indicatorsTotal-1;i>=0;i--)
     {
      string indicator_name=ChartIndicatorName(0,0,i);
      //3.3删除指标
      //ChartIndicatorDelete(0,0,indicator_name);
      //3.4获得指标句柄
      int indicator_h=ChartIndicatorGet(0,0,indicator_name);
     }

//4.模板操作
//4.1加载模板
   ChartApplyTemplate(0,"ADX");

//4.2保存当前页面为模板
   ChartSaveTemplate(0,"testTemplate");

//6.屏幕截图(交易的时候可以截图留底)
   ChartScreenShot(0,"1.jpg",800,800);

//7.获取最近操作的错误码
   printf(GetLastError());

  }
//+------------------------------------------------------------------+

2017/5/4
三.通知邮件发送
1.发送邮件功能
1.1设置移动139邮箱,有短信提醒功能(http://mail.10086.cn/

image.png
image.png

1.2发送邮件即可

   SendMail("邮件标题","邮件内容");

2.发送文件到FTP
2.1设置

image.png

2.2 上传

SendFTP("testFtp.txt");

3.抓取网页内容
3.1先添加要抓取的页面

image.png
image.png

4.消息推送到手机(待研究)
4.1设置

image.png

4.2如下代码即可

SendNotification("发送通知到手机");

5.以上完整代码如下

//+------------------------------------------------------------------+
//|                                          operateNoticeScript.mq5 |
//|                        Copyright 2017, MetaQuotes Software Corp. |
//|                                             https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2017, MetaQuotes Software Corp."
#property link      "https://www.mql5.com"
#property version   "1.00"
//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
void OnStart()
  {
//1.发送邮件
   SendMail("邮件标题","邮件内容");
//2.上传文件到ftp
   SendFTP("testFtp.txt");
//3.抓起网页的内容
//3.1上传一个自定义的web
   SendFTP("web.html");
//3.2抓取网页内容
   string url="https://www.baidu.com";
   char  data[];          // HTTP 信息主体的数组
   char  result[];      // 包含服务器反应数据的数组
   string  result_headers;  // 服务器响应标题

   WebRequest("GET",url,NULL,NULL,2000,data,0,result,result_headers);

   string res=CharArrayToString(result);

//4.发送通知到手机
   SendNotification("发送通知到手机");

   int a=0;
  }
//+------------------------------------------------------------------

如果您发现本文对你有所帮助,如果您认为其他人也可能受益,请把它分享出去。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,732评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 87,496评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,264评论 0 338
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,807评论 1 277
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,806评论 5 368
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,675评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,029评论 3 399
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,683评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 41,704评论 1 299
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,666评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,773评论 1 332
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,413评论 4 321
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,016评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,978评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,204评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,083评论 2 350
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,503评论 2 343

推荐阅读更多精彩内容

  • feisky云计算、虚拟化与Linux技术笔记posts - 1014, comments - 298, trac...
    不排版阅读 3,813评论 0 5
  • 首页 资讯 文章 资源 小组 相亲 登录 注册 首页 最新文章 IT 职场 前端 后端 移动端 数据库 运维 其他...
    Helen_Cat阅读 3,843评论 1 10
  • 大人们总说他们走过的路比你长,所以执意要你听他们的安排。可是呢,他们懂得那么多,经验那么丰富,地位还没有一些年轻...
    衡懒阅读 244评论 0 0
  • 自从上次家访中断之后,虽然每天都在看书但是好久都没有写读书笔记了。今天拿起王崧舟老师的《诗意语文》看起来。在...
    狗尾巴草_8270阅读 297评论 0 0
  • 我一生之中爱过许多人 你是我唯一用力去爱的人 我一生之中走过许多路 翻过许多桥 走过一片草原 穿过一片沙漠 到最后...
    代号1743阅读 300评论 0 3