首页 > 学院 > 外汇技术面

【MetaTrader编程入门教程】---指标文件构成

MetaTrader编程入门教程(0)
  ----指标文件构成

例1
//+--------------------------------------------------
//双些线后是单行注释,用于注解,自用说明。/*和*/包起来实现多行注释,记录自己的说明介绍,编程使用记录等
//MQL4语言基本服从C语言的规则-----------注意目前MetaEditor处理不好多字节代码,所以不要在代码中使用中文和中文空格-------------+
//每个指标文件只是至少包括三个部分(1)property 和参数,数组声明,(2)初始化函数nit(), (3)主函数start()
//property 是各种说明信息
//最重要必须的是这三种,(1)说明指标将画在价格窗口还是独立的窗口
//(2)有多少个(1~7)储存指标数据的数组,(3)说明对应将画指标的绘画颜色,编号1~7
#property indicator_chart_window
#property indicator_buffers 1
#property indicator_color1 Red
//---- 可设置的参数,可根据需要,由使用者设置
extern int MA_Period=13;
extern int MA_Shift=0;
extern int MA_Method=2;
extern int MA_Price = 6;
/*  MA_Method =
MODE_SMA 0 Simple moving average,
MODE_EMA 1 Exponential moving average,
MODE_SMMA 2 Smoothed moving average,
MODE_LWMA 3 Linear weighted moving average.
*/
/*  MA_Price =
PRICE_CLOSE 0 Close price.
PRICE_OPEN 1 Open price.
PRICE_HIGH 2 High price.
PRICE_LOW 3 Low price.
PRICE_MEDIAN 4 Median price, (high+low)/2.
PRICE_TYPICAL 5 Typical price, (high+low+close)/3.
PRICE_WEIGHTED 6 Weighted close price, (high+low+close+close)/4.
*/
//数组,储存指标数据
double Buffer0[];
//| 初始化准备函数,装入时调用一次 
int init()
  {
//-设置编号为0的线的线形等参数, 0~6,对应indicator_color1~7
   SetIndexStyle(0,DRAW_LINE);
//---- 设置编号为0的线 与数组的对应关系, 0~6
   SetIndexBuffer(0,Buffer0);
   return(0);
  }
int start()   //指标计算主函数,每次计算调用
  {
  ma();
   return(0);
  }
//自定义函数,这里只是直接使用库函数实现MA, 若你自己计算,可设计任何指标    
void ma()
  {
   int  pos=Bars;  
//Bars = Number of bars in the current chart.当前窗口中的蜡烛数
   while(pos>=0)
     {
      Buffer0[pos]=iMA(NULL,0,MA_Period,MA_Shift,MA_Method,MA_Price,pos);
     pos--;
     }
  }
//+--------------------------------------------------
例2
//+--------------------------------------------------
#property indicator_separate_window
#property indicator_buffers 7
#property indicator_color1 Red
#property indicator_color2 Yellow
#property indicator_color3 Blue
#property indicator_color4 Green
#property indicator_color5 Gray
#property indicator_color6 SkyBlue
#property indicator_color7 Tan
extern int MA_Period=13;
extern int MA_Shift=0;
extern int MA_Method=2;
extern int MA_Price = 6;

double Buffer0[];
double Buffer1[];
double Buffer2[];
double Buffer3[];
double Buffer4[];
double Buffer5[];
double Buffer6[];
//----
int init()
  {
//-设置编号为0的线的线形等参数, 0~6,对应indicator_color1~7
   SetIndexStyle(0,DRAW_LINE);
   SetIndexStyle(1,DRAW_LINE);
   SetIndexStyle(3,DRAW_LINE);
   SetIndexStyle(4,DRAW_LINE);
   SetIndexStyle(5,DRAW_LINE);
   SetIndexStyle(6,DRAW_LINE);
//---- 设置编号为0的线 与数组的对应关系, 0~6
   SetIndexBuffer(0,Buffer0);
   SetIndexBuffer(1,Buffer1);
   SetIndexBuffer(2,Buffer2);
   SetIndexBuffer(3,Buffer3);
   SetIndexBuffer(4,Buffer4);
   SetIndexBuffer(5,Buffer5);
   SetIndexBuffer(6,Buffer6);
   return(0);
  }
//
int start()   //指标计算主函数,每次计算调用
 {
  ma();
  ma1();
  return(0);
 }

void ma()
  {
   int  pos=Bars;  
   while(pos>=0)
     {
      Buffer0[pos]=iMA(NULL,0,MA_Period,MA_Shift,MA_Method,MA_Price,pos);
      Buffer1[pos]=iMA(NULL,0,MA_Period*2,MA_Shift,MA_Method,MA_Price,pos);

【版权声明】

本文仅代表作者观点,不代表本站立场。Fx263.com对文中陈述、观点判断保持中立,不对所包含内容的准确性、可靠性或完整性提供任何明示或暗示的保证,且不构成任何投资建议,请读者仅作参考,并自行承担全部风险与责任。Fx263.com作为信息内容发布平台,页面展示内容的目的在于传播更多信息,不代表Fx263.com立场;本站会员及自媒体人所发的稿件所载明的信息与本网无关,如文章涉及版权,请联系本站处理。

【风险提示】

请通过正规渠道参与外汇保证金交易。目前通过网络平台提供、参与外汇保证金交易均属非法。请提高意识,谨防损失!外汇、贵金属和差价合约(OTC场外交易)是杠杆产品,存在较高的风险,可能会导致亏损您的投资本金,请理性投资。

 

Fx263.com - 全球财经中文网

官方交流微信号:FX263cn注明来意

重要声明 | 本站内容不适用于中国大陆地区访客。

Powered By Fx263.com - 版权所有

大中华地区全球财经中文网

本站内容仅供参考盈亏自负

FX263网 - 全球财经中文网