MQL語言實現JSON協議庫

文章目錄

    • 一、MQL語言實現JSON協議的意義
    • 二、定義JSON數據枚舉類型
      • 簡單數據類型
      • 復雜數據類型
      • 枚舉數據類型
      • 定義類變量
      • 清理與賦值方法
      • 構造與析構方法
      • 重載運算符
      • 添加與設置方法
      • 序列化與反序列方法

一、MQL語言實現JSON協議的意義

  1. 數據交互:JSON是一種輕量級的數據交換格式,廣泛應用于Web開發和API接口。通過在MQL語言中實現JSON協議,可以方便地與其他系統進行數據交互,例如獲取外部數據源的實時行情信息或將交易結果以JSON格式返回給其他系統。

  2. 數據解析:許多外部數據源或API接口返回的數據都是以JSON格式進行傳輸。通過在MQL語言中實現JSON協議,可以方便地解析和處理這些數據,提取所需的信息并進行相應的處理。

  3. 數據存儲:將數據以JSON格式進行存儲可以更加靈活和可擴展。通過在MQL語言中實現JSON協議,可以將交易記錄、策略參數等數據以JSON格式進行存儲,方便后續的讀取和處理。

總之,通過在MQL語言中實現JSON協議,可以實現與其他系統的數據交互、方便地解析外部數據和靈活存儲數據等功能,提高策略開發和交易執行的靈活性和效率。

二、定義JSON數據枚舉類型

簡單數據類型

  • 字符串(string):由雙引號括起來的Unicode字符序列。
  • 數字(number):整數或浮點數。
  • 布爾值(boolean):true或false。
  • 空(null):表示空值。

復雜數據類型

  • 數組(Array):由方括號括起來的有序值的集合。
  • 對象(Object):由花括號括起來的無序鍵值對的集合。

枚舉數據類型

//+------------------------------------------------------------------+
//| 枚舉 JSON 類型                                                   |
//+------------------------------------------------------------------+
enum ENUM_JSON_TYPE
{JSON_TYPE_UNDEF,  // 未定義類型JSON_TYPE_NULL,   // 空值類型JSON_TYPE_BOOL,   // 布爾類型JSON_TYPE_INT,    // 整型類型JSON_TYPE_DBL,    // 浮點類型JSON_TYPE_STR,    // 字符串類型JSON_TYPE_ARRAY,  // 數組類型JSON_TYPE_OBJ     // 對象類型
};

定義類變量

//+------------------------------------------------------------------+
//| 類 CJAVal                                                        |
//+------------------------------------------------------------------+
class CJAVal 
{public:CJAVal         m_children[];   // 子節點數組string         m_key;          // 鍵名string         l_key;          // 保存反序列化鍵CJAVal        *m_parent;       // 父節點// 類型及對應的值ENUM_JSON_TYPE m_type;         // 類型bool           bool_v;         // 布爾值long           int_v;          // 整型值double         dbl_v;          // 浮點值int            dbl_precision;  // 浮點值精度string         str_v;          // 字符串值static int     code_page;      // 代碼頁 
};

清理與賦值方法

        // 清理virtual void    Clear(ENUM_JSON_TYPE jt=JSON_TYPE_UNDEF, bool save_key=false);// 復制virtual void    CopyArr(const CJAVal &a);virtual void    CopyData(const CJAVal &a);virtual bool    Copy(const CJAVal &a);

構造與析構方法

        // 構造函數CJAVal();CJAVal(CJAVal *parent, ENUM_JSON_TYPE type);CJAVal(ENUM_JSON_TYPE t, string str);CJAVal(const int v);CJAVal(const long v);CJAVal(const double v, int precision=-100);CJAVal(const bool v);CJAVal(const CJAVal &a);// 析構函數~CJAVal();

重載運算符

        // 數組下標讀取virtual CJAVal *operator[](string key);virtual CJAVal *operator[](int i);// 重載 "=" 運算符void   operator=(const CJAVal &a);void   operator=(const int v);void   operator=(const long v);void   operator=(const double v);void   operator=(const bool v);void   operator=(string v);// 重載 "==" 運算符bool   operator==(const int v)    {return int_v == v; }bool   operator==(const long v)   { return int_v == v; }bool   operator==(const double v) { return dbl_v == v; }bool   operator==(const bool v)   { return bool_v == v; }bool   operator==(string v)       { return str_v == v; }// 重載 "!=" 運算符bool   operator!=(const int v)    { return int_v != v; }bool   operator!=(const long v)   { return int_v != v; }bool   operator!=(const double v) { return dbl_v != v; }bool   operator!=(const bool v)   { return bool_v != v; }bool   operator!=(string v)       { return str_v != v; }

添加與設置方法

        // 設置方法virtual void   Set(const CJAVal &a);virtual void   Set(const CJAVal &list[]);// 添加方法virtual CJAVal *AddBase(const CJAVal &item);virtual CJAVal *Add(const CJAVal& item);virtual CJAVal *Add(const int v);virtual CJAVal *Add(const long v);virtual CJAVal *Add(const double v, int precision=-2);virtual CJAVal *Add(const bool v);virtual CJAVal *Add(string v);

序列化與反序列方法

        // 序列化和反序列化virtual void    Serialize(string &json, bool is_key=false, bool use_comma=false);virtual string  Serialize();virtual bool    Deserialize(char &json[], int len, int &i);virtual bool    ExtrStr(char &json[], int len, int &i);virtual bool    Deserialize(string json, int acp=CP_ACP);virtual bool    Deserialize(char &json[], int acp=CP_ACP);

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/696839.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/696839.shtml
英文地址,請注明出處:http://en.pswp.cn/news/696839.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

【2024軟件測試面試必會技能】Postman(1): postman的介紹和安裝

Postman的介紹 Postman 是一款谷歌開發的接口測試工具,使API的調試與測試更加便捷。 它提供功能強大的 Web API & HTTP 請求調試。它能夠發送任何類型的HTTP 請求 (GET, HEAD, POST, PUT..),附帶任何數量的參數 headers。 postman是一款支持http協議的接口調試…

【PTA|函數題|期末復習】指針

目錄 6-1 計算兩數的和與差(5分) 函數接口定義: 裁判測試程序樣例: 輸入樣例: 輸出樣例: 代碼 6-2 拆分實數的整數與小數部分 (5分) 函數接口定義: 裁判測試程序樣例: 輸入…

springboot整合mybatisPlus超級詳細

springboot整合mybatis-plus超級詳細 一、環境二、springboot整合myBatisPlus2.1新建2.2 添加Mybatis-plus和mysql依賴2.3 修改配置文件2.4 新建包和文件2.5 新建表2.6 創建實體類2.7 創建Mapper接口2.8 創建Service接口2.9 創建Service實現類2.10 增刪改查 MyBatis-Plus&#…

C# Onnx 使用onnxruntime部署實時視頻幀插值

目錄 介紹 效果 模型信息 項目 代碼 下載 C# Onnx 使用onnxruntime部署實時視頻幀插值 介紹 github地址:https://github.com/google-research/frame-interpolation FILM: Frame Interpolation for Large Motion, In ECCV 2022. The official Tensorflow 2…

四.QT5工具安裝和環境變量的配置

1.以管理員身份運行安裝包 2.登錄qt賬號,點擊【next】 3.選中同意 4.選擇安裝目錄,注意不能有中文和空格 5.勾選 64位 mingw。點擊【next】,等待安裝完成 6.配置環境變量

[07] 組件注冊

目錄 Vue.js 組件局部注冊全局注冊 Vue.js 組件 組件(Component)是 Vue.js 最強大的功能之一。 組件可以擴展 HTML 元素,封裝可重用的代碼。 組件系統讓我們可以用獨立可復用的小組件來構建大型應用,幾乎任意類型的應用的界面都…

為什么很多人選用QT開發,有哪些應用實例?

在軟件開發領域,Qt框架作為一種跨平臺的C應用程序開發框架,近年來受到越來越多開發者的青睞。這主要得益于其卓越的跨平臺性能、豐富的功能庫、開發效率以及社區支持。以下將通過詳實的分析,從不同角度探討為什么很多人改用QT開發&#xff0c…

低代碼開發:學校低成本數字化轉型的新引擎

隨著科技的飛速發展,數字化轉型已經成為教育行業的一大趨勢。然而,對于許多學校來說,高昂的數字化改造成本成為了一道難以逾越的門檻。本文將探討如何通過低代碼開發,以低成本實現學校數字化轉型,為教育行業注入新活力…

力扣熱題100_子串_560_和為 K 的子數組

文章目錄 題目鏈接解題思路解題代碼 題目鏈接 560.和為 K 的子數組 解題思路 1.定義變量count(計算個數,返回值)為0、n(當前nums長度)、preSums(利用利用defaultdict的特性,當presum-k不存在…

list.stream().forEach()和list.forEach()的區別

list.stream().forEach() 和 list.forEach() 在 Java 中都是用于遍歷集合元素的方法,但它們在使用場景和功能上有所不同: list.forEach(): 是從 Java 8 開始引入到 java.util.List 接口的標準方法。直接對列表進行迭代,它采用內部…

力扣645. 錯誤的集合(排序,哈希表)

Problem: 645. 錯誤的集合 文章目錄 題目描述思路復雜度Code 題目描述 思路 1.排序 1.對nums數組按從小到大的順序排序; 2.遍歷數組時若判斷兩個相鄰的元素則找到重復元素; 3.記錄一個整形變量prev一次置換當前位置元素并與其作差,若差等于2著說明缺失的…

Mysql索引操作

1、索引語法 2、慢查詢日志 慢查詢日志記錄了所有執行時間超過指定參數( long_query_time ,單位:秒,默認 10 秒)的所有 SQL 語句的日志。 MySQL 的慢查詢日志默認沒有開啟,我們可以查看一下系統變量 slo…

MySQL數據庫備份與還原批處理腳本

數據庫備份文件,例如保存為:dump_msyql.bat REM 數據庫備份 echo offREM 激活延遲環境變量擴展,防止變量賦值丟失 setlocal enabledelayedexpansionREM 獲取當天時間 set today%date:~8,2%REM 大前天,當天-3天,小于10…

包裝類日期日歷類

一(Date類): 在JDK的java.util包中,提供了Date類用于表示日期和時間,精確到毫秒。隨著JDK版本的不斷升級和發展,Date類中的大部分構造方法和普通方法都已經不推薦使用。在JDK8中,Date類只有2個構造方法可以使用&#x…

【LeetCode】升級打怪之路 Day 02:有序數組平方 滑動窗口法

今日題目: 977. 有序數組的平方 | LeetCode209. 長度最小的子數組 | LeetCode76. 最小覆蓋子串 | LeetCode59. 螺旋矩陣 II | LeetCode 目錄 今日總結Problem 1:有序數組平方 ???Problem 2:滑動窗口法 【必會】LeetCode 209. 長度最小的子…

怎樣提取WPS文檔的目錄?

怎樣提取WPS文檔的目錄(智能識別目錄)? 1. 將你的WPS文檔打開,菜單:文件:輸出為PDF,另存為(.pdf) 2. PyPDF2 從PDF文件中提取目錄 運行 python pdf_read_dir.py 你的PDF文件 或者 java : pd…

【2024軟件測試面試必會技能】Appium自動化(5):元素定位工具

常用元素定位工具使用 uiautomatorviewer定位工具: 元素定位主要用來獲取元素信息,獲取元素信息后才能用appium提供的相關API去識別和操作元素。 谷歌在AndroidSDK中,提供了元素定位工具uiautomatorviewer,該工具可在android-s…

系統學習Python——裝飾器:類裝飾器-[跟蹤對象接口:基礎知識]

分類目錄:《系統學習Python》總目錄 文章《系統學習Python——裝飾器:類裝飾器-[單例類:基礎知識]》的單例示例闡明了如何使用類裝飾器來管理一個類的所有實例。類裝飾器的另一個常用場景是為每個生成的實例擴展接口。類裝飾器基本上可以在實…

三opencv源碼解壓及環境變量配置

1.雙擊opencv-3.4.6-vc14-vc15.exe 2.選擇解壓的路徑,點擊【extract】 3.設計環境變量

從零學習Linux操作系統第二十七部分 shell腳本中的變量

一、什么是變量 變量的定義 定義本身 變量就是內存一片區域的地址 變量存在的意義 命令無法操作一直變化的目標 用一串固定的字符來表示不固定的目標可以解決此問題 二、變量的類型及命名規范 環境級別 export A1 在環境關閉后變量失效 退出后 關閉 用戶級別&#xff…