找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
首页论坛EAHub 外汇论坛
查看: 19|回复: 0

MQL5基础学习(一)

[复制链接]

4万

主题

54

回帖

4万

积分

管理员

积分
45954
发表于 2026-8-26 18:11:00 | 显示全部楼层 |阅读模式
基本的MQL5基本函数的总结。z


#property copyright "wang"

#property link      "https://www.mql5.com"

#property version   "1.00"

//初始化  方法调用

int OnInit()

  {

//多少秒调用一次OnTimer()函数

   Alert("OnInit  执行");


//此函数只要开始执行就不会停止,会每3秒执行一次OnTimer()函数 -----> 注册计时器

   EventSetTimer(3);

   return(INIT_SUCCEEDED);

  }


//deal死亡函数 ,在程序结束运行时调用的函数

void OnDeinit(const int reason)

  {

//------> 注销计时器

   EventKillTimer();

  }


// 在市场每获取一次报价会执行一次此函数

void OnTick()

  {

//---

//Alert("Tick  执行");

   Comment("0号收盘价 "+(string)iClose(Symbol(),PERIOD_CURRENT,0)+"\n ",

           "0号开盘价"+(string)iOpen(Symbol(),PERIOD_CURRENT,0)+"\n");

/*

//阻塞函数,会阻塞挂起,返回值看文档标识,文档标识按F1

   MessageBox("退出","要退出EA程序吗?",MB_CANCELTRYCONTINUE);

   int v =     MessageBox("是否退出EA","退出EA!!!",MB_YESNO);

   if(v==6)

     {

     Alert("退出了");

//专家移除

     ExpertRemove();  

     }

*/

/*

   datetime     time;          // 价格更新的最近时间

   double       bid;           // 当前卖价

   double       ask;           // 当前买价

   double       last;          // 最后交易的价格(Last)

   ulong        volume;        // 当前最后价格的交易量

   long         time_msc;      // 价格最后一次更新的时间,以毫秒计算

   uint         flags;         // 报价标识

   double       volume_real;   // 精确度更高的当前最后价格的交易量

*/

//获取以上基本信息  ↑   

   MqlTick last_tick;

// 其实就算mysql访问数据库中select语句将数据全部楼出来并且填充给对象  

   if(SymbolInfoTick(Symbol(),last_tick))   

     {

      Print(last_tick.time,": 卖价 = ",last_tick.bid,

            " 买价 = ",last_tick.ask,"  当前最后价格的交易量 = ",last_tick.volume_real);

     }

     else

     {

// 获取错误信息

         Print("SymbolInfoTick() failed, error = ",GetLastError());

     }

// 调用1970.01.1 起始 至今 的毫秒值。

    int period =  PeriodSeconds(PERIOD_CURRENT);

    PlaySound("timeout.wav");

    Print(period);

    Print(100-150==-50);

  }


//定时器执行函数

void OnTimer()

  {

//---

//   Alert("OnTimer  执行");

  }

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

//|  这个函数未涉及到

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

void OnChartEvent(const int id,

                  const long &lparam,

                  const double &dparam,

                  const string &sparam)

  {

  }


==================================================================


总结:MT5每次报价会循环调用 OnTick 函数,OnTick 处理我们的交易逻辑。

处理交易逻辑的大致流程为:

       1.  获取当前MT5面板上的数据,例如  币种  做空  做多 等等基本信息。

       2.  根据信息进行加工,拆分,筛选,运算,等等一系列操作。

       3.  在依据已知信息,来进行 做多  做空  以及剥头皮  平仓,等基本的交易操作。

猜测:

       更高级的开发 :多币种之间的数据处理,多指标数据之间的分析操作。经过写脚本语言P行情信息,再根据大数据分析行情信息,在结合指标信息等等,综合分析出ea下单以及平仓时机。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|小黑屋|EAHub外汇论坛

GMT+8, 2026-10-10 22:35 , Processed in 0.096526 second(s), 19 queries .

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表