博主比较忙,因此也就抽空写写。等最后全部写完了再汇总一下。

 
 
说到金融,我想肯定有很多人印象里就是一个不太大的大厅,一群交易员望着一堆背景为黑的曲线图的场景。
比如这样
 
 
但是试想一下,交易员也是人。是人就会有心情的好坏,身体状况的变动等等。一时冲动那可是要赔大钱的。同时,比起交易员,程序的运行成本几乎为0。一个好的交易程序,甚至能让你躺着等钱来。总之,当下自动交易是一个非常热门的新兴领域。我们也可以给一个热词,Fintech。
 
 
好了,这些废话就不多说了。下面开始主题。至于什么是mql4,mt4这些博主也不说了,不了解的自己搜吧。一搜一大片。至于现在,其实mq5都出来很久了,但是仍旧没什么人用。博主也在学习阶段,具体也不是很了解。但是应该是因为mq5的一些致命缺陷所致。比如库太少还是不支持什么功能(具体忘记了)
 
 又扯远了,回到主题。首先,要知道mq4是一种类似编程语言的语言。之所以这么称它,因为它并不是一门真正的编程语言。它只是用来做外汇交易程序的语言,依托于mt4(别晕,虽然好多名词,其实都很简单。mt4就是金融交易平台,也就是一个客户端而已。大致感觉如下图)

mq4所编写的程序运行在mt4上。而mt5和mt4几乎没有差别,大家默认两者相同也行。
 
 
然后我们具体说一下mq4的程序的构成。首先,要知道外汇也好股票也好,都是每隔一段时间更新一次价格的。知道了这一点就非常简单了。mq4的程序只有三个主函数(现在都改成mq5的名字了)。
函数名 作用 
 int OnInit()  mq4程序运行时,这个函数运行一次
 void OnDeinit(const int reason)  mq4程序结束时,这个函数运行一次
 void OnTick()  每当价格更新时,这个函数运行一次
当然,实际个人开发时候,只需要关注void OnTick()就行。其他两个基本不是用来交易的。比如int
OnInit()里面一般放验证用户的代码,比如验证你是否有权限使用这个程序(简单讲就是你有没有花钱买了它,有没有登录等等)。
 
还是看实际代码
//+------------------------------------------------------------------+
//|      
     
     
     
     
     
     
     
     
  test.mq4 |
//|      
     
     
     Copyright
2016, MetaQuotes Software Corp. |
//|      
     
     
     
     
     
     
  https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2016, MetaQuotes Software
Corp."
#property link    
 "https://www.mql5.com"
#property version   "1.00"
#property strict
//+------------------------------------------------------------------+
//| Expert initialization function  
     
     
     
     
     
  |
//+------------------------------------------------------------------+
int OnInit()
  {
//---
   printf("started");
//---
 
 return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Expert deinitialization function  
     
     
     
     
      |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
//---
   
  }
//+------------------------------------------------------------------+
//| Expert tick function    
     
     
     
     
     
     
    |
//+------------------------------------------------------------------+
void OnTick()
  {
//---
   printf("testing");
  }
//+------------------------------------------------------------------+
 
运行结果如下
注意选中(蓝色背景)的一行,这一行为初始化时候我们的代码。打印started。然后注意这一行上面是initialized。可见那一行是初始化函数运行完才运行。

由这张图我们可以知道,每次价格更新就会运行OnTick

mql4入门(1)的更多相关文章

  1. Angular2入门系列教程7-HTTP(一)-使用Angular2自带的http进行网络请求

    上一篇:Angular2入门系列教程6-路由(二)-使用多层级路由并在在路由中传递复杂参数 感觉这篇不是很好写,因为涉及到网络请求,如果采用真实的网络请求,这个例子大家拿到手估计还要自己写一个web ...

  2. ABP入门系列(1)——学习Abp框架之实操演练

    作为.Net工地搬砖长工一名,一直致力于挖坑(Bug)填坑(Debug),但技术却不见长进.也曾热情于新技术的学习,憧憬过成为技术大拿.从前端到后端,从bootstrap到javascript,从py ...

  3. Oracle分析函数入门

    一.Oracle分析函数入门 分析函数是什么?分析函数是Oracle专门用于解决复杂报表统计需求的功能强大的函数,它可以在数据中进行分组然后计算基于组的某种统计值,并且每一组的每一行都可以返回一个统计 ...

  4. Angular2入门系列教程6-路由(二)-使用多层级路由并在在路由中传递复杂参数

    上一篇:Angular2入门系列教程5-路由(一)-使用简单的路由并在在路由中传递参数 之前介绍了简单的路由以及传参,这篇文章我们将要学习复杂一些的路由以及传递其他附加参数.一个好的路由系统可以使我们 ...

  5. Angular2入门系列教程5-路由(一)-使用简单的路由并在在路由中传递参数

    上一篇:Angular2入门系列教程-服务 上一篇文章我们将Angular2的数据服务分离出来,学习了Angular2的依赖注入,这篇文章我们将要学习Angualr2的路由 为了编写样式方便,我们这篇 ...

  6. Angular2入门系列教程4-服务

    上一篇文章 Angular2入门系列教程-多个组件,主从关系 在编程中,我们通常会将数据提供单独分离出来,以免在编写程序的过程中反复复制粘贴数据请求的代码 Angular2中提供了依赖注入的概念,使得 ...

  7. wepack+sass+vue 入门教程(三)

    十一.安装sass文件转换为css需要的相关依赖包 npm install --save-dev sass-loader style-loader css-loader loader的作用是辅助web ...

  8. wepack+sass+vue 入门教程(二)

    六.新建webpack配置文件 webpack.config.js 文件整体框架内容如下,后续会详细说明每个配置项的配置 webpack.config.js直接放在项目demo目录下 module.e ...

  9. wepack+sass+vue 入门教程(一)

    一.安装node.js node.js是基础,必须先安装.而且最新版的node.js,已经集成了npm. 下载地址 node安装,一路按默认即可. 二.全局安装webpack npm install ...

随机推荐

  1. SpringCloud中Rabbitmq的使用

    1.pom配置,添加以来jar包 <dependency> <groupId>org.springframework.cloud</groupId> <art ...

  2. jQuery开发之Ajax

    1.load()方法 (1)load()方法是jQuery中最经常使用和最简单的Ajax方法,能载入远程HTML代码,并插入代码中. 它的结构为: load(url [,data] [,callbac ...

  3. 关于OC的内存管理-01

    1.什么是内存管理? 大家都知道手机的内存是有限的,app应用的内存也应该是受限制的,随着app应用的使用会导致内存的占用率增大.当内存占用率达到一种程度时.系统会发出内存警告.这时我们须要把一些不用 ...

  4. ScrollView白边问题

    在Android开发所使用的ScrollView中..兼容比較低的版本号的时候(比方14)会出现难看的白边.这时假设使用的是xml布局文件话设置ScrollView的android:fadingEdg ...

  5. Vs2012在Linux开发中的应用(6):改写Makefile项目的Build过程

    MSBUILD的编译过程实际上是依据一系列的targets文件定义的.当我们在IDE运行生成.批生成.清理命令的时候.VS会查找这些命令相应的Task并运行它,以下我们逐个分析这个过程. 当运行生成操 ...

  6. 在git push前怎样遗弃掉历史commit

    今天写了一天代码,然后 git hub commit 了 多达 7 次. 可是都没有把改动正式推送上去. 结果最后要推送的时候发现中间有一个提交文件超过了100M. 是 vs 的代码性能分析报告 .v ...

  7. Spring Boot 动态数据源(多数据源自己主动切换)

    本文实现案例场景: 某系统除了须要从自己的主要数据库上读取和管理数据外.另一部分业务涉及到其它多个数据库,要求能够在不论什么方法上能够灵活指定详细要操作的数据库. 为了在开发中以最简单的方法使用,本文 ...

  8. POJ 2886 Who Gets the Most Candies?(树状数组+二分)

    题目链接 注意题目中给的顺序是顺时针的,所以在数组中应该是倒着存的.左就是顺时针,右就是逆时针.各种调试之后,终于A了,很多种情况考虑情况. #include <cstring> #inc ...

  9. VS 预先生成事件命令

    宏 说明 $(ConfigurationName) 当前项目配置的名称(例如,“Debug|Any CPU”). $(OutDir) 输出文件目录的路径,相对于项目目录.这解析为“输出目录”属性的值. ...

  10. spark集成hivecontext配置

    spark版本:spark-1.6.0-bin-hadoop2.6hive版本:hive 1.2.1 1.hive-site.xml<property>  <name>hive ...