发新话题
打印

[MT指标及EA] 一个简单的指标脚本说明

一个简单的指标脚本说明

适合初学者
//+------------------------------------------------------------------+
//|                                                     SendMail.mq4 |
//|                       Copyright ?2007, MetaQuotes Software Corp. |
//|                                        http://www.metaquotes.net |
//+------------------------------------------------------------------+
#property copyright "Copyright ?2007, MetaQuotes Software Corp."
#property link      "http://www.metaquotes.net"

#property indicator_chart_window

extern int MA_Period=20;
extern int MA_Mode=0;
static double UD;
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int init()
  {
//---- indicators
   UD=iTime(NULL,0,0);
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| Custom indicator deinitialization function                       |
//+------------------------------------------------------------------+
int deinit()
  {
//----
   
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
int start()
  {
  int i=0;
  
  Print("对于当前货币对: ",TimeToStr(iTime(NULL,Period(),i)),", ",   iClose(NULL,Period(),i),", ", iVolume(NULL,Period(),i));
                                      
                              


   int    counted_bars=IndicatorCounted();   
   //Print(TimeToStr(TimeCurrent()),"    Bars=",Bars,"  Indicatorcounted=",counted_bars);
//----
   double K[2],MATemp[2],H[2],L[2];
   string Main,Text;
//----
   K[0]=Close[0]; // 当前卖出价格
   
   K[1]=iClose(NULL,0,1); //当前前一柱的结束时的卖出价格
   //Print("IClose[NULL,0,1]="+iClose(NULL,0,1)+",2="+iClose(NULL,0,2)+"3="+iClose(NULL,0,3));
   
   H[0]=iHigh(NULL,0,0); //当前最高价
   H[1]=iHigh(NULL,0,1);//前一柱最高价
   L[0]=iLow(NULL,0,0);// 当前最低价
   L[1]=iLow(NULL,0,1);// 前一柱最低价
   MATemp[0]=iMA(NULL,0,MA_Period,0,MA_Mode,PRICE_CLOSE,0); //求移动平均收盘(卖出)价,从当前开始计算
   MATemp[1]=iMA(NULL,0,MA_Period,0,MA_Mode,PRICE_CLOSE,1); // 求移动平均收盘(卖出)价,从前一个收盘价开始计算
   
   Print("H[1]="+H[1]+",MATemp[1]="+MATemp[1]+",K[0]="+K[0]+",MATemp[0]="+MATemp[0]+"UD="+TimeToStr(UD)+",iTime(NULL,0,0)="+TimeToStr(iTime(NULL,0,0)));
   if (H[1]<MATemp[1] &&  K[0]>MATemp[0] && UD!=iTime(NULL,0,0)) //当前收盘价>移动平均价 and 前一收盘价<移动收盘价 &&UD<>当前时间 就认为是上穿平均线
   {
   
     Main=StringConcatenate(Symbol(),":K线上穿均线");
     Text=StringConcatenate(Symbol(),":K线上穿",MA_Period,"均线");
     MessageBox(Main,Text);
     UD=iTime(NULL,0,0);
   }
   if (L[1]>MATemp[1]  &&  K[0]<MATemp[0] && UD!=iTime(NULL,0,0))
   {
     Main=StringConcatenate(Symbol(),":K线下穿均线");
     Text=StringConcatenate(Symbol(),":K线下穿",MA_Period,"均线");
     MessageBox(Main,Text);
     UD=iTime(NULL,0,0);
   }
//----
   return(0);
  }
//+------------------------------------------------------------------+

TOP

引用:
原帖由 startexcel 于 2008-5-15 15:56 发表
适合初学者
//+------------------------------------------------------------------+
//|                                                     SendMail.mq4 |
//|                       Copyright ?2007, Meta ...
多谢版主,很好的样本。

TOP

发新话题