[MT4指标]Discipline 指标
附图指标,
Discipline 指标
mt4指标类型:趋势指标
是否能用在mt4手机版上:否
是否含有未来函数:无
//+------------------------------------------------------------------+
//| Discipline |
//| Copyright ? 1999-2008, MetaQuotes Software Corp. |
//| FX_FISH |
//+------------------------------------------------------------------+
#property copyright "Copyright ? 2005, Kiko Segui"
#property link "[email protected]"
//----
#property indicator_separate_window
#property indicator_buffers 2
#property indicator_color1 Lime
#property indicator_color2 Red
//----
double buffer1;
double buffer2;
//----
extern int period=10;
extern int price=0; // 0 or other = (H+L)/2
// 1 = Open
// 2 = Close
// 3 = High
// 4 = Low
// 5 = (H+L+C)/3
// 6 = (O+C+H+L)/4
// 7 = (O+C)/2
extern bool Mode_Fast=false;
extern bool Signals =true;
//+------------------------------------------------------------------+
//| |
//+------------------------------------------------------------------+
int init()
{
SetIndexStyle(0,DRAW_HISTOGRAM,STYLE_SOLID,2,Lime);
SetIndexBuffer(0,buffer1);
SetIndexStyle(1,DRAW_HISTOGRAM,STYLE_SOLID,2,Red);
SetIndexBuffer(1,buffer2);
return(0);
}
//+------------------------------------------------------------------+
//| |
//+------------------------------------------------------------------+
int deinit()
{
int i;
double tmp;
//----
for(i=0;i=0)
{
MaxH=High[Highest(NULL,0,MODE_HIGH,period,i)];
MinL= Low[ Lowest(NULL,0,MODE_LOW, period,i)];
switch(price)
{
case 0: _price=(High+Low)/2; break;
case 1: _price= Open; break;
case 2: _price= Close; break;
case 3: _price= High; break;
case 4: _price= Low; break;
case 5: _price=(High+Low+Close)/3; break;
case 6: _price=(Open+High+Low+Close)/4; break;
case 7: _price=(Open+Close)/2; break;
default: _price=(High+Low)/2; break;
}
Value=0.33*2*((_price-MinL)/(MaxH-MinL)-0.5) + 0.67*Value1;
Value=MathMin(MathMax(Value,-0.999),0.999);
Fish =0.5*MathLog((1+Value)/(1-Value))+0.5*Fish1;
buffer1=0;
buffer2=0;
//----
if((Fish<0) && (Fish1>0))
{
if(Signals)
{
ObjectCreate("Exit"+DoubleToStr(i,0),OBJ_ARROW,0,Time,_price);
ObjectSet("Exit"+DoubleToStr(i,0),OBJPROP_ARROWCODE,251);
ObjectSet("Exit"+DoubleToStr(i,0),OBJPROP_COLOR,Red);
}
buy=0;
}
if((Fish>0) && (Fish1<0))
{
if(Signals)
{
ObjectCreate("Exit"+DoubleToStr(i,0),OBJ_ARROW,0,Time,_price);
ObjectSet("Exit"+DoubleToStr(i,0),OBJPROP_ARROWCODE,251);
ObjectSet("Exit"+DoubleToStr(i,0),OBJPROP_COLOR,Red);
}
sell=0;
}
if(Fish>=0)
{ buffer1=Fish; }
else
{ buffer2=Fish; }
tmp=i;
if((Fish<-Threshold) && (Fish>Fish1) && (Fish1<=Fish2))
{
if (Signals)
{
ObjectCreate("Sel"+DoubleToStr(i,0),OBJ_ARROW,0,Time,High+5*Point);
ObjectSet("Sel"+DoubleToStr(i,0),OBJPROP_ARROWCODE,226);
ObjectSet("Sel"+DoubleToStr(i,0),OBJPROP_COLOR,Red);
}
sell=1;
}
if((Fish>Threshold) && (Fish=Fish2))
{
if (Signals)
{
ObjectCreate("Buy"+DoubleToStr(i,0),OBJ_ARROW,0,Time,Low-5*Point);
ObjectSet("Buy"+DoubleToStr(i,0),OBJPROP_ARROWCODE,225);
ObjectSet("Buy"+DoubleToStr(i,0),OBJPROP_COLOR,Aqua);
}
buy=1;
}
Value1=Value;
Fish2=Fish1;
Fish1=Fish;
i--;
}
return(0);
}
//+------------------------------------------------------------------+
Discipline.jpg
