Индикатор для Metatrader под стратегию КИС

 

Здравствуйте! На одном из форумов в интернете натолкнулся на пару индикаторов для когда-то популярной стратегии КИС. Ниже приведены тексты индикаторов. Индикаторы были написаны для MetaTrader 3.*. Хотел поинтересоваться, нет ли подобных индикаторов для 4-ки? Или может кто-нибудь поможет адаптировать его под MQL4. Сам далек от программирования. Буду признателен за помощь!


1-й индикатор KIS


/*[[
Name := KiS
Author := Copyright © 2004, MetaQuotes Software Corp.
Link := http://www.metaquotes.net/
Separate Window := No
First Color := Blue
First Draw Type := Line
First Symbol := 217
Use Second Data := Yes
Second Color := Blue
Second Draw Type := Line
Second Symbol := 218
]]*/
Variable : shift(0), i(0), CurDay(0), DayMax(0), DayMin(0),BarCount(0),DayOpen(0),DayClose(0), Avg(0);


// loop from first bar to current bar (with shift=0)
For shift=Bars-1 Downto 0 Begin

if CurDay <> TimeDay(Time[shift]) then //начинается новый день (и машины - туда, сюда)...
begin
for i=BarCount downto 0
Begin
SetIndexValue(shift+i, DayMax);
SetIndexValue2(shift+i, DayMin);
end;
CurDay = TimeDay(Time[shift]);
BarCount = 0;
DayMax = 0;
DayMin = 1000; //Заранее больше, чтоб уменьшился в процессе
DayOpen = Open[shift];
end;

if DayMax < High[shift] then DayMax = High[shift];
if DayMin > Low[shift] then DayMin = Low[shift];
BarCount = BarCount + 1;

End;

//это дорисовка последнего, незавершенного еще, дня
for i=BarCount downto 0
Begin
SetIndexValue(shift+i, DayMax);
SetIndexValue2(shift+i, DayMin);
end;

DayClose = Close[0];

Avg = (DayMax+DayMin)/2; //средняя за текущий день

Comment("Max:", DayMax,," Min:", DayMin, "\n", "Avg:", Avg, "\n", "Width:", (DayMax-DayMin)/Point,"\n","От Avg до Open:",Round(abs(Avg-DayOpen)/Point),"\n","От Avg до Close:",Round(abs(Avg-DayClose)/Point));



2-й индикатор.


/*[[
Name := dayHL_Average
Author := DevianT (из-за природной лени большая часть исходного кода взята из индикатора точки вращения, автор - ТЕТ)
Link := deviant@deviant.ru
Notes :=
Separate Window := No
First Color := Blue
First Draw Type := Line
First Symbol := 217
Use Second Data := Yes
Second Color := Red
Second Draw Type := Line
Second Symbol := 218
]]*/


input: use_formula(0); // какую формулу использовать (0-1) 0 - средняя 1 - хай/лоу
input: show_comment(0);// рисовать ли комментарий (0 - нет, 1 - да)
input: how_long(-1);// сколько баров обрабатывать (-1 - все), рекомендую 1000

var: cnt(0);// счетчик баров
var: begin_bar(0);// бар, с которого начинает работу индикатор
var: prev_day(0), cur_day(0); // идентификаторы текущего и предыдущего дня
var: day_high(0);// дневной high
var: day_low(0);// дневной low
var: yesterday_high(0);// наибольшая цена предыдущего дня
var: yesterday_low(0);// наименьшая цена предыдущего дня
var: yesterday_close(0);// цена закрытия предыдущего дня

var: P(0),S(0),R(0);

for cnt = bars downto 0
{
SetIndexValue(cnt, 0);
SetIndexValue2(cnt, 0);
};

// правильные таймфремы для нашего индикатора - все, что меньше D1
if Period >= 1440 then// >= D1
{
Comment("WARNING: Invalid timeframe!");
exit;
};

// проверим на правильность номер формулы
if use_formula < 0 or use_formula > 1 then
{
Comment("WARNING: Wrong use_formula value! Valid values: 0-1");
exit;
};

// решаем с какого бара мы начнем считать наш индикатор
if how_long = -1 then
{
begin_bar = bars;
}
else
{
begin_bar = how_long;
};

// обходим бары слева направо (0-й бар тоже используем, т.к. из него мы берём только high и low)
for cnt = begin_bar downto 0
{
cur_day = TimeDay(time[cnt]);

if prev_day != cur_day then
{
yesterday_close = CLOSE[cnt+1];
yesterday_high = day_high;
yesterday_low = day_low;

P = (yesterday_high + yesterday_low ) / 2;
R = yesterday_high;
S = yesterday_low;

// т.к. начался новый день, то инициируем макс. и мин. текущего (уже) дня
day_high = HIGH[cnt];
day_low = LOW[cnt];

// запомним данный день, как текущий
prev_day = cur_day;
};

// продолжаем накапливать данные
day_high = max(day_high, HIGH[cnt]);
day_low = min(day_low, LOW[cnt]);

// рисуем
if use_formula = 0 then
{
// рисуем pivot-линию по значению, вычисленному по параметрам вчерашнего дня
SetIndexValue(cnt, P);
}
else
{
// рисуем линии сопротивления и поддержки уровня 1,2 или 3
SetIndexValue(cnt, R);// сопротивление
SetIndexValue2(cnt, S); // поддержка
};

}; // for

if show_comment = 1 then
{
P = (yesterday_high + yesterday_low ) / 2;
R = yesterday_high;
S = yesterday_low;

Comment( "H=", yesterday_high, ", L=", yesterday_low, ", HL/2=", P );
};

// end program
[Удален]  
Russ79 >>:

Здравствуйте! На одном из форумов в интернете натолкнулся на пару индикаторов для когда-то популярной стратегии КИС. Ниже приведены тексты индикаторов. Индикаторы были написаны для MetaTrader 3.*. Хотел поинтересоваться, нет ли подобных индикаторов для 4-ки? Или может кто-нибудь поможет адаптировать его под MQL4. Сам далек от программирования. Буду признателен за помощь!

картинку нарисовать можете, что они делают?