Light Style© by Fisana

Перейти к содержимому


РАММ сервис NordFx: копируй сделки лучших трейдеров форекс


NordFX

Фотография

Создание индикаторов


  • Пожалуйста, авторизуйтесь, чтобы ответить
160 ответов в этой теме

#31 nikkq

nikkq

    пробегал

  • Пользователи ST test (off)
  • Pip
  • 7 сообщений

Опубликовано 07 Июль 2007 - 08:35

Ну конечно, я говорил о своей переменной МА1, она у меня уже расчетная и меняет знак.
OK.

я здесь пропишусь...

вот тоже интересен вопрос: на конкретном периоде красить ма возможно, наподобие как в АО - вверх зелена,а вниз красная напрмер?
а тоя думаю, что будет краситься вс я линия в зависимости направления на последних барах?
таковуха селявуха...

#32 Geokom

Geokom

    живет тут

  • Пользователи ST test (off)
  • PipPipPipPipPip
  • 207 сообщений

Опубликовано 07 Июль 2007 - 02:49

Liv, добрый день, еще вопрос:- можно ли отобразить вертикальный отрезок в необходимом месте экрана, с координатами в пикселах (а не время/цена)?
... Является на некую цивилизованную планету один землянин, входит он в контакт и предлагает аборигенам свои
услуги в качестве крупнейшего на земле специалиста по конструированию и эксплуатации вечных двигателей первого
рода. Аборигены, натурально, смотрят этому посланцу сверхразума в рот и, следуя его указаниям, немедленно
принимаются строить. Построили. Не работает вечный двигатель. Землянин крутит колеса, ползает среди стержней и
всяких шестеренок и бранится, что все сделано не так. "технология, - говорит, - у вас отсталая, вот эти узлы надо
решительно переделать, а вон те так и вообще заменить, как вы полагаете? " аборигенам деваться некуда. Принимаются они
переделывать и решительно заменять. И только они это закончили, как вдруг прибывает с земли ракета "скорой
помощи", санитары хватают изобретателя и делают ему надлежащий укол, врач приносит аборигенам свои извинения, и
ракета отбывает. Аборигены в тоске и смущении, стыдясь глядеть друг другу в глаза, начинают расходиться и тут
замечают, что двигатель-то заработал. Да, друзья мои, двигатель заработал и продолжает работать до сих пор, вот
уже полтораста лет.
...
Аркадий и Борис Стругацкие. Малыш

#33 Liv

Liv

    живет тут

  • Пользователи ST test (off)
  • PipPipPipPipPip
  • 162 сообщений

Опубликовано 07 Июль 2007 - 03:10

я здесь пропишусь...

вот тоже интересен вопрос: на конкретном периоде красить ма возможно, наподобие как в АО - вверх зелена,а вниз красная напрмер?
а тоя думаю, что будет краситься вс я линия в зависимости направления на последних барах?

Такой индикатор уже давно написан (не мной) и он достаточно прикольный.
см. приложение....

а что касается "можно ли отобразить вертикальный отрезок в необходимом месте экрана, с координатами в пикселах (а не время/цена)?", то именно такой объект создать нельзя - нет такого в MT4. Это же не графический редактор, а график движения цен и здесь всё на это завязано. поэтому вряд ли стоит что-то ещё придумывать.... :cool2:

Вложенные файлы


Удачи!

#34 Geokom

Geokom

    живет тут

  • Пользователи ST test (off)
  • PipPipPipPipPip
  • 207 сообщений

Опубликовано 07 Июль 2007 - 06:53

У переменной MA1 всегда будет + (плюс), т.к. это Moving Average, т.е. Средняя Скользящая цены, а цена никогда не будет отрицательной (во был бы прикол - тебе платят за то, что ты покупаешь товар! :rolleyes: )

На сколько я понял, имеется желание сделать индикатор направления движения СС (вверх или вниз). Об этом позднее мы будем говорить.... увы, сейчас сильно занят - как раз то время, когда день весь год кормит....


Уважаемый Liv!

C Вашей помощью сделал первый индикатор:
http://forum.masterf...a...5799&st=60#

Спасибо Первому учителю!

вероятно, все это не оптимально, но это потом.

Нужна также помощь для дальнейшего развития.

Всем удачи!
... Является на некую цивилизованную планету один землянин, входит он в контакт и предлагает аборигенам свои
услуги в качестве крупнейшего на земле специалиста по конструированию и эксплуатации вечных двигателей первого
рода. Аборигены, натурально, смотрят этому посланцу сверхразума в рот и, следуя его указаниям, немедленно
принимаются строить. Построили. Не работает вечный двигатель. Землянин крутит колеса, ползает среди стержней и
всяких шестеренок и бранится, что все сделано не так. "технология, - говорит, - у вас отсталая, вот эти узлы надо
решительно переделать, а вон те так и вообще заменить, как вы полагаете? " аборигенам деваться некуда. Принимаются они
переделывать и решительно заменять. И только они это закончили, как вдруг прибывает с земли ракета "скорой
помощи", санитары хватают изобретателя и делают ему надлежащий укол, врач приносит аборигенам свои извинения, и
ракета отбывает. Аборигены в тоске и смущении, стыдясь глядеть друг другу в глаза, начинают расходиться и тут
замечают, что двигатель-то заработал. Да, друзья мои, двигатель заработал и продолжает работать до сих пор, вот
уже полтораста лет.
...
Аркадий и Борис Стругацкие. Малыш

#35 Liv

Liv

    живет тут

  • Пользователи ST test (off)
  • PipPipPipPipPip
  • 162 сообщений

Опубликовано 07 Июль 2007 - 07:28

.... сделал первый индикатор:

Я очень этому рад! Желаю удачи и дальнейших успехов! Буду помогать, как смогу! :biggrin: :biggrin:
Удачи!

#36 Geokom

Geokom

    живет тут

  • Пользователи ST test (off)
  • PipPipPipPipPip
  • 207 сообщений

Опубликовано 08 Июль 2007 - 04:24

Я очень этому рад! Желаю удачи и дальнейших успехов! Буду помогать, как смогу! :biggrin: :biggrin:


Liv, нужна помощь, сделал скрипт, http://forum.masterf...a...=5799&st=61
в LiteForexe работает, в других терминалах - нет, как такое может быть?
... Является на некую цивилизованную планету один землянин, входит он в контакт и предлагает аборигенам свои
услуги в качестве крупнейшего на земле специалиста по конструированию и эксплуатации вечных двигателей первого
рода. Аборигены, натурально, смотрят этому посланцу сверхразума в рот и, следуя его указаниям, немедленно
принимаются строить. Построили. Не работает вечный двигатель. Землянин крутит колеса, ползает среди стержней и
всяких шестеренок и бранится, что все сделано не так. "технология, - говорит, - у вас отсталая, вот эти узлы надо
решительно переделать, а вон те так и вообще заменить, как вы полагаете? " аборигенам деваться некуда. Принимаются они
переделывать и решительно заменять. И только они это закончили, как вдруг прибывает с земли ракета "скорой
помощи", санитары хватают изобретателя и делают ему надлежащий укол, врач приносит аборигенам свои извинения, и
ракета отбывает. Аборигены в тоске и смущении, стыдясь глядеть друг другу в глаза, начинают расходиться и тут
замечают, что двигатель-то заработал. Да, друзья мои, двигатель заработал и продолжает работать до сих пор, вот
уже полтораста лет.
...
Аркадий и Борис Стругацкие. Малыш

#37 Liv

Liv

    живет тут

  • Пользователи ST test (off)
  • PipPipPipPipPip
  • 162 сообщений

Опубликовано 08 Июль 2007 - 07:06

Liv, нужна помощь, сделал скрипт, http://forum.masterf...a...=5799&st=61
в LiteForexe работает, в других терминалах - нет, как такое может быть?

Вообще-то, язык MQL был разработан для платформы MT4 и, разумеется, может быть использован только там. И если какой-то ДЦ имеет терминал, отличный от MetaTrader, то там, вполне возможно, советники/индикаторы/скрипты, написанные в MQL работать не будут.
Удачи!

#38 Geokom

Geokom

    живет тут

  • Пользователи ST test (off)
  • PipPipPipPipPip
  • 207 сообщений

Опубликовано 08 Июль 2007 - 07:49

Вообще-то, язык MQL был разработан для платформы MT4 и, разумеется, может быть использован только там. И если какой-то ДЦ имеет терминал, отличный от MetaTrader, то там, вполне возможно, советники/индикаторы/скрипты, написанные в MQL работать не будут.


Да нет, ну ест-но везде МТ4, но в Lite работает , а в Finex - нет
... Является на некую цивилизованную планету один землянин, входит он в контакт и предлагает аборигенам свои
услуги в качестве крупнейшего на земле специалиста по конструированию и эксплуатации вечных двигателей первого
рода. Аборигены, натурально, смотрят этому посланцу сверхразума в рот и, следуя его указаниям, немедленно
принимаются строить. Построили. Не работает вечный двигатель. Землянин крутит колеса, ползает среди стержней и
всяких шестеренок и бранится, что все сделано не так. "технология, - говорит, - у вас отсталая, вот эти узлы надо
решительно переделать, а вон те так и вообще заменить, как вы полагаете? " аборигенам деваться некуда. Принимаются они
переделывать и решительно заменять. И только они это закончили, как вдруг прибывает с земли ракета "скорой
помощи", санитары хватают изобретателя и делают ему надлежащий укол, врач приносит аборигенам свои извинения, и
ракета отбывает. Аборигены в тоске и смущении, стыдясь глядеть друг другу в глаза, начинают расходиться и тут
замечают, что двигатель-то заработал. Да, друзья мои, двигатель заработал и продолжает работать до сих пор, вот
уже полтораста лет.
...
Аркадий и Борис Стругацкие. Малыш

#39 Liv

Liv

    живет тут

  • Пользователи ST test (off)
  • PipPipPipPipPip
  • 162 сообщений

Опубликовано 08 Июль 2007 - 10:41

Советую скачать МетаТрейдер с сайта производителя. Заметил следующую вещь: скаченные у ДЦ терминалы по разному отображают индикаторы... иногда совсем в обратную сторону...
Очень подозреваю, что некоторые ДЦ специально изменяют терминал (он поставляется в исходных кодах и легко поддаётся модификации) для успешного "заваливания" трейдера.
Удачи!

#40 Vitar

Vitar

    живет тут

  • Пользователи ST test (off)
  • PipPipPipPipPip
  • 189 сообщений

Опубликовано 10 Июль 2007 - 05:49

@Не обязательно запоминать полностью написание всех параметров функций, - достаточно запомнить только написание имени функции. Уже при написании имени функции редактор предложит вам список, из которого вы сможете выбрать нужное слово. Пишем её, выделяем и нажимаем F1. Откроется окно подсказки, где вы увидите полностью расписанную функцию со всеми параметрами.@

Понятно, как узнать совокупность параметров индикаторов, входящих в комплект МТ4. А как быть с пользовательскими индикаторами, которых там нет?
В тексте индикаторов как правило, не написаны строки их параметрнов, и как же к ним обращаться при написании новых индикаторов?
например совершенно замечательные индикаторы Юрика
JMA JMACD JCFBaux Heiken Ashi
www.Specia-list2007.narod.ru/_ind_.rar
(в папке _include_ - файлы для правильной работы этих индикаторов, кот. нужно поместить в папку experts/include )

Станислав
Если боишься - не делай, если делаешь, уже ничего не бойся!
Чингис-Хан

#41 Liv

Liv

    живет тут

  • Пользователи ST test (off)
  • PipPipPipPipPip
  • 162 сообщений

Опубликовано 14 Июль 2007 - 11:38

Понятно, как узнать совокупность параметров индикаторов, входящих в комплект МТ4. А как быть с пользовательскими индикаторами, которых там нет?
В тексте индикаторов как правило, не написаны строки их параметрнов, и как же к ним обращаться при написании новых индикаторов?
например совершенно замечательные индикаторы Юрика
JMA JMACD JCFBaux Heiken Ashi
www.Specia-list2007.narod.ru/_ind_.rar
(в папке _include_ - файлы для правильной работы этих индикаторов, кот. нужно поместить в папку experts/include )

Станислав

:blush: Я бы назвал этот вопрос провокационным, т.к. ответ ты уже знаешь!...
Но раз вопрос прозвучал, то нужно ответить...

В основном это делается с помощью функции iCustom.
Например:
получение значения индикатора JMA:
MQL
[color=blue;font-weight:bold]double[/color] dlCurrentValue = [color=violet;font-weight:bold]iCustom[/color]([color=navy;]NULL[/color],0,[color=green]"JMA"[/color] ,0,0);

Значения параметров этой функции простые:
  • NULL - пишется, если не конкретизируется инструмент, иначе пишется символьное имя инструмента, например "GBPUSD".
  • 0 - если не конкретизируется таймфрейм, иначе пишется нужный таймфрейм, например 15 - 15-минутный таймфрейм.
  • "JMA" - имя используемого индикатора. Индикатор должен быть скомпиллирован, т.е. должен присутствовать файл "jma.ex4" (в Windows регистр букв не имеет значение). После этого параметра могут быть один или несколько параметров, кот. передаются в вызываемый индикатор. Передаваемые параметры должны соответствовать порядку объявления и типу внешних (extern) переменных индикатора. ВНИМАНИЕ! Не все индикаторы принимают параметры из этой функции. Например, я очень много промучался передавая параметры индикатору ZigZag, но выяснилось, что эти парметры не принимаются. В этом случае следует скомпиллировать индикатор с нужными вам параметрами.
  • 0 - линия индикатора. У используемого индикатора может быть несколько линий и здесь указывается номер линии по порядку начиная с 0 (всего у индикатора может быть 9 линий - от 0 до 8)
  • 0 - текущий бар (свеча). Номера баров (свечей) начинаются от нуля и увеличиваются с права на лево.
Для себя я чаще делаю так (при наличии исходных кодов): выделяю индикатор в отдельную функцию и затем использую полчившийся массив в своих целях.
Удачи!

#42 Liv

Liv

    живет тут

  • Пользователи ST test (off)
  • PipPipPipPipPip
  • 162 сообщений

Опубликовано 15 Июль 2007 - 08:48

По просьбам, я забегу несколько вперёд и расскажу сегодня о том, как использовать виндоузовские DLL.
Если у вас есть DLL, о которой вы всё знаете (какие функции экспортирует, какие параметры имеют эти функции), то её использование в вашем скрипте/индикаторе/советнике - очень простое дело! :cool2:

И как всегда, я буду показывать на примере. Здесь кусочек кода скрипта, с помощью которого я читал данные на своём сервере для использования.
MQL
#import "wininet.dll"
 [color=blue;font-weight:bold]int[/color] InternetAttemptConnect ([color=blue;font-weight:bold]int[/color] x);
 [color=blue;font-weight:bold]int[/color] Internet[color=red;]Close[/color]Handle([color=blue;font-weight:bold]int[/color] hInet);
 [color=blue;font-weight:bold]int[/color] Internet[color=red;]Open[/color]A(
 [color=blue;font-weight:bold]string[/color] sAgent,
 [color=blue;font-weight:bold]int[/color] lAccessType,
 [color=blue;font-weight:bold]string[/color] sProxyName = "",
 [color=blue;font-weight:bold]string[/color] sProxyBypass = "",
 [color=blue;font-weight:bold]int[/color] lFlags = 0);
 [color=blue;font-weight:bold]int[/color] Internet[color=red;]Open[/color]UrlA(
 [color=blue;font-weight:bold]int[/color] hInternetSession,
 [color=blue;font-weight:bold]string[/color] sUrl,
 [color=blue;font-weight:bold]string[/color] sHeaders = "",
 [color=blue;font-weight:bold]int[/color] lHeadersLength = 0,
 [color=blue;font-weight:bold]int[/color] lFlags = 0,
 [color=blue;font-weight:bold]int[/color] lContext = 0);
 [color=blue;font-weight:bold]int[/color] InternetReadFile(
 [color=blue;font-weight:bold]int[/color] hFile,
 [color=blue;font-weight:bold]int[/color]& sBuffer[],
 [color=blue;font-weight:bold]int[/color] lNumBytesToRead,
 [color=blue;font-weight:bold]int[/color]& lNumberOfBytesRead[]);
#import

[color=blue;font-weight:bold]int[/color] start() {
 [color=blue;font-weight:bold]if[/color](!IsDllsAllowed()) {
[color=violet;font-weight:bold]Alert[/color]([color=green]"У вас выключено разрешение использовать DLL"[/color] );
[color=blue;font-weight:bold]return[/color](0);
 }
 [color=blue;font-weight:bold]int[/color] rv = InternetAttemptConnect(0);
 [color=blue;font-weight:bold]if[/color](rv != 0) {
[color=violet;font-weight:bold]Alert[/color]([color=green]"Нет соединения!"[/color] );
[color=blue;font-weight:bold]return[/color](0);
 }
 [color=blue;font-weight:bold]int[/color] hInternetSession = Internet[color=red;]Open[/color]A([color=green]"Microsoft Internet Explorer"[/color] , 0, [color=green]"", "[/color] ", 0);
 [color=blue;font-weight:bold]if[/color](hInternetSession <= 0) {
[color=violet;font-weight:bold]Alert[/color]([color=green]"Не удаётся соединиться с Internet'ом"[/color] );
[color=blue;font-weight:bold]return[/color](0);
 }
 [color=blue;font-weight:bold]int[/color] hURL = Internet[color=red;]Open[/color]UrlA(hInternetSession, [color=green]"http://[color=blue;font-weight:bold]for[/color]ex.orotukan.ru/cgi-bin/connect.cgi"[/color] , "", 0, 0, 0);
 [color=blue;font-weight:bold]if[/color](hURL <= 0) {
[color=violet;font-weight:bold]Alert[/color]([color=green]"Не удалось соединиться с адресом!"[/color] );
Internet[color=red;]Close[/color]Handle(hInternetSession);
[color=blue;font-weight:bold]return[/color](0);
 }
 [color=blue;font-weight:bold]int[/color] cBuffer[256];
 [color=blue;font-weight:bold]int[/color] dwBytesRead[1];
 [color=blue;font-weight:bold]bool[/color] bResult = InternetReadFile(hURL, cBuffer, 1024, dwBytesRead);
 [color=grey]/* здесь я обрабатываю полученные данные в массиве cBuffer */[/color]
 Internet[color=red;]Close[/color]Handle(hInternetSession);
 [color=blue;font-weight:bold]return[/color](0);
}

Как вы можете заметить, сначала идет описание импорта из DLL нужных мне функций, с обязательным указанием всех параметров и их типов. Обратите внимание, что в используемых функциях имеются параметры, передаваемые по ссылке:
MQL
...
[color=blue;font-weight:bold]int[/color]& sBuffer[],
...

Знак амперсанда (&) как раз и указывает то, что этот параметр передаётся по ссылке, а не по значению.

После полного описания импортируемых функций, их можно использовать в вашем модуле точно так же, как и обычные функции.
Удачи!

#43 Liv

Liv

    живет тут

  • Пользователи ST test (off)
  • PipPipPipPipPip
  • 162 сообщений

Опубликовано 15 Июль 2007 - 07:28

После некоторого отступления, вернёмся опять к нашим скользящим средним.
Сейчас мы создадим простой индикатор флэта.
Когда четыре СС разных периодов сближаются, то это говорит о возможном повороте тренда, но это может быть и флэт, особенно, когда эти четыре СС доржатся друг возле друга продолжительное время. Вот на этом и будет базироваться наш индикатор.
Он будет иметь одну линию типа гистограммы:
MQL
[color=blue;]#property[/color] [color=blue;]indicator_separate_window[/color]
[color=blue;]#property[/color] [color=blue;]indicator_buffers[/color] 1
[color=blue;]#property[/color] [color=blue;]indicator_color[/color]1 White
[color=blue;]#property[/color] [color=blue;]indicator_width[/color]1 2
[color=blue;]#property[/color] [color=blue;]indicator_minimum[/color] 0
[color=blue;]#property[/color] [color=blue;]indicator_maximum[/color] 10

Как видите, я прописал размер отдельного окна с тем, чтобы величина нашего индикатора всегда была не более 1/10 совместного окна. Если индикатор не будет использоваться с другими индикаторами вместе, то можно выключить установки максимума и минимума окна и сделать окно индикатора узеньким.
Для нашего индикатора мы будем использовать пять параметров - уровень флэта и четыре периода СС:
MQL
[color=blue;font-weight:bold]extern[/color] [color=blue;font-weight:bold]double[/color] УровеньФлэта=0.0003;
[color=blue;font-weight:bold]extern[/color] [color=blue;font-weight:bold]int[/color] MA1=5;
[color=blue;font-weight:bold]extern[/color] [color=blue;font-weight:bold]int[/color] MA2=12;
[color=blue;font-weight:bold]extern[/color] [color=blue;font-weight:bold]int[/color] MA3=18;
[color=blue;font-weight:bold]extern[/color] [color=blue;font-weight:bold]int[/color] MA4=21;
//---- buffers
[color=blue;font-weight:bold]double[/color] ExtMapBuffer1[];

Уровень флэта подбирается на каждый таймфрейм самостоятельно. Он будет везде разным. И, возможно придётся и периоды подбирать....
Наш индикатор будет гистограммой:
MQL
[color=blue;font-weight:bold]int[/color] init() {
 [color=violet;font-weight:bold]SetIndexStyle[/color](0,[color=navy;]DRAW_HISTOGRAM[/color]);
 [color=violet;font-weight:bold]SetIndexBuffer[/color](0,ExtMapBuffer1);
 [color=blue;font-weight:bold]return[/color](0);
}

И теперь расчётная часть:
MQL
[color=blue;font-weight:bold]int[/color] start() {
 [color=blue;font-weight:bold]int[/color] limit;
 [color=blue;font-weight:bold]int[/color] save_val=0;
 [color=blue;font-weight:bold]double[/color] valMA1, valMA2, valMA3, valMA4;
 [color=blue;font-weight:bold]int[/color] counted_bars=[color=violet;font-weight:bold]IndicatorCounted[/color]();
 // проверим возможные ошибки
 [color=blue;font-weight:bold]if[/color](counted_bars<0) [color=blue;font-weight:bold]return[/color](-1);
 // пересчитаем последний
 [color=blue;font-weight:bold]if[/color](counted_bars>0) counted_bars--;
 limit=[color=red;]Bars[/color]-counted_bars;
 [color=blue;font-weight:bold]for[/color]([color=blue;font-weight:bold]int[/color] i=0; i<limit; i++) {
valMA1 = [color=violet;font-weight:bold]iMA[/color]([color=navy;]NULL[/color],0,MA1,0,[color=navy;]MODE_SMA[/color],[color=navy;]PRICE_CLOSE[/color],i);
valMA2 = [color=violet;font-weight:bold]iMA[/color]([color=navy;]NULL[/color],0,MA2,0,[color=navy;]MODE_SMA[/color],[color=navy;]PRICE_CLOSE[/color],i);
valMA3 = [color=violet;font-weight:bold]iMA[/color]([color=navy;]NULL[/color],0,MA3,0,[color=navy;]MODE_SMA[/color],[color=navy;]PRICE_CLOSE[/color],i);
valMA4 = [color=violet;font-weight:bold]iMA[/color]([color=navy;]NULL[/color],0,MA4,0,[color=navy;]MODE_SMA[/color],[color=navy;]PRICE_CLOSE[/color],i);
[color=blue;font-weight:bold]if[/color] (  [color=violet;font-weight:bold]MathAbs[/color](valMA1-valMA2)<=УровеньФлэта &&
[color=violet;font-weight:bold]MathAbs[/color](valMA1-valMA3)<=УровеньФлэта &&
[color=violet;font-weight:bold]MathAbs[/color](valMA1-valMA4)<=УровеньФлэта  ) save_val = 1;
[color=blue;font-weight:bold]else[/color] save_val=0;
ExtMapBuffer1[i] = save_val;
 }
 [color=blue;font-weight:bold]return[/color](0);
}

Как видите - тут всё просто: на текущем баре расчитываются СС разных периодов и разности этих значений сравниваются со значением переменной УровеньФлэта. Если значение не правышает уровень, то индикатору назначается 1, иначе - 0. Всё просто! :blush:
Удачи!

#44 Liv

Liv

    живет тут

  • Пользователи ST test (off)
  • PipPipPipPipPip
  • 162 сообщений

Опубликовано 10 Август 2007 - 07:20

Приветствую!
Пока есть немного времени я хочу поговорить о ещё одной возможности индикации флэта.

У RSI есть одна интересная особенность: чем больше волатильность, тем меньше мгновенное значение движения RSI. И, соответственно, наоборот.... что даёт нам возможность получить индикатор мгновенного флэта.

Итак, начнём...

Это будет просто вывод сообщения о том, что "Индикатор мгновенного флэта" показывет вероятность флэта.
Будут пять внешних параметров:
[MQL]
extern double РазмерФлэта=3.0; // проверочная значение шага RSI
extern int ПериодФлэта=10; // период для расчёта RSI
extern color ЦветФлэта=Yellow; // цвет вывода надписи
extern int КоординатаX=400; // координаты вывода надписи
extern int КоординатаY=0;
// нам нужна одна переменная, которая бы хранила прошлое значение
static double OldValue;
[/MQL]
Собственно никаких идикаторов нет... просто будет выводиться надпись о том, что RSI сигналит о возможном флэте.

Создаём эту надпись и временно убираем с экрана:
[MQL]
int init() {
ObjectCreate("FlatSig",OBJ_LABEL,0,0,0);
ObjectSet("FlatSig",OBJPROP_XDISTANCE,1000);
ObjectSet("FlatSig",OBJPROP_YDISTANCE,1000);
ObjectSetText("FlatSig","ФЛЭТ!",14,"Arial Cyr",ЦветФлэта);
return(0);
}

int deinit() {
ObjectDelete("FlatSig");
ObjectDelete("HalfLine");
Comment(" ");
return(0);
}
// эта функция показывает надпись
void Make() {
ObjectSet("FlatSig",OBJPROP_XDISTANCE,КоординатаX);
ObjectSet("FlatSig",OBJPROP_YDISTANCE,КоординатаY);
}
// эта функция прячет надпись
void Del() {
ObjectSet("FlatSig",OBJPROP_XDISTANCE,1000);
ObjectSet("FlatSig",OBJPROP_YDISTANCE,1000);
}

int start() {
double NewValue = iRSI(NULL,0,ПериодФлэта,PRICE_CLOSE,0);
double CurFlat = MathAbs(NewValue - OldValue);
Comment("Флэт="+ CurFlat);
if (CurFlat > РазмерФлэта || CurFlat == 0) {
Make();
} else {
Del();
}
OldValue = NewValue;
}
[/MQL]

Вот, собственно, и всё... :smile:
При подозрении на флэт будет выводиться надпись "ФЛЭТ!", а в месте коментария будет выведено расчётное значение.

Для каждого инструмента, таймфрэйма и ДЦ значения мгновенного флэта будут разные и тут нужно поработать с индикатором, чтобы найти нужные значения. Но, как я думаю, это стоит того....

Я широко пользуюсь этим индикатором.
Как только начинает мигать (или горит постоянно) надпись "ФЛЭТ!", значит будет флэт. Если сначала уровень был высок, затем снизился (надпись исчезла), а потом опять появилась - сужающийся флэт,.... если сначала высокий, затем низкий, затем опять высокий, то тут можно ждать расширяющегося флэта...
Вариантов очень много, но, к сожалению, на каждом инструменте, таймфрэйме и ДЦ они разные.
Удачи!

#45 putnik

putnik

    пробегал

  • Пользователи
  • Pip
  • 1 сообщений

Опубликовано 03 Октябрь 2007 - 09:49

Здравствуйте.Я все прочел но видно не дано быть писателем индикаторов.Не все могут.Но один индикатор хотелось бы иметь.Может кто и напишет. Идея такая."Я проверял не обман ли упровляемость рынка просто"Провел по паре EURUSD по вершинам линии и они совпали во многих местах в2,00минутки на терминале лайта.Я даже чутьчуть с этого поимел потом тренд пошел в верх.хотел индикатор но не мое.




Посетителей, читающих эту тему: 2

0 пользователей, 2 гостей, 0 анонимных пользователей

Рейтинг брокеров форекс: кто лидер, кто аутсайдер и почему?




Masterforex-V NordFX

Rambler's Top100

Принимаем Z-Payment