1
Видео


Письмо в редакцию

Виктор Лиховидов

Здравствуйте!

Два года назад, в номере за январь-февраль 2000 г. была опубликована статья В. Лиховидова «Кодирование японских свечей». В приложении к статье был дан пример написания индикатора ICS (Index of CandleStrength) в MetaStock.

Я пытался запустить приведенную программу в MetaStock Indicator Buider, но у меня ничего не получилось. Indicator Builder дает сообщение «This is not a recognized name, constant or operator». Почему так получается? У меня большая просьба: нельзя ли дать тексты всех основных индикаторов, связанных с конструкцией CandleCode в формате Indicator Builder пакета MetaStock, и объяснить, что надо делать, чтобы запустить приложение?

Ю.В. Иванов

На вопрос читателя отвечает автор, В. Лиховидов:

Для загрузки индикаторов следует скопировать их один за другим в Indicator Builder в том же порядке, как они представлены в тексте. Жирным шрифтом выделены названия индикаторов, ниже - соответствующий текст. Для удобства отладки вся конструкция CandleCode разбита на несколько индикаторов, при желании многие можно объединить в единый текст.

Размеры элементов свечи (тела, нижней тени, верхней тени):

body

Abs(OPEN-CLOSE)

lshd

If(CLOSE>=OPEN,OPEN-LOW,CLOSE-LOW)

ushd

If(CLOSE>=OPEN,HIGH-CLOSE,HIGH-OPEN)

Для каждого элемента свечи вычисляются два порога (верхний и нижний) на основе диапазона Боллинджера (Bollinger Bands):

ThBot_b

BBandBot( Fml( «body» ) ,55,E,0.5)

ThTop_b

BBandTop( Fml( «body» ) ,55,E,0.5)

ThBot_l

BBandBot( Fml( «lshd» ) ,55,E,0.5)

ThTop_l

BBandTop( Fml( «lshd» ) ,55,E,0.5)

ThBot_u

BBandBot( Fml( «ushd» ) ,55,E,0.5)

ThTop_u

BBandTop( Fml( «ushd» ) ,55,E,0.5)

Вычисляются коды для элементов свечи по отдельности (для тела, нижней тени и верхней тени):

CandleCode-b

If(CLOSE=OPEN,1,0)* If(Fml(«ushd») >= Fml(«lshd»),64,48) + If(CLOSE = OPEN,0,1) * (If(CLOSE > OPEN,1,0) * (If(Fml(«body») <= Fml(«ThBot_b» ) ,80,0) + If(Fml(«body») > Fml(«ThBot_b» ) AND Fml(«body») <= Fml(«ThTop_b»),96,0) + If(Fml(«body») > Fml(«ThTop_b»),112,0)) + If(CLOSE<= Fml(«ThBot_b»),32,0) + If(Fml(«body») > Fml(«ThBot_b») AND Fml(«body») <= Fml(«ThTop_b» ),16,0)))

CandleCode-l

If(Fml(«lshd») = 0,3,0) + If(Fml(«lshd») <= Fml(«ThBot_l») AND Fml(«lshd»)>0,2,0) + If(Fml(«lshd») > Fml(«ThBot_l» ) AND Fml(«lshd») <= Fml(«ThTop_l» ) AND Fml(«lshd») > 0,1,0)

CandleCode-u

If(Fml(«ushd») > 0 AND Fml(«ushd») <= Fml(«ThBot_u»),4,0) + If( Fml(«ushd») > Fml(«ThBot_u» ) AND Fml («ushd») <= Fml(«ThTop_u» ) ,8,0) + If(Fml( «ushd» ) > Fml(«ThTop_u»),12,0)

Результирующее значение CandleCode есть сумма трех вычисленных:

CandleCode

Fml( «CandleCode-b» ) + Fml( «CandleCode-l» ) + Fml(«CandleCode-u» )

Для получения хорошо работающих индикаторов следует выполнить сглаживание CandleCode. Во многих задачах полезным оказывается CandleCode, сглаженный с помощью оператора трехкратного усреднения.

Triplet

Periods:=Input(«Enter Periods for Triplet»,2,13,2);

Mov( Mov( Mov(P, Periods, S), Periods, S), Periods, S)

CandleWeight

Симметричный вариант CandleCode (индикатор из статьи в S&C March 2001):

If(CLOSE=OPEN,1,0)* If(Fml(«ushd»)>=Fml(«lshd»),64,-64) + If(CLOSE=OPEN,0,1) * If(CLOSE>OPEN,1,-1) * (If(Fml(«body»)<= Fml(«ThBot_b»),80,0) +If(Fml(«body»)> Fml(«ThBot_b» ) AND Fml(«body») <= Fml(«ThTop_b»),96,0)+If(Fml(«body»)> Fml(«ThTop_b»),112,0)) + If(CLOSE>=OPEN,-4,4) * (If(Fml(«lshd») = 0,3,0)+If(Fml(«lshd») <=Fml(«ThBot_l» ) AND Fml(«lshd»)>0,2,0) + If(Fml(«lshd»)> Fml(«ThBot_l» ) AND Fml(«lshd»)<= Fml(«ThTop_l» ) AND Fml(«lshd»)>0,1,0) ) + If(CLOSE>=OPEN,1,-1) * (If(Fml(«ushd»)>0 AND Fml(«ushd»)<= Fml(«ThBot_u» ) ,4,0)+If( Fml(«ushd»)> Fml(«ThBot_u» ) AND Fml( «ushd»)<= Fml(«ThTop_u»),8,0)+If(Fml( «ushd» )>Fml(«ThTop_u»),12,0))

AdCC – настраиваемый индикатор CandleCode (из статьи в S&C Oct 2001)

UpshadSize

If(Fml(«ushd»)>0 AND Fml(«ushd»)<= Fml(«ThBot_u»),1,0)+If( Fml(«ushd»)> Fml(«ThBot_u» ) A Fml( «ushd»)<= Fml(«ThTop_u» ) ,2,0)+If(Fml( «ushd» )> Fml(«ThTop_u» ),3,0)

BodySize

If(CLOSE=OPEN,0,1) * If(CLOSE>OPEN,1,-1) * (If(Fml(«body»)<= Fml(«ThBot_b» ) ,1,0) +If(Fml(«body»)> Fml(«ThBot_b» ) AND Fml(«body») <= Fml(«ThTop_b»),2,0)+If(Fml(«body»)> Fml(«ThTop_b» ),3,0))

LshadSize

If(Fml(«lshd»)>0 AND Fml(«lshd»)<= Fml(«ThBot_l»), -1,0)+If( Fml(«lshd»)> Fml(«ThBot_l» ) AND Fml( «lshd»)<= Fml(«ThTop_l» ) ,-2,0)+If(Fml( «lshd» )> Fml(«ThTop_l» ),-3,0)

AdCC

B:=Input(«Body weight», 0.01, 0.98, 0.33);

U:= Input(«Upshad weight», 0.01, 0.98, 0.33);

Lo:=Input(«Lshad weight», 0.01, 0.98, 0.33);

B*Fml(«BodySize» ) + U*Fml( «UpshadSize» ) + Lo*Fml(«LshadSize»)

Читатели, у которых возникли трудности с запуском программы, могут связаться со мной по электронной почте: ltfx@fastmail.vladivostok.ru, lita@math.dvgu.ru

Добавить комментарий

Ваше имя:
Заголовок:
Ваши комментарии:
Введите символы, изображенные на картинке:

Реклама

игра forex

Новости партнеров

Реклама