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