Miscellaneous
0
Views
0
Downloads
0
Favorites
3c_Turbo_JRSX_wAppliedPrice
//+---------------------------------------------------------+
//| 3c_Turbo_JRSX_wAppliedPrice.mq4 |
//|modified to make price mode selectable by user - bluto |
//| Color addition c 2008 codobro |
//+---------------------------------------------------------+
#property copyright "strategybuilderfx.com - modified by bluto to use typical price (HLC/3), modifcations c 2008 codobro"
#property link "finger"
#property indicator_separate_window
#property indicator_buffers 3
#property indicator_color1 Gray
#property indicator_color2 Red
#property indicator_color3 Green
#property indicator_width1 2
#property indicator_width2 2
#property indicator_width3 2
#property indicator_level1 70
#property indicator_level2 30
#property indicator_level3 50
#property indicator_maximum 100
#property indicator_minimum 0
//---- input parameters
extern int Len=14; //---- buffers
extern double UpperLevel = 70;
extern double LowerLevel = 30;
extern string p = "--Applied Price Types--";
extern string p0 = " 0 = close";
extern string p1 = " 1 = open";
extern string p2 = " 2 = high";
extern string p3 = " 3 = low";
extern string p4 = " 4 = median(high+low)/2";
extern string p5 = " 5 = typical(high+low+close)/3";
extern string p6 = " 6 = weighted(high+low+close+close)/4";
extern int PriceMode = 5;
double rsx[];
double jrhi[];
double jrlo[];
int init() {
IndicatorShortName("3c_Turbo_JRSX");
SetIndexStyle(0,DRAW_LINE);
SetIndexBuffer(0,rsx);
SetIndexStyle(1,DRAW_LINE);
SetIndexBuffer(1,jrhi);
SetIndexStyle(2,DRAW_LINE);
SetIndexBuffer(2,jrlo);
return(0);
}
int deinit()
{
return(0);
}
int start()
{
double tempPrice;
double f88, f90;
double f0, v4, v8, vC, v10, v14, v18, v20;
double f8, f10, f18, f20, f28, f30, f38, f48, v1C;
double f50, f58, f60, f68, f70, f78, f80, f40;
//int counted_bars = IndicatorCounted(),limit,shift;
//if (counted_bars<0) return(-1);
//if (counted_bars>0) counted_bars--;
double limit=Bars-(Len)-1;
//if(counted_bars>Len) limit=Bars-counted_bars-1;
for (int shift=limit;shift>=0;shift--) {
tempPrice = GetPrice(PriceMode, shift); // Get the price based on mode entered
if (f90 == 0.0) {
f90 = 1.0;
f0 = 0.0;
if (Len-1 >= 5) f88 = Len-1.0; else f88 = 5.0;
// f8 = 100.0*(Close[shift]);
//
// Modified for median price
// Modified for any price based on PriceMode input
// default input is typical price
//
// f8 = 100.0*((High[shift]+Low[shift]+Close[shift])/3);
f8 = 100.0 * tempPrice;
f18 = 3.0 / (Len + 2.0);
f20 = 1.0 - f18;
} else{
if (f88 <= f90) f90 = f88 + 1; else f90 = f90 + 1;
f10 = f8;
// f8 = 100*Close[shift];
// f8 = 100.0*((High[shift]+Low[shift]+Close[shift])/3);
f8 = 100 * tempPrice;
v8 = f8 - f10;
f28 = f20 * f28 + f18 * v8;
f30 = f18 * f28 + f20 * f30;
vC = f28 * 1.5 - f30 * 0.5;
f38 = f20 * f38 + f18 * vC;
f40 = f18 * f38 + f20 * f40;
v10 = f38 * 1.5 - f40 * 0.5;
f48 = f20 * f48 + f18 * v10;
f50 = f18 * f48 + f20 * f50;
v14 = f48 * 1.5 - f50 * 0.5;
f58 = f20 * f58 + f18 * MathAbs(v8);
f60 = f18 * f58 + f20 * f60;
v18 = f58 * 1.5 - f60 * 0.5;
f68 = f20 * f68 + f18 * v18;
f70 = f18 * f68 + f20 * f70;
v1C = f68 * 1.5 - f70 * 0.5;
f78 = f20 * f78 + f18 * v1C;
f80 = f18 * f78 + f20 * f80;
v20 = f78 * 1.5 - f80 * 0.5;
if ((f88 >= f90) && (f8 != f10)) f0 = 1.0;
if ((f88 == f90) && (f0 == 0.0)) f90 = 0.0;
}
if ((f88 < f90) && (v20 > 0.0000000001)) {
v4 = (v14 / v20 + 1.0) * 50.0;
if (v4 > 100.0) v4 = 100.0;
if (v4 < 0.0) v4 = 0.0;
} else {
v4 = 50.0;
}
rsx[shift]=v4;
jrhi[shift]=v4;
jrlo[shift]=v4;
if (v4 >= UpperLevel)
{
jrlo[shift] = EMPTY_VALUE;
}
else if (v4 <= LowerLevel)
{
jrhi[shift] = EMPTY_VALUE;
}
else
{
jrhi[shift]=EMPTY_VALUE;//EMPTY_VALUE;
jrlo[shift]=EMPTY_VALUE;//EMPTY_VALUE;
}
}
return(0);
}
// Applied Price enumerations
// 0=close, 1=open, 2=high, 3=low, 4=median((h+l/2)), 5=typical((h+l+c)/3), 6=weighted((h+l+c+c)/4)
double GetPrice(int pMode, int mShift)
{
double price;
switch(pMode)
{
case 0: price = Close[mShift];
break;
case 1: price = Open[mShift];
break;
case 2: price = High[mShift];
break;
case 3: price = Low[mShift];
break;
case 4: price = (High[mShift] + Low[mShift])/2.0;
break;
case 5: price = (High[mShift] + Low[mShift] + Close[mShift])/3.0;
break;
case 6: price = (High[mShift] + Low[mShift] + 2.0*Close[mShift])/4;
break;
}
return (price);
}
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
---