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閱讀 227,748評論 6 531
  • 序言:濱河連續發生了三起死亡事件,死亡現場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發現死者居然都...
    沈念sama閱讀 98,165評論 3 414
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事?!?“怎么了?”我有些...
    開封第一講書人閱讀 175,595評論 0 373
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 62,633評論 1 309
  • 正文 為了忘掉前任,我火速辦了婚禮,結果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 71,435評論 6 405
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發上,一...
    開封第一講書人閱讀 54,943評論 1 321
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當著我的面吹牛,可吹牛的內容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 43,035評論 3 440
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 42,175評論 0 287
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當地人在樹林里發現了一具尸體,經...
    沈念sama閱讀 48,713評論 1 333
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 40,599評論 3 354
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發現自己被綠了。 大學時的朋友給我發了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 42,788評論 1 369
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 38,303評論 5 358
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質發生泄漏。R本人自食惡果不足惜,卻給世界環境...
    茶點故事閱讀 44,034評論 3 347
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 34,412評論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 35,664評論 1 280
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 51,408評論 3 390
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 47,747評論 2 370

推薦閱讀更多精彩內容

  • feisky云計算、虛擬化與Linux技術筆記posts - 1014, comments - 298, trac...
    不排版閱讀 3,882評論 0 5
  • 首頁 資訊 文章 資源 小組 相親 登錄 注冊 首頁 最新文章 IT 職場 前端 后端 移動端 數據庫 運維 其他...
    Helen_Cat閱讀 3,899評論 1 10
  • 大人們總說他們走過的路比你長,所以執意要你聽他們的安排??墒悄?,他們懂得那么多,經驗那么豐富,地位還沒有一些年輕...
    衡懶閱讀 253評論 0 0
  • 自從上次家訪中斷之后,雖然每天都在看書但是好久都沒有寫讀書筆記了。今天拿起王崧舟老師的《詩意語文》看起來。在...
    狗尾巴草_8270閱讀 307評論 0 0
  • 我一生之中愛過許多人 你是我唯一用力去愛的人 我一生之中走過許多路 翻過許多橋 走過一片草原 穿過一片沙漠 到最后...
    代號1743閱讀 310評論 0 3