Indicators Used
0
Views
0
Downloads
0
Favorites
ELabunskyVolaPresser
#property copyright "Eugene Labunsky / http://www.trendmedium.com/tmt4/"
#property link "http://www.trendmedium.com/tmt4/"
#property indicator_chart_window
extern int MainFilterSpeed = 8;
extern int MainFilterSlow = 16;
extern int SmallFilterSpeed = 3;
extern int SmallFilterSlow = 12;
double MainFiltersMultipleFactor = 1.0;
double SmallFiltersMultipleFactor = 1.0;
extern bool SmallArrow = true;
int SlowFilterOffset = 0;
double emaBuffer[999];
double emaRes[999];
double getAbsEMACO(int period, int shift)
{
if (iMA(NULL, 0, 1, 0, MODE_SMA, PRICE_CLOSE, shift + period + 1) == 0)
return (0);
else
{
int i = 0;
for (i = 0; i < period; i++)
{
emaBuffer[period - 1-i] = MathAbs(iMA(NULL, 0, 1, 0, MODE_SMA, PRICE_CLOSE, shift + i) - iMA(NULL, 0, 1, 0, MODE_SMA, PRICE_OPEN, shift + i));
}
double pr = 2.0 / (period + 1);
emaRes[0] = emaBuffer[0];
for (i = 1; i < period; i++)
{
emaRes[i] = emaBuffer[i] *pr + emaRes[i - 1]*(1-pr);
}
return (emaRes[period - 1]);
}
}
double getEMACO(int period, int shift)
{
if (iMA(NULL, 0, 1, 0, MODE_SMA, PRICE_CLOSE, shift + period + 1) == 0)
return (0);
else
{
int i = 0;
for (i = 0; i < period; i++)
{
emaBuffer[period - 1-i] = (iMA(NULL, 0, 1, 0, MODE_SMA, PRICE_CLOSE, shift + i) - iMA(NULL, 0, 1, 0, MODE_SMA, PRICE_OPEN, shift + i));
}
double pr = 2.0 / (period + 1);
emaRes[0] = emaBuffer[0];
for (i = 1; i < period; i++)
{
emaRes[i] = emaBuffer[i] *pr + emaRes[i - 1]*(1-pr);
}
return (emaRes[period - 1]);
}
}
//+------------------------------------------------------------------+
//| Custom indicator initialization function |
//+------------------------------------------------------------------+
int init()
{
string short_name = "ELabunskyVolaPresser";
IndicatorShortName(short_name);
SetIndexLabel(0, short_name);
ObjectsDeleteAll();
}
int start()
{
int countedBars = IndicatorCounted();
if (countedBars < 0)
{
countedBars = 0;
ObjectsDeleteAll();
}
else
countedBars--;
int limit = Bars - countedBars;
double ShiftY = MathAbs(High[Bars - 1] - Low[WindowFirstVisibleBar()]);
for (int i = 0; i < limit; i++)
{
int signal = 0;
string objName = "ELA_" + Symbol() + "-" + Period() + "-" + Time[i];
if (ObjectFind(objName) >= 0)
ObjectDelete(objName);
int currOffSet = i;
if (getAbsEMACO(MainFilterSpeed, currOffSet) > getAbsEMACO(MainFilterSlow, currOffSet + SlowFilterOffset))
{
double _smallFilterSpeed = getEMACO(SmallFilterSpeed, currOffSet);
double _SmallFilterSlow = getAbsEMACO(SmallFilterSlow, currOffSet);
if (_smallFilterSpeed > _SmallFilterSlow *SmallFiltersMultipleFactor)
signal = 1;
else
if (_smallFilterSpeed < - _SmallFilterSlow * SmallFiltersMultipleFactor)
signal = - 1;
}
if (signal == 1)
{
if (!SmallArrow)
{
ObjectCreate(objName, OBJ_ARROW, 0, Time[i], Low[i]);
//ObjectSet(objName,OBJPROP_ARROWCODE,SYMBOL_ARROWDOWN);
ObjectSet(objName, OBJPROP_ARROWCODE, 233);
ObjectSet(objName, OBJPROP_WIDTH, 1);
ObjectSet(objName, OBJPROP_COLOR, Green);
}
else
{
ObjectCreate(objName, OBJ_ARROW, 0, Time[i], Low[i]);
ObjectSet(objName, OBJPROP_ARROWCODE, 1);
ObjectSet(objName, OBJPROP_WIDTH, 1);
ObjectSet(objName, OBJPROP_COLOR, Green);
}
}
if (signal == - 1)
{
if (!SmallArrow)
{
ObjectCreate(objName, OBJ_ARROW, 0, Time[i], High[i] + ShiftY / 100);
//ObjectSet(objName,OBJPROP_ARROWCODE,SYMBOL_ARROWDOWN);
ObjectSet(objName, OBJPROP_ARROWCODE, 234);
ObjectSet(objName, OBJPROP_WIDTH, 1);
ObjectSet(objName, OBJPROP_COLOR, Red);
}
else
{
ObjectCreate(objName, OBJ_ARROW, 0, Time[i], High[i]);
ObjectSet(objName, OBJPROP_ARROWCODE, 2);
ObjectSet(objName, OBJPROP_WIDTH, 1);
ObjectSet(objName, OBJPROP_COLOR, Red);
}
}
}
return (0);
}
int deinit()
{
ObjectsDeleteAll();
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
---