Can any programmer change this indicator into a .lua format from mq4. Thanks.
- Code: Select all
//ØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØ
//| Val_Bands.mq4 |
//| Èíäèêàòîð âîëàíòèëüíîñòè äëèíû ñâå÷åé: |
//| - êðàñíàÿ ãèñòîãðàììà - äëèíà ñâå÷è â ïèïñàõ |
//| - ëèíèè: ýòî ñðåäíèå îò äëèíû ñâå÷åé ñî ñòàíäàðòíûì îòêëîíåíèåì |
//| Íàñòðîéêè - àíàëîãè÷íû êàíàëó Áîëèíäæåðà |
//| Èñïîëüçîâàíèå. Óäîáåí äëÿ îòñëåæèàíèÿ ãýïîâ íà ðûíêå. Çà ãýï ñ÷èòåòñÿ |
//| âñå, ÷òî âûøå æåëòîé ëèíèè |
//| - âûõîä çà âåðõíþþ ãðàíèöó - à) ïîäàðîê â ÒÐ (åñëè ïî ïîçèöèè); |
//| á) SL (åñëè ïðîòèâ ïîçèöèè; |
//| â) çàïðåò âõîäà â ýòîé òî÷êå |
//| - âûõîä çà íèæíþþ ãðàíèöó - áîêîâèê |
//| - ïåðåñå÷åíèå ñíèçó ââåðõ íèæíåé ãðàíèöû - íà÷àëî òðåíäà. |
//ØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØ
#property copyright "Copyright © 2010, Fomenko"
#property link "http://faa1947@mail.ru"
// ----------------- Îòäåëüíîå îêíî äëÿ èíäèêàòîðà ----------------------------
#property indicator_separate_window
// ---------------- Êîë-âî âèäèìûõ áóôåðîâ èíäèêàòîðà -------------------------
#property indicator_buffers 4
// ---------------- Óñòàíîâêà öâåòà èíäèêàòîðà --------------------------------
#property indicator_color1 LightSeaGreen
#property indicator_color2 Yellow
#property indicator_color3 Orchid
#property indicator_color4 Red
// ---------------- Óñòàíîâêà øèðèíû ëèíèè -----------------------------------
#property indicator_width1 2
#property indicator_width2 1
#property indicator_width3 1
#property indicator_width4 1
// ---------------- Óñòàíîâêà ñòèëÿ ëèíèè -----------------------------------
#property indicator_style1 0
#property indicator_style2 0
#property indicator_style3 0
#property indicator_style4 0
//----------------- Âíåøíèå íàñòðîéêè èíäèêàòîðà ==========--------------------
extern int BandsPeriod = 14; // Ïåðèîä ðàñ÷åòà
extern double BandsDeviations = 1.0; // Âåëè÷èíà ñòàíäàðòíîãî îòêëîíåíèÿ
int BandsShift = 0; // Ñäâèã îòíîñèòåëüíî ãðàôèêà
//----------------- Îáúÿâëåíèå áóôåðîâ èíèäèêàòîðîâ --------------------------
double MovingBuffer[];
double UpperBuffer[];
double LowerBuffer[];
double Val_BarsBuffer[];
//+------------------------------------------------------------------+
//| Custom indicator initialization function |
//+------------------------------------------------------------------+
int init()
{
IndicatorDigits (1);
//--------- Òðè âèäèìûõ áóôåðà --------------------------------------
IndicatorBuffers (4);
//---------- Óñòàíîâêà ïàðàìåòðîâ ðèñîâàíèÿ -------------------------
SetIndexStyle (0, DRAW_LINE);
SetIndexDrawBegin (0, BandsPeriod+BandsShift);
SetIndexStyle (1, DRAW_LINE);
SetIndexDrawBegin (1, BandsPeriod+BandsShift);
SetIndexStyle (2, DRAW_LINE);
SetIndexDrawBegin (2, BandsPeriod+BandsShift);
SetIndexStyle (3, DRAW_HISTOGRAM);
SetIndexDrawBegin (3, BandsPeriod+BandsShift);
//---------- Ïðèâÿçûâàåì íîìåð áóôåðà ê åãî èìåíè -------------------
SetIndexBuffer (0, MovingBuffer);
SetIndexBuffer (1, UpperBuffer);
SetIndexBuffer (2, LowerBuffer);
SetIndexBuffer (3, Val_BarsBuffer);
// ----------- Óñòàíàâëèâàåì ïåðâîíà÷àëüíûå çíà÷åíèÿ ---------------
SetIndexEmptyValue (0, 0.0);
SetIndexEmptyValue (1, 0.0);
SetIndexEmptyValue (2, 0.0);
SetIndexEmptyValue (3, 0.0);
//------------------ Ìåòêà äëÿ ëèíèè èíäèêàòîðà ---------------------
SetIndexLabel (0, "Mov");
SetIndexLabel (1, "Up");
SetIndexLabel (2, "Down");
return(0);
}
//+------------------------------------------------------------------+
//| Bollinger Bands |
//+------------------------------------------------------------------+
int start()
{
int i,
k,
counted_bars = IndicatorCounted();
double deviation;
double sum,
oldval,
newres;
//----
if(Bars <= BandsPeriod)
return(0);
//---------------- Âû÷èñëÿåì ñðåäíþþ --------------------------------
int limit = Bars - counted_bars;
if(counted_bars > 0)
limit++;
for(i = 0; i < limit; i++)
Val_BarsBuffer[i] = (High[i] - Low[i]) / Point;
for(i = 0; i < limit; i++)
MovingBuffer[i] = iMAOnArray(Val_BarsBuffer,
Bars,
BandsPeriod,
BandsShift,
MODE_SMA, // MODE_SMA, MODE_EMA, MODE_SMMA, MODE_LWMA
i);
//--------------- Âû÷èñëÿåì ñòîðîíû êàíàëà ----------------------------
i = Bars - BandsPeriod + 1;
if(counted_bars > BandsPeriod - 1)
i = Bars - counted_bars - 1;
while(i >= 0)
{
sum = 0.0;
k = i + BandsPeriod - 1;
oldval = MovingBuffer[i];
while(k >= i)
{
newres = Val_BarsBuffer[k] - oldval;
sum += newres * newres;
k--;
}
deviation = BandsDeviations * MathSqrt(sum / BandsPeriod);
UpperBuffer[i] = oldval + deviation;
LowerBuffer[i] = oldval - deviation;
i--;
}
//----------------- Èíäèêàòîð âû÷èñëåí --------------------------------
return(0);
}
//+------------------------------------------------------------------+
//| Custom indicator deinitialization function |
//+------------------------------------------------------------------+
int deinit()
{
return(0);
}