基础架构函数

脚本

将脚本一拖进图表就会执行

void OnStart()
  {
   
  }
EA

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
OnInit初始化的时候运行一次
OnDeinit切换时间周期、修改EA参数、强制关闭图标运行,reason参数是系统传进来的,执行原因,不需要手动输入
OnTimer定时器,设置定时器EventSetTimer(60)
OnChartEvent基础架构函数-感应k线图标中画的对象动作,当感应到一个动作产生,就执行你指定的代码

//+------------------------------------------------------------------+
//|                                                          sEA.mq4 |
//|                        Copyright 2018, MetaQuotes Software Corp. |
//|                                             https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2018, MetaQuotes Software Corp."
#property link      "https://www.mql5.com"
#property version   "1.00"
#property strict
#define KEY_NUMPAD_5       12 
#define KEY_LEFT           37 
#define KEY_UP             38 
#define KEY_RIGHT          39 
#define KEY_DOWN           40 
#define KEY_NUMLOCK_DOWN   98 
#define KEY_NUMLOCK_LEFT  100 
#define KEY_NUMLOCK_5     101 
#define KEY_NUMLOCK_RIGHT 102 
#define KEY_NUMLOCK_UP    104 
//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
  {
//--- create timer
   EventSetTimer(2);
      
//---
//--- enable object create events 
   ChartSetInteger(ChartID(),CHART_EVENT_OBJECT_CREATE,true); 
//--- enable object delete events 
   ChartSetInteger(ChartID(),CHART_EVENT_OBJECT_DELETE,true); 
//--- 
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
//--- destroy timer
   EventKillTimer();
   Print(__FUNCTION__,"_UninitReason = ",getUninitReasonText(_UninitReason));    
  }
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
  {
//---
   
  }
//+------------------------------------------------------------------+
//| Timer function                                                   |
//+------------------------------------------------------------------+
void OnTimer()
  {
//---
   // Print(TimeLocal());
  }
//+------------------------------------------------------------------+
//| ChartEvent function                                              |
//+------------------------------------------------------------------+
void OnChartEvent(const int id,
                  const long &lparam,
                  const double &dparam,
                  const string &sparam)
  {
//---
   Print("123ASD", id, CHARTEVENT_KEYDOWN);
   //--- the left mouse button has been pressed on the chart 
   if(id==CHARTEVENT_CLICK) 
     { 
      Print("The coordinates of the mouse click on the chart are: x = ",lparam,"  y = ",dparam); 
     } 
//--- the mouse has been clicked on the graphic object 
   if(id==CHARTEVENT_OBJECT_CLICK) 
     { 
      Print("The mouse has been clicked on the object with name '"+sparam+"'"); 
     } 
//--- the key has been pressed 
   if(id==CHARTEVENT_KEYDOWN) 
     { 
      switch(int(lparam)) 
        { 
         case KEY_NUMLOCK_LEFT:  Print("The KEY_NUMLOCK_LEFT has been pressed");   break; 
         case KEY_LEFT:          Print("The KEY_LEFT has been pressed");           break; 
         case KEY_NUMLOCK_UP:    Print("The KEY_NUMLOCK_UP has been pressed");     break; 
         case KEY_UP:            Print("The KEY_UP has been pressed");             break; 
         case KEY_NUMLOCK_RIGHT: Print("The KEY_NUMLOCK_RIGHT has been pressed");  break; 
         case KEY_RIGHT:         Print("The KEY_RIGHT has been pressed");          break; 
         case KEY_NUMLOCK_DOWN:  Print("The KEY_NUMLOCK_DOWN has been pressed");   break; 
         case KEY_DOWN:          Print("The KEY_DOWN has been pressed");           break; 
         case KEY_NUMPAD_5:      Print("The KEY_NUMPAD_5 has been pressed");       break; 
         case KEY_NUMLOCK_5:     Print("The KEY_NUMLOCK_5 has been pressed");      break; 
         default:                Print("Some not listed key has been pressed"); 
        } 
      ChartRedraw(); 
     } 
//--- the object has been deleted 
   if(id==CHARTEVENT_OBJECT_DELETE) 
     { 
      Print("The object with name ",sparam," has been deleted"); 
     } 
//--- the object has been created 
   if(id==CHARTEVENT_OBJECT_CREATE) 
     { 
      Print("The object with name ",sparam," has been created"); 
     } 
//--- the object has been moved or its anchor point coordinates has been changed 
   if(id==CHARTEVENT_OBJECT_DRAG) 
     { 
      Print("The anchor point coordinates of the object with name ",sparam," has been changed"); 
     } 
//--- the text in the Edit of object has been changed 
   if(id==CHARTEVENT_OBJECT_ENDEDIT) 
     { 
      Print("The text in the Edit field of the object with name ",sparam," has been changed"); 
     } 
  }
void suoxiao () {
   ENUM_TIMEFRAMES new_timefram = PERIOD_CURRENT;
   switch (Period())
   {
      case PERIOD_M5: new_timefram = PERIOD_M1; break;
      case PERIOD_M15: new_timefram = PERIOD_M5; break;
      case PERIOD_M30: new_timefram = PERIOD_M15; break;
      case PERIOD_H1: new_timefram = PERIOD_M30; break;
      case PERIOD_H4: new_timefram = PERIOD_H1; break;
      case PERIOD_D1: new_timefram = PERIOD_H4; break;
      case PERIOD_W1: new_timefram = PERIOD_D1; break;
      case PERIOD_MN1: new_timefram = PERIOD_W1; break;
   }
   if (new_timefram != PERIOD_CURRENT) {
      ChartSetSymbolPeriod(0, NULL, new_timefram);
   }
}
//+------------------------------------------------------------------+
string getUninitReasonText(int reasonCode) 
  { 
   string text=""; 
//--- 
   switch(reasonCode) 
     { 
      case REASON_ACCOUNT: 
         text="Account was changed";break; 
      case REASON_CHARTCHANGE: 
         text="Symbol or timeframe was changed";break; 
      case REASON_CHARTCLOSE: 
         text="Chart was closed";break; 
      case REASON_PARAMETERS: 
         text="Input-parameter was changed";break; 
      case REASON_RECOMPILE: 
         text="Program "+__FILE__+" was recompiled";break; 
      case REASON_REMOVE: 
         text="Program "+__FILE__+" was removed from chart";break; 
      case REASON_TEMPLATE: 
         text="New template was applied to chart";break; 
      default:text="Another reason"; 
     } 
//--- 
   return text; 
  } 

添加指标

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

//+------------------------------------------------------------------+
//|                                                  3indicators.mq4 |
//|                        Copyright 2018, MetaQuotes Software Corp. |
//|                                             https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2018, MetaQuotes Software Corp."
#property link      "https://www.mql5.com"
#property version   "1.00"
#property strict
#property indicator_chart_window
#property indicator_buffers 1
#property indicator_plots   1
//--- plot Label1
#property indicator_label1  "Label1"
#property indicator_type1   DRAW_LINE
#property indicator_color1  clrRed
#property indicator_style1  STYLE_SOLID
#property indicator_width1  1
//--- indicator buffers
double         Label1Buffer[];
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int OnInit()
  {
//--- indicator buffers mapping
   SetIndexBuffer(0,Label1Buffer);
   
//---
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
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[])
  {
//---
   int i, limit;
   limit = rates_total - prev_calculated;
   if (prev_calculated > 0) limit++;
   for (i = 0; i < limit; i++) 
   {
      Label1Buffer[i] = open[i];
   }
//--- return value of prev_calculated for next call
   return(rates_total);
  }
//+------------------------------------------------------------------+

开盘价指标:
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值