(копипаст)
В своих статьях «Какая размерность правильная?» и «KeyFinder 2.0″ я уже поднимал тему ключевых или опорных точек Демарка. Важность локальных экстремумов в торговой практике неоценима. Трейдеры им уделяли всегда большое внимание. Торговые системы на их основе не однократно освещались такими асами трейдинга как Вильямс и Демарк. Но в силу разных причин индикатор фракталов Вильямса распространен повсеместно, а вот идеи Томаса Демарка известны гораздо меньше. Я думаю все дело в том языке, которым написал Демарк свою книгу «Технический анализ — новая наука». Демарк излишне скрупулезен, что затрудняет прочтение его труда, а вот идеи его без сомнения заслуживают гораздо более пристального внимания.
И так, в этой статье я напишу лишь предисловие, все остальное вы увидите в видео.
Видео посвящено теперь уже полноценному индикатору для торговой платформы MetaTrader 5, который называется KeyFinder. Данный индикатор ищет и размечает в режиме реального времени опорные точки Демарка и указывает их размерность. В видео я покажу как при помощи моего индикатора рынок открывается вам как на ладони и одним взглядом позволяет определить значимые уровни поддержки/сопротивления, правильно построить линии тренда, фигуры классического технического анализа. Я расскажу вам об отличиях моего индикатора от индикатора фракталов Вильямса и предыдущих версий одноименного скрипта, а также продемонстрирую работу индикатора на живом минутном графике фьючерсного контракта на обыкновенные акции ОАО «Сбербанк России»
скрипт на кпайле. берет данные с графика по заданному инструменту в квике и выводит в таблицу OHCL V .
на RIM5 и mix все нормально а на SiM5 ну нифига и все.(((
подскажите в чем может быть дело, если кто понимает в этом...
вот сам скрипт:
PORTFOLIO_EX SI;
DESCRIPTION SI;
CLIENTS_LIST ALL_CLIENTS;
FIRMS_LIST ALL_FIRMS;
PROGRAM
' Настраиваемые параметры
ClassCodeList=«SPBFUT» ' код класса инструмента
Instrument=«SiM5» ' название инструмента
Interval=15 ' интервал (таймфрейм) на графике
DayToFind=14 ' сколько дней назад искать свечи (можно уменьшить, чтобы ускорить работу программы)
CandleToFind=550' сколько свечей надо найти
OutFile = «c:\quotes.csv» ' файл, куда записывать данные в формате CSV
DELETE_ALL_ITEMS()
CandleCount=0
CurYear=get_value(GET_DATETIME(), «YEAR»)
CurMonth=get_value(GET_DATETIME(), «MONTH»)
CurDay=get_value(GET_DATETIME(), «DAY»)
CurHour = GET_VALUE(GET_DATETIME(), «Hour»)
CurMin = GET_VALUE(GET_DATETIME(), «Min»)
CurMin = Interval*Floor(CurMin/Interval) ' округляем минуты до «интервальных»
ID=«ID1» 'идентификатор графика
for i from 1 to (DayToFind*24)*(Floor(60/Interval))
TextData=fTextData(CurYear,CurMonth,CurDay) &""
TextTime=fTextTime(CurHour,CurMin) & ""
if (CandleCount<CandleToFind) ' если нашли сколько нам надо свечей — гоняем пустой цикл
Candle=GET_CANDLE(ClassCodeList,Instrument, "", Interval & "", «PRICE», TextData, TextTime)
Open=GET_VALUE (Candle, «Open»)+0
if (Open>0)
CandleCount=CandleCount+1
High=GET_VALUE (Candle, «High»)+0
Low=GET_VALUE (Candle, «Low»)+0
Close=GET_VALUE (Candle, «Close»)+0
Volume=GET_VALUE (Candle, «Volume»)+0
o1=0+GET_VALUE(GET_VALUE(GET_CANDLE_EX(ID,TextData,TextTime),«LINES»),«OPEN»)
h1=0+GET_VALUE(GET_VALUE(GET_CANDLE_EX(ID,TextData,TextTime),«LINES»),«HIGH»)
l1=0+GET_VALUE(GET_VALUE(GET_CANDLE_EX(ID,TextData,TextTime),«LINES»),«LOW»)
c1=0+GET_VALUE(GET_VALUE(GET_CANDLE_EX(ID,TextData,TextTime),«LINES»),«CLOSE»)
v1=0+GET_VALUE(GET_VALUE(GET_CANDLE_EX(ID,TextData,TextTime),«LINES»),«VOLUME»)
output=CREATE_MAP()
output=SET_VALUE(output,«Date»,TextData)
output=SET_VALUE(output,«Time»,TextTime)
'output=SET_VALUE(output,«Open»,Open)
'output=SET_VALUE(output,«High»,High)
'output=SET_VALUE(output,«Low»,Low)
'output=SET_VALUE(output,«Close»,Close)
'output=SET_VALUE(output,«Volume»,Volume)
output=SET_VALUE(output,«Open»,o1)
output=SET_VALUE(output,«High»,h1)
output=SET_VALUE(output,«Low»,l1)
output=SET_VALUE(output,«Close»,c1)
output=SET_VALUE(output,«Volume»,v1)
ADD_ITEM(CandleCount,output)
WRITELN(OutFile, TextData & "," & TextTime & "," & Open & "," & High & "," & Low & "," & Close)
end if
' откат на «интервал» назад
CurMin=CurMin-Interval
if CurMin<0
CurMin=60+CurMin
CurHour=CurHour-1
if CurHour<0
CurHour=23
CurDay=CurDay-1
if curDay<1
CurDay=31
CurMonth=CurMonth-1
if CurMonth<1
CurMonth=12
CurYear=CurYear-1
if CurYear<0
message («Не найдены котировки до рождества Христова! »,1)
end if
end if
end if
end if
end if
end if
end for
' функция перевода даты в текстовый формат
func fTextData(Year,Month,Day)
if (LEN(Month) < 2)
Month = «0» & Month
end if
if (LEN(Day) < 2)
Day = «0» & Day
end if
result = Year & Month & Day
end func
' функция перевода времени в текстовый формат
func fTextTime(Hour,Min,Sec)
if (LEN(Hour) < 2)
Hour = «0» & Hour
end if
if (LEN(Min) < 2)
Min = «0» & Min
end if
result = Hour & Min & «00»
end func
END_PROGRAM
PARAMETER Date;
PARAMETER_TITLE Дата;
PARAMETER_DESCRIPTION Дата;
PARAMETER_TYPE STRING(30);
END
PARAMETER Time;
PARAMETER_TITLE Время;
PARAMETER_DESCRIPTION Время;
PARAMETER_TYPE STRING(30);
END
PARAMETER Open;
PARAMETER_TITLE Open;
PARAMETER_DESCRIPTION Open;
PARAMETER_TYPE NUMERIC(10,0);
END
PARAMETER High;
PARAMETER_TITLE High;
PARAMETER_DESCRIPTION High;
PARAMETER_TYPE NUMERIC(10,0);
END
PARAMETER Low;
PARAMETER_TITLE Low;
PARAMETER_DESCRIPTION Low;
PARAMETER_TYPE NUMERIC(10,0);
END
PARAMETER Close;
PARAMETER_TITLE Close;
PARAMETER_DESCRIPTION Close;
PARAMETER_TYPE NUMERIC(10,0);
END
PARAMETER Volume;
PARAMETER_TITLE Volume;
PARAMETER_DESCRIPTION Volume;
PARAMETER_TYPE NUMERIC(10,0);
END
END_PORTFOLIO_EX
Доброго времени суток трейдеры. В своей статье «Какая размерность правильная?» я рассказал об особенностях работы с ключевыми точками Томаса Демарка и о том, какие трудности могут поджидать трейдера, используя классические трактовки нахождения ключевых точек рынка. Так же я опубликовал код скрипта для торговой платформы MetaTrader, который находит и указывает «правильную» размерность ключевых точек на графике. С этим скриптом строить тренды стало гораздо проще.
После первой публикации я продолжал работу над кодом скрипта и существенно улучшил его, задействовав такие мощные инструменты объектно-ориентированного программирования, как классы. В итоге «родился» KeyFinder 2.0.