-
Notifications
You must be signed in to change notification settings - Fork 2
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
1 parent
5b7abbb
commit 784b522
Showing
100 changed files
with
45,905 additions
and
0 deletions.
There are no files selected for viewing
Large diffs are not rendered by default.
Oops, something went wrong.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,190 @@ | ||
//+------------------------------------------------------------------+ | ||
//| Color Stochastic.mq4 | | ||
//| mladen | | ||
//| | | ||
//+------------------------------------------------------------------+ | ||
#property copyright "mladen" | ||
#property link "" | ||
|
||
#property indicator_separate_window | ||
#property indicator_buffers 4 | ||
#property indicator_minimum 0 | ||
#property indicator_maximum 100 | ||
#property indicator_color1 DimGray | ||
#property indicator_style1 STYLE_DOT | ||
#property indicator_color2 DimGray | ||
#property indicator_color3 Lime | ||
#property indicator_color4 Red | ||
#property indicator_width3 2 | ||
#property indicator_width4 2 | ||
|
||
|
||
|
||
//---- input parameters | ||
// | ||
// nice setings for trend = 35,10,1 | ||
// | ||
// | ||
|
||
extern string note1 = "Stochastic settings"; | ||
extern int KPeriod = 30; | ||
extern int Slowing = 10; | ||
extern int DPeriod = 10; | ||
extern string note4 = "0=sma, 1=ema, 2=smma, 3=lwma"; | ||
extern int MAMethod = 0; | ||
extern string note5 = "0=high/low, 1=close/close"; | ||
extern int PriceField = 1; | ||
extern string note6 = "overbought level"; | ||
extern int overBought = 80; | ||
extern string note7 = "oversold level"; | ||
extern int overSold = 20; | ||
|
||
|
||
//---- buffers | ||
// | ||
// | ||
// | ||
// | ||
// | ||
|
||
double KFull[]; | ||
double DFull[]; | ||
double Upper[]; | ||
double Lower[]; | ||
|
||
//+------------------------------------------------------------------+ | ||
//| Custom indicator initialization function | | ||
//+------------------------------------------------------------------+ | ||
|
||
int init() | ||
{ | ||
SetIndexBuffer(0,DFull); | ||
SetIndexBuffer(1,KFull); | ||
SetIndexBuffer(2,Upper); | ||
SetIndexBuffer(3,Lower); | ||
SetIndexLabel(1,"Fast"); | ||
SetIndexLabel(2,NULL); | ||
SetIndexLabel(3,NULL); | ||
|
||
// | ||
// | ||
// | ||
// | ||
// | ||
|
||
DPeriod = MathMax(DPeriod,1); | ||
if (DPeriod==1) { | ||
SetIndexStyle(0,DRAW_NONE); | ||
SetIndexLabel(0,NULL); | ||
} | ||
else { | ||
SetIndexStyle(0,DRAW_LINE); | ||
SetIndexLabel(0,"Slow"); | ||
} | ||
|
||
// | ||
// | ||
// | ||
// | ||
// | ||
|
||
string shortName = "Stochastic ("+KPeriod+","+Slowing+","+DPeriod+","+maDescription(MAMethod)+","+priceDescription(PriceField); | ||
if (overBought < overSold) overBought = overSold; | ||
if (overBought < 100) shortName = shortName+","+overBought; | ||
if (overSold > 0) shortName = shortName+","+overSold; | ||
IndicatorShortName(shortName+")"); | ||
return(0); | ||
} | ||
|
||
// | ||
// | ||
// | ||
// | ||
// | ||
|
||
int deinit() | ||
{ | ||
return(0); | ||
} | ||
|
||
//+------------------------------------------------------------------+ | ||
//| Custom indicator iteration function | | ||
//+------------------------------------------------------------------+ | ||
|
||
int start() | ||
{ | ||
int counted_bars=IndicatorCounted(); | ||
int limit; | ||
int i; | ||
|
||
|
||
|
||
|
||
if(counted_bars<0) return(-1); | ||
limit=Bars-counted_bars; | ||
|
||
// | ||
// | ||
// | ||
// | ||
// | ||
|
||
for(i=limit; i>=0; i--) | ||
{ | ||
KFull[i] = iStochastic(NULL,0,KPeriod,DPeriod,Slowing,MAMethod,PriceField,MODE_MAIN,i); | ||
DFull[i] = iStochastic(NULL,0,KPeriod,DPeriod,Slowing,MAMethod,PriceField,MODE_SIGNAL,i); | ||
|
||
// | ||
// | ||
// | ||
// | ||
// | ||
|
||
if (KFull[i] > overBought) { Upper[i] = KFull[i]; Upper[i+1] = KFull[i+1]; } | ||
else { Upper[i] = EMPTY_VALUE; | ||
if (Upper[i+2] == EMPTY_VALUE) | ||
Upper[i+1] = EMPTY_VALUE; } | ||
if (KFull[i] < overSold) { Lower[i] = KFull[i]; Lower[i+1] = KFull[i+1]; } | ||
else { Lower[i] = EMPTY_VALUE; | ||
if (Lower[i+2] == EMPTY_VALUE) | ||
Lower[i+1] = EMPTY_VALUE; } | ||
} | ||
|
||
// | ||
// | ||
// | ||
// | ||
// | ||
|
||
return(0); | ||
} | ||
//+------------------------------------------------------------------+ | ||
//+------------------------------------------------------------------+ | ||
|
||
string priceDescription(int mode) | ||
{ | ||
string answer; | ||
switch(mode) | ||
{ | ||
case 0: answer = "Low/High" ; break; | ||
case 1: answer = "Close/Close" ; break; | ||
default: answer = "Invalid price field requested"; | ||
Alert(answer); | ||
} | ||
return(answer); | ||
} | ||
string maDescription(int mode) | ||
{ | ||
string answer; | ||
switch(mode) | ||
{ | ||
case MODE_SMA: answer = "SMA" ; break; | ||
case MODE_EMA: answer = "EMA" ; break; | ||
case MODE_SMMA: answer = "SMMA" ; break; | ||
case MODE_LWMA: answer = "LWMA" ; break; | ||
default: answer = "Invalid MA mode requested"; | ||
Alert(answer); | ||
} | ||
return(answer); | ||
} | ||
|
Oops, something went wrong.