MT编程入门教程(0)----指标文件构成 (把在第三波的转来吧) 新评论 okwh 2007.03.19 14:53 MT编程入门教程(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--; } } // ///---------------------------------------------------------------------- [Copy to clipboard] 例2 CODE: //+------------------------------------------------------------------+ //双些线后是单行注释,用于注解,自用说明。/*和*/包起来实现多行注释,记录自己的说明介绍,编程使用记录等 //MQL4语言基本服从C语言的规则-----------注意目前MetaEditor处理不好多字节代码,所以不要在代码中使用中文和中文空格-------------+ //每个指标文件只是至少包括三个部分(1)property 和参数,数组声明,(2)初始化函数nit(), (3)主函数start() //property 是各种说明信息 //最重要必须的是这三种,(1)说明指标将画在价格窗口还是独立的窗口 //(2)有多少个(1~7)储存指标数据的数组,(3)说明对应将画指标的绘画颜色,编号1~7 #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); } //+------------------------------------------------------------------+ //|自定义函数,这里只是直接使用库函数实现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); Buffer1[pos]=iMA(NULL,0,MA_Period*2,MA_Shift,MA_Method,MA_Price,pos); Buffer2[pos]=iMA(NULL,0,MA_Period*3,MA_Shift,MA_Method,MA_Price,pos); pos--; } } void ma1() { int pos=Bars; //Bars = Number of bars in the current chart.当前窗口中的蜡烛数 while(pos>=0) { Buffer3[pos]=iMA(NULL,0,MA_Period*4,MA_Shift,MA_Method,MA_Price,pos); Buffer4[pos]=iMA(NULL,0,MA_Period*5,MA_Shift,MA_Method,MA_Price,pos); Buffer5[pos]=iMA(NULL,0,MA_Period*6,MA_Shift,MA_Method,MA_Price,pos); Buffer6[pos]=iMA(NULL,0,MA_Period*7,MA_Shift,MA_Method,MA_Price,pos); pos--; } } 新评论 您错过了交易机会: 免费交易应用程序 8,000+信号可供复制 探索金融市场的经济新闻 注册 登录 拉丁字符(不带空格) 密码将被发送至该邮箱 发生错误 使用 Google 登录 您同意网站政策和使用条款 如果您没有帐号,请注册 可以使用cookies登录MQL5.com网站。 请在您的浏览器中启用必要的设置,否则您将无法登录。 忘记您的登录名/密码? 使用 Google 登录