MT5通过实例学编程,超级详细,痛点讲解,不怕你不会。学会自编不求人 (一)将每日开盘价做成指标显示,日内交易很有用(老手请绕路)

这是一个非常简单的程序,同时也是一个非常有用的指标。

对于新手来说,越是简单的程序,越容易学习。所以让我们从最简单的程序开始。一起搞定MT5吧

程序虽然简单,但是里边包含的知识原理是一样的。

看完一个程序,争取会写一堆类似的,举一反三。

通过例子学习编写程序。

下图是做完的每日开盘价。

 

//+------------------------------------------------------------------+
//|                                                        开盘价.mq5 |
//|                                  Copyright 2022, MetaQuotes Ltd. |
//|                                             https://www.mql5.com |
//+------------------------------------------------------------------+
//#property-是一个程序里边的声明。就是预先声明一些变量,可以供整个程序使用
//下边的这好几个//#property

#property copyright "Copyright 2022, MetaQuotes Ltd."
#property link      "https://www.mql5.com"
#property version   "1.00"
//上边这三行#property对一些简单小程序没什么用,放哪儿就行了。
//下边的这些#property在编写指标的时候必须用到。这个地方搞懂了,看指标类代码的时候就不会被吓住了。同时自己编写指标的时候也要对这个地方有耐心,这个地方不认真,
//后边的代码写的再好,图表上显示的也是乱码,非常的打击新手村村民的信心。

//buffers指的是缓存。1就是1个缓存。我们在这儿只需要显示1根线。需要几根就填几根,最多8根
#property indicator_buffers 1
//plots指的是划线。1就是画一根线(这个线既包括线也包括箭头等等,都叫plots)。
#property indicator_plots 1

//chart表示的是主图。因为我们这个指标写的是开盘价,所以必须用_chart_。但是编写像kdj之类指标,是放在副图上的,就需要用_separate_。
#property indicator_chart_window

//_color表示所画这根线的颜色。_color1里边的这个1表示的是第一号缓存。
//小问题:如果这儿需要3根线,那么需要怎么写呢?
#property indicator_color1 clrOrchid
//_type表示的是划线的类型。_type1表示的是第一号缓存的划线类型
#property indicator_type1 DRAW_LINE
//_color1,_type1只是划线属性里边的两个,其他的还有好多,比如:_width(宽度),_style(样式)等等。
//_type,_style这儿有个比较,_type表示线,箭头,标签,等等。_style表示的是一条线,应该画实线还是画虚线等等。

//-------以上就是编写指标程序的准备工作,这个工作简单而重要,用的好就可以做出各种样式复杂的指标


//-------
double a[];    //定义一个数组。这个数组对应的就是上面的那个_buffers 1。

//+------------------------------------------------------------------+
//|OnInit是初始化函数。这个函数在指标刚开始的时候会启用,然后就不用了。在点上边那个“编写”按钮的时候也会调用一次。然后就不用了。                                                                  |
//+------------------------------------------------------------------+
int OnInit()
{
//SetIndexBuffer函数可以把我们声明的缓存buffers和上边定义的数组变量a[]绑定起来,也就是一一对应起来
//这儿的0是缓存的编号,也就是第0号缓存。上文的buffers 1指的是1个缓存。

   SetIndexBuffer(0,a,INDICATOR_DATA);  //给缓存绑定序号

   return(INIT_SUCCEEDED);              //返回初始化成功,这个是系统自带,就是说系统初始化成功了。
}
//+------------------------------------------------------------------+
//|OnCalculate这个函数是指标程序里最主要的函数,图标上价格的每一次跳动,这个函数都会计算一次,所以这个函数调用的最频繁。
/*关于这个函数的一些讲解:
1.const,这个词是一个限制符,限制住后边的变量不要被改动。也就是计算的过程中不能给这个变量赋值。
2.里边的数组time[],open[].....等等这些是一般数组,不是时间序列。数组和时间序列有什么不同呢?数组起始点,也就是第0号在最左边。
  而时间序列的起始点,也就是第0号在最右边。
3.prev_calculated,这个变量必须要讲一下,继续往下看。
*/

//+------------------------------------------------------------------+
int OnCalculate(const int rates_total,      //图表k线总根数
                const int prev_calculated,  //已经被计算过的k线根数
                const datetime &time[],     //时间
                const double &open[],       //开盘价
                const double &high[],       //最高价
                const double &low[],        //最低价
                const double &close[],      //收盘价
                const long &tick_volume[],  //单笔成交量
                const long &volume[],       //成交量
                const int &spread[])        //点差
{
//
/*关于prev_calculated。
1.这个变量是用来减少重复计算的。比如说一张图表上有10万根k线,如果每一次都从第0号开始计算一遍,那么就会极大的浪费电脑资源。这个变量就可以解决这个问题,
  这个变量把之前计算过的k线记下来,新的k线出现时,就不再计算原来的了,只计算新的就行了。
*/

   int limit;               //先定义一个变量
   if(prev_calculated==0)   //prev_calculated==0,表示之前没有计算过,这时候需要计算全部数据
   {
      limit=rates_total;
   }
   else                     //prev_calculated不等0的情况,表示之前有一部分数据已经计算过了。就不在参与计算了
   {
      limit=prev_calculated;
   }
//----下边的这一小小的部分就是计算部分。我们新手村的刚开始最喜欢这一部分。但苦于搞不定上边那些没用的,然后程序总是出错。
/*
看图表
*/
   for(int i=0; i<limit; i++)
   {
      int sj=iBarShift(Symbol(),PERIOD_D1,time[i],true);
      a[i]=iOpen(Symbol(),PERIOD_D1,sj);
   }

   return(rates_total);
}

//+------------------------------------------------------------------+

//+------------------------------------------------------------------+

这个15分钟图表是程序中的计算思路

 

好了,各位老铁,觉得还行的话,加个关注,后续还有,很快就能学会把自己的思路转化成程序

  • 2
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
MT5(MetaTrader 5)是一种流行的外汇交易平台,它提供了一些API和SDK,使开发者可以使用C++编程语言来创建自己的交易策略和指标。 下面是使用C++编程MT5中创建交易策略的基本步骤: 1. 下载和安装MT5平台:首先,你需要从MetaQuotes官方网站下载并安装MT5平台。 2. 打开MT5平台:安装完成后,打开MT5平台,进入"工具"菜单,点击"选项"。 3. 启用自动交易:在弹出的对话框中,选择"专家顾问"选项卡,并勾选"允许自动交易"和"允许DLL导入"选项。 4. 创建新的交易策略:在MT5平台上,点击"文件"菜单,选择"新建MQL5专家顾问"。在弹出的对话框中,选择"C++文件(.cpp)"作为文件类型,并为你的策略指定一个名称。 5. 编写策略代码:使用C++编程语言编写你的交易策略代码。你可以使用MT5提供的API和SDK来访问市场数据、执行交易操作等。详细的API文档可以在MetaQuotes官方网站上找到。 6. 编译和调试策略:完成代码编写后,点击MT5平台上的"编译"按钮,编译你的交易策略代码。如果有任何编译错误,需要进行修正。 7. 运行交易策略:编译成功后,你可以在MT5平台上选择一个交易品种和时间段,然后将你的交易策略应用到该图表上。你的策略将自动运行,并根据设定的规则执行交易操作。 注意,以上只是一个基本的概述,MT5的C++编程涉及到更多的细节和高级功能。为了更深入地了解如何在MT5中使用C++编程,建议参考MetaQuotes官方网站上的相关文档和教程,以及参考其他开发者的经验和资源。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

玻璃房的钥匙

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值