想改公式-请教各位前辈

 

请教各位前辈,下面这个高低指标存在问题,运行时在\MetaTrader 4\experts\logs中会出现一个体积非常庞大的记事本文件(如果运行10小时,或许会超过1G)。所以想请高手给改改。想改的目的如下:

1.这个指标画出的是当天的高低线,想改成前一天的高低线;

2.还想在做一个类似的指标,显示前一周的高低线;

3.还想再做一个类似的指标,显示前一个月的高低线;

4.不出现上述记事本文件;

具体的高低指标源码如下,先在此谢谢了。

//+------------------------------------------------------------------+
//| High&Low.mq4 |
//| Copyright ?2007, GU QIANFENG |
//| |
//+------------------------------------------------------------------+
#property copyright "Copyright ?2007, GU QIANFENG"
#property link ""

#property indicator_chart_window
#property indicator_buffers 2
#property indicator_color1 MediumBlue
#property indicator_color2 Red
//---- buffers
double ExtHighBuffer[];
double ExtLowBuffer[];
//+------------------------------------------------------------------+
//| Custom indicator initialization function |
//+------------------------------------------------------------------+
//| Custom indicator deinitialization function |
//+------------------------------------------------------------------+
int deinit()
{
//----

//----
return(0);
}
//+------------------------------------------------------------------+
//| Custom indicator iteration function |
//+------------------------------------------------------------------+
int start()
{
int counted_bars=IndicatorCounted();
//----
int i;
double High_D1,Low_D1;
string Date1;
int Shift;

if(Period()<PERIOD_D1)
{
for(i=0;i<Bars;i++)
{
Date1=TimeToStr(iTime(Symbol(),Period(),i),TIME_DATE);
Print("Date= ",Date1);
Shift=iBarShift(Symbol(),PERIOD_D1,StrToTime(Date1),0);
High_D1=iHigh(Symbol(),PERIOD_D1,Shift);
Low_D1=iLow(Symbol(),PERIOD_D1,Shift);
ExtHighBuffer[i]=High_D1;
ExtLowBuffer[i]=Low_D1;
}
}
//----
return(0);
}
//+------------------------------------------------------------------+

 

1.这个指标画出的是当天的高低线,想改成前一天的高低线;

Shift = Shift +1;

High_D1=iHigh(Symbol(),PERIOD_D1,Shift);
Low_D1=iLow(Symbol(),PERIOD_D1,Shift);

2.还想在做一个类似的指标,显示前一周的高低线;

Shift=iBarShift(Symbol(),PERIOD_W1,StrToTime(Date1),0);
Shift = Shift +1;

High_D1=iHigh(Symbol(),PERIOD_W1,Shift);
Low_D1=iLow(Symbol(),PERIOD_W1,Shift);

3.还想再做一个类似的指标,显示前一个月的高低线;

Shift=iBarShift(Symbol(),PERIOD_MN1,StrToTime(Date1),0);
Shift = Shift +1;

High_D1=iHigh(Symbol(),PERIOD_MN1,Shift);
Low_D1=iLow(Symbol(),PERIOD_MN1,Shift);

4.不出现上述记事本文件;

Print("Date= ",Date1);

改为 // Print("Date= ",Date1);

 
太谢谢你啦,969.
 
969:你好。首先谢谢你的指导,高低指标已经做好啦,很漂亮。我还想在(2.还想在做一个类似的指标,显示前一周的高低线;)里添上本周的开盘线,能行吗?
 
969:你好。已经解决了,再次谢谢你的指导。
原因: