MQ5语言,程序化交易EA,结构体struct、自定义函数和文件包含

MQ5语言

MQ5是一个内置的编程语言的交易策略,这种语言是 根据他们的在线交易平台建立长期的经验。使用这种语言,可以创建自己的专家顾问,使交易管理自动化,是完全可以为实现自己的交易策略合适,此外,使用MQL5可以创建自己的技术指标(自定义指标),脚本和库。

结构体struct,与C/C++语言相同。

#include命令,可以放置到程序的任意部分,但是通常所有文件的源代码被统一放置。

代码案例

代码案例1

#property copyright "佚名金人"
#property link      ""
#property version   "1.00"
#property strict


//自定义结构体类型
struct KLine
   {
    // 当前时间
    datetime          current_time;
    // 交易品种
    string            symbol;
    // 周期
    int               period;
    //向后偏移量
    int               shift;
    // K线开盘时间
    datetime          kline_time;
    // K线开盘价
    double            open_price;
    // K线最高价
    double            high_price;
    // K线最低价
    double            low_price;
    // K线最收盘价
    double            close_price;
    // 报价量
    long              volume;
    // 图的数量
    int               bars;
    // K线类型
    int               kline_type;
    string            kline_type_info;
   };


//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
void OnStart()
   {
// 交易品种
    const string symbol = "GOLD";
// 周期(1小时)
    const int period = 60;
//后偏移量
    const int shift = 0;
    KLine kLine60 = klinInfo(symbol,period,shift);
    Alert("1小时K线的类型为:" + kLine60.kline_type_info);
    Alert("1小时K线的收盘价:" + kLine60.close_price);
    KLine kLine30 = klinInfo(symbol,30,shift);
    Alert("30分K线的类型为:" + kLine30.kline_type_info);
    Alert("30分K线的收盘价:" + kLine30.close_price);
    KLine kLine15 = klinInfo(symbol,15,shift);
    Alert("15分K线的类型为:" + kLine15.kline_type_info);
    Alert("15分K线的收盘价:" + kLine15.close_price);
    KLine kLine5 = klinInfo(symbol,5,shift);
    Alert("5分K线的类型为:" + kLine5.kline_type_info);
    Alert("5分K线的收盘价:" + kLine5.close_price);
    KLine kLine1_0 = klinInfo(symbol,1,shift);
    Alert("1分K线的类型为:" + kLine1_0.kline_type_info);
    Alert("1分K线的收盘价:" + kLine1_0.close_price);
    KLine kLine1_1 = klinInfo(symbol,1,1);
    Alert("1分K线的类型为:" + kLine1_1.kline_type_info);
    Alert("1分K线的收盘价:" + kLine1_1.close_price);
   }
//+------------------------------------------------------------------+

//+------------------------------------------------------------------+
//| 自定义函数                                                       |
//+------------------------------------------------------------------+
KLine klinInfo(string symbol,int period,int shift)
   {
    KLine kLine;
    kLine.symbol = symbol;
    kLine.period = period;
    kLine.shift = shift;
// K线图开盘时间
    kLine.kline_time  = iTime(symbol,period,shift);
// K线图的开盘价
    kLine.open_price = iOpen(symbol,period,shift);
// K线图的最高价
    kLine.high_price = iHigh(symbol,period,shift);
// K线图的最低价
    kLine.low_price = iLow(symbol,period,shift);
// K线图的收盘价
    kLine.close_price = iClose(symbol,period,shift);
// K线图的报价量
    kLine.volume= iVolume(symbol,period,shift);
//  K线图的数量
    kLine.bars  = iBars(symbol,period);
//  K线图的类型
    if(kLine.open_price > kLine.close_price)
       {
        // K线为阴线
        kLine.kline_type = -1;
        kLine.kline_type_info = "阴线";

       }
    else
        if(kLine.open_price < kLine.close_price)
           {
            // K线为阳线
            kLine.kline_type = 1;
            kLine.kline_type_info = "阳线";
           }
        else
           {
            // K线为十字星
            kLine.kline_type = 0;
            kLine.kline_type_info = "同价线";
           }
    return kLine;
   }
//+------------------------------------------------------------------+

代码案例2:

#property copyright "佚名金人"
#property link      "https://www.toutiao.com/c/user/token/MS4wLjABAAAAtqGTdo-MM3OlPMycEg8ottlKM0vhCTZxwSLFuTZBvvPqYy4yEUrp2j2aNFywqA5u"
#property version   "1.00"
#property strict

#include "demo/KLine.mqh"

//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
void OnStart()
   {
//---
// 交易品种
    const string symbol = "GOLD";
// 周期(1小时)
    const int period = 60;
//后偏移量
    const int shift = 0;
    KLine kLine60 = klinInfo(symbol,period,shift);
    Alert("1小时K线的类型为:" + kLine60.kline_type_info);
    Alert("1小时K线的收盘价:" + kLine60.close_price);
    KLine kLine30 = klinInfo(symbol,30,shift);
    Alert("30分K线的类型为:" + kLine30.kline_type_info);
    Alert("30分K线的收盘价:" + kLine30.close_price);
    KLine kLine15 = klinInfo(symbol,15,shift);
    Alert("15分K线的类型为:" + kLine15.kline_type_info);
    Alert("15分K线的收盘价:" + kLine15.close_price);
    KLine kLine5 = klinInfo(symbol,5,shift);
    Alert("5分K线的类型为:" + kLine5.kline_type_info);
    Alert("5分K线的收盘价:" + kLine5.close_price);
    KLine kLine1_0 = klinInfo(symbol,1,shift);
    Alert("1分K线的类型为:" + kLine1_0.kline_type_info);
    Alert("1分K线的收盘价:" + kLine1_0.close_price);
    KLine kLine1_1 = klinInfo(symbol,1,1);
    Alert("1分K线的类型为:" + kLine1_1.kline_type_info);
    Alert("1分K线的收盘价:" + kLine1_1.close_price);
   }
//+------------------------------------------------------------------+

demo/KLine.mqh

#property copyright "佚名金人"
#property link      ""
#property strict

//自定义结构体类型
struct KLine
   {
    // 当前时间
    datetime          current_time;
    // 交易品种
    string            symbol;
    // 周期
    int               period;
    //向后偏移量
    int               shift;
    // K线开盘时间
    datetime          kline_time;
    // K线开盘价
    double            open_price;
    // K线最高价
    double            high_price;
    // K线最低价
    double            low_price;
    // K线最收盘价
    double            close_price;
    // 报价量
    long              volume;
    // 图的数量
    int               bars;
    // K线类型
    int               kline_type;
    string            kline_type_info;
   };

//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
KLine klinInfo(string symbol,int period,int shift)
   {
    KLine kLine;
    kLine.symbol = symbol;
    kLine.period = period;
    kLine.shift = shift;
// K线图开盘时间
    kLine.kline_time  = iTime(symbol,period,shift);
// K线图的开盘价
    kLine.open_price = iOpen(symbol,period,shift);
// K线图的最高价
    kLine.high_price = iHigh(symbol,period,shift);
// K线图的最低价
    kLine.low_price = iLow(symbol,period,shift);
// K线图的收盘价
    kLine.close_price = iClose(symbol,period,shift);
// K线图的报价量
    kLine.volume= iVolume(symbol,period,shift);
//  K线图的数量
    kLine.bars  = iBars(symbol,period);
//  K线图的类型
    if(kLine.open_price > kLine.close_price)
       {
        // K线为阴线
        kLine.kline_type = -1;
        kLine.kline_type_info = "阴线";

       }
    else
        if(kLine.open_price < kLine.close_price)
           {
            // K线为阳线
            kLine.kline_type = 1;
            kLine.kline_type_info = "阳线";
           }
        else
           {
            // K线为十字星
            kLine.kline_type = 0;
            kLine.kline_type_info = "同价线";
           }
    return kLine;
   }
//+------------------------------------------------------------------+
发表评论
留言与评论(共有 0 条评论) “”
   
验证码:

相关文章

推荐文章