新版MT4基础架构函数

本文介绍了新版MT4交易平台中脚本、EA及指标的基础知识。在EA篇中,重点讲解了定时器功能,如何设置每60秒执行一次的定时任务,并在VOnTimer()函数中编写执行内容。而在指标篇中,提到了(prev_calculated)变量,用于了解已计算的K线数量。
部署运行你感兴趣的模型镜像

一、脚本篇

void OnStart()
  {
     printf("Start.");
   }
包含脚本的主函数部分,将脚本拖入图表时自动执行其内部的代码。


二、EA篇

int OnInit()
  {
   return(INIT_SUCCEEDED);
  }
初始化函数。将EA拖入图表时,在点击参数窗口的确认键后,自动运行一次该初始化函数内部的代码。


void OnDeinit(const int reason)
  {
      
  }
切换EA图表周期或产品、更改正在运行的EA的参数、移除正在运行EA或图表等操作均触发执行此函数。其中,reason参数返回的是OnDeinit()函数执行的原因代码。

EventSetTimer(60);
void OnTimer()
  {
  }

定时器功能。首先输入定时器时间代码(60代表每60秒),也即间隔多久时间执行一次。执行内容写入VOnTimer()函数中。


void OnChartEvent(const int id,
                  const long &lparam,
                  const double &dparam,
                  const string &sparam)
  {
  
  }
感应用户在客户端图表上的动作,一旦感应到相应动作,就自动执行OnChartEvent()内部的代码。相应动作通过四个参数定义,id代表相应动作的类型,lparam、dparam、sparam三个参数用于存放所捕获对象的参数,例如,需要在趋势线被选中时执行代码,那么sparam可以用于存储趋势线的名字。

示例:

void OnChartEvent(const int id,
                  const long &lparam,
                  const double &dparam,
                  const string &sparam)
  {
//---
    if(id==CHARTEVENT_KEYDOWN)
      {
        if(lparam=='j'|| lparam=='J')
          {
            changetimeframes();
          }
      }
  }
//+------------------------------------------------------------------+
void changetimeframes()
  {
            ENUM_TIMEFRAMES timeframes=PERIOD_CURRENT;
            switch(Period())
              {
                case PERIOD_D1:
                  timeframes=PERIOD_H4; break;
                case PERIOD_H4:
                  timeframes=PERIOD_H1; break;
                case PERIOD_H1:
                  timeframes=PERIOD_M30; break;
                case PERIOD_M30:
                  timeframes=PERIOD_M15; break;
              }
            if(timeframes!=PERIOD_CURRENT)
              {
                ChartSetSymbolPeriod(0,NULL,timeframes);
              }  
  }
上面例子中,在加载EA后,当键盘按下J键时,立刻执行图表大周期切换到较小周期的操作。

三、指标篇

int OnCalculate(const int rates_total,
                const int prev_calculated,
                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[])
  {

   return(rates_total);
  }
rates_total:图表上目前共加载了多少根K线

prev_calculated:计算过的K线有多少根


您可能感兴趣的与本文相关的镜像

Stable-Diffusion-3.5

Stable-Diffusion-3.5

图片生成
Stable-Diffusion

Stable Diffusion 3.5 (SD 3.5) 是由 Stability AI 推出的新一代文本到图像生成模型,相比 3.0 版本,它提升了图像质量、运行速度和硬件效率

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值