как сделать свой индикатор форекс Создание сигнального индикатора (для новичков)
Для чего нужны сигнальные (или стрелочные) индикаторы:
1) Разгрузить график от избыточного количества индикаторов;
2) Известить трейдера о возникновении сигнала по формализованным правилам;
3) Скрыть методику принятия решения.
Сигнальный индикатор, с заложенными индикатор в него правилами входа и выхода с рынка, сам по себе уже может представлять законченную торговую систему.
Создание стрелочного индикатора будет легко освоить на следующем примере.
Допустим, необходимо создать индикатор сигнализирующий о моменте пересечения двух скользящих средних (рис 1).
[IMG]http://s003.radikal.ru/i202/1212/7b/646ae37c56a0.jpg[/IMG]
Ниже представлен шаблон, на основе которого вы можете создавать свои сигнальщики. В коде все строки закомментированы. Как говорится, хорошие программы - это хорошо документированные программы.
Результат работы индикатора отображен ни рисунке 2.
[IMG]http://s019.radikal.ru/i610/1212/d9/af6a0fd70613.jpg[/IMG]
Теперь скользящие средние линии можно убрать с графика, оставить только сигнальщик. При появлении стрелок, вы будете точно знать, что произошло пересечение средних (рис 3).
[IMG]http://s020.radikal.ru/i721/1212/50/6e42df8cb346.jpg[/IMG]
Шаблон индикатора
[PHP]//|------------------------------------------------------------------|
//| Indicator Arrow.mq4|
//| Copyright © 2012, Mr.SilverKZ |
//| |
//+------------------------------------------------------------------+
#property copyright "SilverKZ"
#property link ""
//---- отрисовка индикатора в главном окне
#property indicator_chart_window
//---- количество индикаторных буфферов
#property indicator_buffers 2
//---- цвета индикатора
#property indicator_color1 Blue
#property indicator_color2 Red
//---- входные параметры индикатора
extern int MA_Fast = 12;
extern int MA_Slow = 26;
//---- индикаторные буфферы
double buf_1[];
double buf_2[];
//+------------------------------------------------------------------+
//| Функция инициализации, запускается один раз |
//+------------------------------------------------------------------+
int init()
{
//---- 2 индикаторных буффера использованы для счёта
SetIndexBuffer(0, buf_1);
SetIndexBuffer(1, buf_2);
//---- Стиль исполнения графика
//---- DRAW_ARROW - стрелки(символы)
SetIndexStyle (0, DRAW_ARROW, STYLE_SOLID, 3);
SetIndexStyle (1, DRAW_ARROW, STYLE_SOLID, 3);
SetIndexArrow (0, 233);
SetIndexArrow (1, 234);
//---- установка значений индикатора, которые не будут видимы на графике
SetIndexEmptyValue(0,0.0);
SetIndexEmptyValue(1,0.0);
//---- установка номера бара, начиная с которого будет отрисовываться индикатор
SetIndexDrawBegin(0,MA_Slow);
SetIndexDrawBegin(1,MA_Slow);
//---- завершение инициализации
return (0);
}
//+------------------------------------------------------------------+
//| Основная Функция, запускается на каждом тике |
//+------------------------------------------------------------------+
int start()
{
//---- проверка количества баров на достаточность для расчёта
if (Bars <= MA_Slow) return (0);
//---- получение уже посчитанных баров
int ExtCountedBars = IndicatorCounted();
//---- проверка на возможные ошибки
if (ExtCountedBars < 0) return (-1);
//---- последний посчитанный бар должен быть пересчитан
if (ExtCountedBars > 0) ExtCountedBars--;
//---- основной цикл расчёта индиатора
for (int i=Bars - ExtCountedBars-1;i>=0; i--)
{
//---- получение значений индикатора в переменные
double MA_Fast_1 = iMA(NULL, 0, MA_Fast, 0, MODE_EMA, PRICE_CLOSE, i+1);
double MA_Slow_1 = iMA(NULL, 0, MA_Slow, 3, MODE_LWMA, PRICE_CLOSE, i+1);
double MA_Fast_2 = iMA(NULL, 0, MA_Fast, 0, MODE_EMA, PRICE_CLOSE, i+2);
double MA_Slow_2 = iMA(NULL, 0, MA_Slow, 3, MODE_LWMA, PRICE_CLOSE, i+2);
//---- проверка условий по вашим правилам и отрисовка стрелки
if (MA_Fast_1 > MA_Slow_1 && MA_Fast_2 <= MA_Slow_2) buf_1[i+1] = Low[i+1] - 10 Point;
if (MA_Fast_1 < MA_Slow_1 && MA_Fast_2 >= MA_Slow_2) buf_2[i+1] = High[i+1] + 10 Point;
}
//---- завершение основной функции
return (0);
}
//---- end[/PHP]
Вместо стрелок можно использовать другие символы. Для этого в данных строках необходимо заменить коды символов (233 и 234).
SetIndexArrow (0, 233);
SetIndexArrow (1, 234);
Коды символов:
[IMG]http://s017.radikal.ru/i412/1212/07/6ba2d9530ca7.jpg[/IMG]
Для создания своего сигнальщика изменения вносите только в следующий код:
1)
[PHP]//---- входные параметры индикатора
extern int MA_Fast = 12;
extern int MA_Slow = 26;[/PHP]
2)
[PHP]//---- получение значений индикатора в переменные
double MA_Fast_1 = iMA(NULL, 0, MA_Fast, 0, MODE_EMA, PRICE_CLOSE, i+1);
double MA_Slow_1 = iMA(NULL, 0, MA_Slow, 3, MODE_LWMA, PRICE_CLOSE, i+1);
double MA_Fast_2 = iMA(NULL, 0, MA_Fast, 0, MODE_EMA, PRICE_CLOSE, i+2);
double MA_Slow_2 = iMA(NULL, 0, MA_Slow, 3, MODE_LWMA, PRICE_CLOSE, i+2);
//---- проверка условий по вашим правилам и отрисовка стрелки
if (MA_Fast_1 > MA_Slow_1 && MA_Fast_2 <= MA_Slow_2) buf_1[i+1] = Low[i+1] - 10 Point;
if (MA_Fast_1 < MA_Slow_1 && MA_Fast_2 >= MA_Slow_2) buf_2[i+1] = High[i+1] + 10 Point;[/PHP]
На этом все, удачных торгов!!!
П.С. Если материал был вам полезен, прошу отблагодарить ==========================================>


Источник: http://forum.roboforex.ru/showthread.php?t=2210

Поделись с друзьями



Рекомендуем посмотреть ещё:



Как запустить свой индикатор из скрипта? - Технические индикаторы Как сделать омшаник для пчёл


Как сделать свой индикатор форекс Создание пользовательских индикаторов - Простые программы
Как сделать свой индикатор форекс Как сделать самому трендовый индикатор на форекс форуме
Как сделать свой индикатор форекс Язык MQL4 для чайников. Пользовательские индикаторы
Как сделать свой индикатор форекс MQL программирование: Пишем индикатор под MT4
Как сделать свой индикатор форекс Как создать свой индикатор Форекс - LiteForex
Как сделать свой индикатор форекс 100 лучших идей: Как сделать красивую шкатулку своими руками
Как сделать свой индикатор форекс 40 идей для развивающей книжки своими руками
Как сделать свой индикатор форекс WEB САД - Архив форума - Как сформировать штамбовую сирень?



ШОКИРУЮЩИЕ НОВОСТИ