|
Новости
00:01
Видео
Блоги
Комментариев: 343
Шепот котировок
10:08
09:58
09:44
09:27
10:17
|
Письмо в редакциюЗдравствуйте! Два года назад, в номере за январь-февраль 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 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 Похожие статьи:
Добавить комментарий |
РекламаНовости партнеровРеклама |
