PDS.mq4 |
//| Copyright © 2012, MetaQuotes Software Corp. |
//| http://www.metaquotes.net |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2012, Analizci"
#property link "http://www.ortaklar.de"

#property indicator_separate_window
#property indicator_buffers 4

#property indicator_minimum -2
#property indicator_maximum 2

#property indicator_color1 Blue
#property indicator_color2 Red
#property indicator_color3 White
#property indicator_color4 DarkOrange

extern int PS_LLV=14;
extern int PS_HHV=14;
extern int PS_ATR=14;

double BufferAL[];
double BufferSAT[];
double BufferCIKIS[];
double BufferSTOP[];

//+------------------------------------------------------------------+
//| Custom indicator initialization function |
//+------------------------------------------------------------------+
int init()
{


IndicatorBuffers(4);

SetIndexStyle(0, DRAW_ARROW);
//SetIndexStyle(0,DRAW_LINE,STYLE_SOLID,2);
SetIndexBuffer(0,BufferAL);

SetIndexLabel(0,"AL");
SetIndexArrow(0,233);


SetIndexStyle(1, DRAW_ARROW);
SetIndexBuffer(1,BufferSAT);
SetIndexLabel(1,"SAT");
SetIndexArrow(1,232);

//SetIndexStyle(1,DRAW_LINE,STYLE_SOLID,2);
// SetIndexBuffer(1,BufferSAT);


SetIndexStyle(2,DRAW_LINE,STYLE_SOLID,2);
SetIndexBuffer(2,BufferCIKIS);

// SetIndexStyle(3,DRAW_LINE,STYLE_SOLID,2);
//SetIndexBuffer(3,BufferSTOP);

SetIndexStyle(3, DRAW_ARROW);
SetIndexBuffer(3,BufferSTOP);
SetIndexLabel(3,"Stop");
SetIndexArrow(3,232);

//---- indicators
//----
return(0);
}
//+------------------------------------------------------------------+
//| Custom indicator deinitialization function |
//+------------------------------------------------------------------+
int deinit()
{
//----

//----
return(0);
}
//+------------------------------------------------------------------+
//| Custom indicator iteration function |
//+------------------------------------------------------------------+
int start()
{
int counted_bars=IndicatorCounted();

int i,j, k,BarsSayisi;
int GirisAnahtari =0;
int ilk_GirisAnahtari =0;

int Sat_CikisAnahtari =0;
double Hedef_Fiyat=0;
double Stop_Fiyat=0;

double Stop_Anahtar=0;
double Alis_Anahtar=0;


double PDS_Dalis_Degeri=0;
double PDS_Dalis_Hedef_Degeri=0;
double TepeNokta_Degeri=0;

int PDS_Dalis_Bar=0;
int PDS_Dalis_Dip_Anahtar=0;

BarsSayisi=Bars;


for(
i=BarsSayisi-(BarsSayisi- 1500);i>=0;i--)
{

int hy=iHighest(NULL,0,MODE_HIGH,PS_HHV,i);
int ld=iLowest(NULL,0,MODE_LOW,PS_LLV,i);

double hyd=High[hy];
double ldd=Low[ld];


double myATR=iATR(NULL,0,PS_ATR,i);

int LowBar=i;
double LowDegeri=Low[i];


if(
ilk_GirisAnahtari==0)
{
if (
hy>ld )
{

for(
j=i;j<=i+(hy-ld);j++)
{

if (
Low[j]<LowDegeri)
{
LowBar=j;
LowDegeri=Low[j];
}

}

if(
Close[i]>LowDegeri+myATR && Close[i+1]<=LowDegeri+iATR(NULL,0,PS_ATR,i+1) && hyd>Close[i])
{
ilk_GirisAnahtari =1;
GirisAnahtari =1;
BufferAL[i]= 1;
Hedef_Fiyat=LowDegeri+2.5*myATR ;
Stop_Fiyat=Close[i]-myATR;
Stop_Anahtar=0;
Alis_Anahtar=1;

// Alert("AL 1 " + i + "" + Close[i] + " " + myATR);


}
}
}

if (
GirisAnahtari ==1 && Stop_Anahtar==0 )
{
if(
Close[i]<=Stop_Fiyat)
{
TepeNokta_Degeri=0;

Stop_Anahtar=1;
//Stop_Fiyat=0;

PDS_Dalis_Bar=i;
BufferSTOP[i]=1;
PDS_Dalis_Hedef_Degeri=Close[i]-2.5*myATR ;
PDS_Dalis_Degeri=Close[i];

//Alert("STOP" + " " + i +" " + Close[i] + " " + PDS_Dalis_Hedef_Degeri +" " + PDS_Dalis_Bar);

}
}

if (
PDS_Dalis_Bar !=0 )
{
//Alert(i);
if (Close[i]<PDS_Dalis_Hedef_Degeri)
{
PDS_Dalis_Dip_Anahtar=1;


}

if (
PDS_Dalis_Dip_Anahtar==1)
{

LowBar=i;
LowDegeri=Low[i];

for(
j=0;j<=PDS_Dalis_Bar-i;j++)
{
if (
Low[i+j]<LowDegeri)
{
LowBar=i+j;
LowDegeri=Low[i+j];
}

}

if(
Close[i]>LowDegeri+myATR && Close[i+1]<=LowDegeri+iATR(NULL,0,PS_ATR,i+1))
{
ilk_GirisAnahtari =1;
BufferAL[i]= 1;
Hedef_Fiyat=LowDegeri+2.5*myATR ;
Stop_Fiyat=Close[i]-myATR;
Stop_Anahtar=0;
Alis_Anahtar=1;

// Alert("AL 2 " + "" + i);

}
}
}


if (
GirisAnahtari ==1 && Alis_Anahtar==1)
{
if(
Close[i]>=Hedef_Fiyat)
{

BufferSAT[i]=1;
Sat_CikisAnahtari=1;
Stop_Fiyat=Close[i]-myATR;
ilk_GirisAnahtari =1;
Alis_Anahtar=0;
Stop_Anahtar=1;

ilk_GirisAnahtari =0;

}
if (
GirisAnahtari ==1 && Alis_Anahtar==1)
{
if(
Close[i]>=Hedef_Fiyat)
{

if(
TepeNokta_Degeri==0)
{
TepeNokta_Degeri=High[i];
Stop_Fiyat=High[i]-myATR;
}

if(
High[i]>High[i+1] && TepeNokta_Degeri<High[i])
{
TepeNokta_Degeri=High[i];
Stop_Fiyat=TepeNokta_Degeri-myATR;
}

}
}


//BufferAL[i]= High[hy];


// double ld=LLV(l,5);

}
}

//----

//----
return(0);
}
//+------------------------------------------------------------------+


bu pds sistemini matrıkse çeviremezmiyiz üstadım...