适合初学者
//+------------------------------------------------------------------+
//| 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);
}
//+------------------------------------------------------------------+