Miscellaneous
0
Views
0
Downloads
0
Favorites
Discipline_v1
//+------------------------------------------------------------------+
//| Discipline |
//| Copyright © 1999-2008, MetaQuotes Software Corp. |
//| FX_FISH |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2005, Kiko Segui"
#property link "webtecnic@terra.es"
//----
#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<Bars;i++)
{
ObjectDelete("Sel"+DoubleToStr(i,0));
ObjectDelete("Buy"+DoubleToStr(i,0));
ObjectDelete("Exit"+DoubleToStr(i,0));
}
return(0);
}
double Value=0,Value1=0,Value2=0,Fish=0,Fish1=0,Fish2=0;
int buy=0,sell=0;
//+------------------------------------------------------------------+
//| |
//+------------------------------------------------------------------+
int start()
{
int i;
double _price;
double tmp;
double MinL=0;
double MaxH=0;
double Threshold=1.2;
//----
int counted_bars = IndicatorCounted();
if(counted_bars < 0) return(-1);
if(counted_bars > 0) counted_bars--;
i = Bars - counted_bars;
if(counted_bars==0) i-=1+period;
while(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[i]+Low[i])/2; break;
case 1: _price= Open[i]; break;
case 2: _price= Close[i]; break;
case 3: _price= High[i]; break;
case 4: _price= Low[i]; break;
case 5: _price=(High[i]+Low[i]+Close[i])/3; break;
case 6: _price=(Open[i]+High[i]+Low[i]+Close[i])/4; break;
case 7: _price=(Open[i]+Close[i])/2; break;
default: _price=(High[i]+Low[i])/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[i]=0;
buffer2[i]=0;
//----
if((Fish<0) && (Fish1>0))
{
if(Signals)
{
ObjectCreate("Exit"+DoubleToStr(i,0),OBJ_ARROW,0,Time[i],_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[i],_price);
ObjectSet("Exit"+DoubleToStr(i,0),OBJPROP_ARROWCODE,251);
ObjectSet("Exit"+DoubleToStr(i,0),OBJPROP_COLOR,Red);
}
sell=0;
}
if(Fish>=0)
{ buffer1[i]=Fish; }
else
{ buffer2[i]=Fish; }
tmp=i;
if((Fish<-Threshold) && (Fish>Fish1) && (Fish1<=Fish2))
{
if (Signals)
{
ObjectCreate("Sel"+DoubleToStr(i,0),OBJ_ARROW,0,Time[i],High[i]+5*Point);
ObjectSet("Sel"+DoubleToStr(i,0),OBJPROP_ARROWCODE,226);
ObjectSet("Sel"+DoubleToStr(i,0),OBJPROP_COLOR,Red);
}
sell=1;
}
if((Fish>Threshold) && (Fish<Fish1) && (Fish1>=Fish2))
{
if (Signals)
{
ObjectCreate("Buy"+DoubleToStr(i,0),OBJ_ARROW,0,Time[i],Low[i]-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);
}
//+------------------------------------------------------------------+
Comments
Markdown Formatting Guide
# H1
## H2
### H3
**bold text**
*italicized text*
[title](https://www.example.com)

`code`
```
code block
```
> blockquote
- Item 1
- Item 2
1. First item
2. Second item
---