ARTICLE DETAIL

资讯详情

深耕网站建设、视觉设计与SEO优化的一线实战洞察。

用MQL语言实现报价导出为JSON文件

用MQL语言实现报价导出为JSON文件

文章目录

    • 一、MQL语言导出报价为JSON文件意义
    • 二、MQL语言导出报价为JSON的代码实现
      • 设置输入变量
      • 加载历史数据
      • 报价写入JSON文件
      • 添加数据到json文件
      • 脚本主程序

一、MQL语言导出报价为JSON文件意义

  • 数据存储:将报价导出为JSON文件可以将数据以结构化的方式存储在文件中。JSON格式具有良好的可读性和易于解析的特点,可以方便地进行数据的存储和检索。

  • 数据传输:JSON文件可以作为一种常见的数据交换格式,用于在不同系统之间传输报价数据。由于JSON格式的普及性和通用性,它可以被广泛支持和解析,使得数据在不同系统之间的传输更加便捷。

  • 数据处理:导出为JSON文件后,可以使用各种编程语言和工具对报价数据进行处理和分析。JSON格式的数据可以轻松地转换为对象或字典结构,使得数据处理变得更加灵活和高效。

  • 数据可视化:通过将报价导出为JSON文件,可以方便地将数据用于可视化展示。各种数据可视化工具和库都支持JSON格式的数据输入,可以将报价数据转化为图表、图形等形式,帮助用户更好地理解和分析数据。

二、MQL语言导出报价为JSON的代码实现

设置输入变量

input string dataDiractoryName = "Data";
input datetime fromDate = D'01.01.2022';
input datetime toDate = D'30.12.2022';
input string dataFilename = "datasource.json";

加载历史数据

// 加载历史数据
bool LoadHistoryData(MqlRates& historyData[])
{bool copyRatesStatus = CopyRates(Symbol(), PERIOD_D1, fromDate, toDate, historyData);if (copyRatesStatus == true) {Alert("Data successfully retrieved");return true;}else{Alert("Unable to retrieve data");return false;}
}

报价写入JSON文件

//  报价写入JSON文件
uint WriteToJsonFile(int& file_handler, MqlRates& historyData[]) 
{uint writeCounter = 0;string jsonData = "";jsonData += "{ \"Time Series FX(Daily)\": \r\n";jsonData += "{\r\n";for(int counter = 0; counter < ArraySize(historyData); counter++){MqlDateTime dateStruct;TimeToStruct(historyData[counter].time, dateStruct);string properDate = dateStruct.year + "-" + dateStruct.mon + "-" + dateStruct.day;jsonData += "\"" + properDate + "\": {\r\n";jsonData += "     \"Symbol\": \"" + Symbol() + "\",\r\n";jsonData += "     \"1. open\": \"" + (string)historyData[counter].open + "\",\r\n";jsonData += "     \"2. high\": \"" + (string)historyData[counter].high + "\",\r\n";jsonData += "     \"3. low\": \"" + (string)historyData[counter].low + "\",\r\n";jsonData += "     \"4. close\": \"" + (string)historyData[counter].close + "\",\r\n";jsonData += "  },\r\n"; }jsonData += "}\n}\r\n";writeCounter = FileWriteString(file_handler, jsonData);return writeCounter;
}

添加数据到json文件

// 添加数据到json文件
void AddDataToJsonFile(MqlRates& historyData[])
{int file_handler = FileOpen(dataDiractoryName + "//" + dataFilename, FILE_READ|FILE_WRITE|FILE_BIN|FILE_COMMON);uint writeStatus = 0;if (file_handler != INVALID_HANDLE) {//Alert("File opened successfully");writeStatus = WriteToJsonFile(file_handler, historyData);FileClose(file_handler);}else{Alert("File failed to open!");}if (writeStatus != 0){Alert("Added data to data file successfully!");}else{Alert("Data was not added to a file!");    }
}

脚本主程序

void OnStart()
{MqlRates historyData[];if (LoadHistoryData(historyData)){AddDataToJsonFile(historyData);}//Alert("Total Elements is : ", ArraySize(historyData));
}
返回列表