MQL5由简到繁系列一

前言

本系列文章适用于有一定mql5语言基础的人,或者你已经是一个程序员刚接触mql5这门语言,同时你还应该具备基础的交易知识,
在一系列文章里,我将一步一步的深入讲解,由简单实例到复杂ea.我会尽可能的将语句代码注释得更加详细,以便你能轻松的读懂代码,同时,希望你在学习的过程中,保持你的mql5帮助文档是打开的,以方便函数功能的查询和使用.

MQL5语言是什么?

这里我就不在阐述mql5是什么,如果你不了解这门语言的作用,那么之后的学习就是在浪费你的时间 

MQL5的三种打印方式(Hello World!) 

我们都知道,学一门语言的第一步就是,Hello World!

打开MeataEditor5,新建一个脚本程序

添加一行代码:#property script_show_inputs(脚本运行时弹出输入框)

#property copyright "Copyright 2012, MetaQuotes Software Corp."
#property link      "http://www.mql5.com"
#property version   "1.00"
#property script_show_inputs
//+------------------------------------------------------------------+
//| 脚本程序开始函数                                                   |
//+------------------------------------------------------------------+
void OnStart() //程序运行的主函数,所有逻辑应该写在该函数中
  {
//---
    
  }

创建一个枚举类型,不要问我什么是枚举类型 ,百度解释很清楚,你有那个能力去理解它

enum ENUM_PRINT_MODE //包含三种打印方式,三种效果会在接下来中展示
  {
   PRINT   = 0,
   COMMENT = 1,
   ALERT   = 2
  };

添加一个外部参数

input ENUM_PRINT_MODE printMode=PRINT; // 打印模式

 现在将他们组合起来

#property copyright "Copyright 2018, MetaQuotes Software Corp."
#property link      "https://www.mql5.com"
#property version   "1.00"
#property script_show_inputs
enum ENUM_PRINT_MODE
  {
   PRINT   = 0,
   COMMENT = 1,
   ALERT   = 2
  };
input ENUM_PRINT_MODE printMode=PRINT;
//---
//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
void OnStart()
  {
//---

  }

运行脚本,看到下图你应该能够理解上面代码的含义.

 

接下来我们将定义一个函数,来控制打印的模式,以下代码中的所有函数和常量都能在mql5的帮助文档中查询到详细作用.

void PrintSymbolProperties()
  {
  //----定义需要输出的内容
   string symb_symbol=Symbol();// 交易品种
   int symb_digits=(int)SymbolInfoInteger(_Symbol,SYMBOL_DIGITS); // 小数点位数
   int symb_spread=(int)SymbolInfoInteger(_Symbol,SYMBOL_SPREAD);// 买价和卖价之间的差异 (点差)
   int symb_stoplevel=(int)SymbolInfoInteger(_Symbol,SYMBOL_TRADE_STOPS_LEVEL);// 止损级别
   double symb_ask       =SymbolInfoDouble(_Symbol,SYMBOL_ASK);// 买价
   double symb_bid       =SymbolInfoDouble(_Symbol,SYMBOL_BID);// 卖价
  //----根据不同的打印方式,输出以上信息   
  // 如果打印到日志中
   if(printMode==PRINT)
     {
      Print("交易品种: ",symb_symbol,"\n",
            "小数位数: ",symb_digits,"\n",
            "点差: ",symb_spread,"\n",
            "止损级别: ",symb_stoplevel,"\n",
            "买价: ",symb_ask,"\n",
            "卖价: ",symb_bid
            );
     }
//---
// 如果打印到图表上
   if(printMode==COMMENT)
     {
      int mb_res=-1; // 对话框中选择选项的变量
      //---
      Comment("交易品种: ",symb_symbol,"\n",
              "小数位数: ",symb_digits,"\n",
              "点差: ",symb_spread,"\n",
              "止损级别: ",symb_stoplevel,"\n",
              "买价: ",symb_ask,"\n",
              "卖价: ",symb_bid
              );
      //---
      // 打开一个对话框
      mb_res=MessageBox("您想要删除图表中的注释吗?",NULL,MB_YESNO|MB_ICONQUESTION);
      //---
      // 如果点击了 "Yes", 删除图表中的注释 
      if(mb_res==IDYES) { Comment(""); }
      //---
      return;
     }
//---
// 如果打印到提醒窗口
   if(printMode==ALERT)
     {
      Alert("交易品种: "+symb_symbol+"\n",
            "小数位数: "+IntegerToString(symb_digits)+"\n",
            "点差: "+IntegerToString(symb_spread)+"\n",
            "止损级别: "+IntegerToString(symb_stoplevel)+"\n",
            "买价: "+DoubleToString(symb_ask,_Digits)+"\n",
            "卖价: "+DoubleToString(symb_bid,_Digits)
            );
     }
  }

现在我们执行看三种打印结果

PRINT的输出结果:

 

 COMMENT的输出结果:(每一次输出将覆盖上一次的输出结果)

ALERT的输出结果:

 结语

可能有程序基础的人会很容易理解上面代码的作用,如果你对上面代码抱有疑问,那么你应该先去学习一门编程语言的基础,mql5与C和C++的语法相似,我建议你从C语言的基础开始学习,直到你能明白上述代码的含义.

 

  • 10
    点赞
  • 34
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
MQL5和Python之间通过套接字进行通信。可以在MQL5终端的Include文件夹中放置一个名为socketlib.mqh的文件,然后使用Python的服务器脚本(例如Server.py)来创建一个服务器。由于在MQL5中只提供了客户端,所以我们可以利用Python来创建一个服务器。这样,我们就可以利用Python的各种解决方案,从单的线性回归到深度学习模型,与MQL5进行集成。MQL5是一个为专业用途而设计的语言,因此它提供了许多函数库来执行与复杂计算相关的任务。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [PythonMql5Sockets:Mql5和Python之间通过套接字进行通信](https://download.csdn.net/download/weixin_42109125/18835604)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 33.333333333333336%"] - *2* [METATRADER 5 与 PYTHON 的集成:接收和发送数据](https://blog.csdn.net/m0_55389447/article/details/122184728)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 33.333333333333336%"] - *3* [多层感知器和反向传播算法 利用 Python 实现并与 MQL5 集成](https://blog.csdn.net/Herzqt123/article/details/131185212)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 33.333333333333336%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值