Перейти к содержанию

Доработка индикаторов: общая тема


Рекомендуемые сообщения

Доработка индикаторов: общая тема Опубликовано

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

int colorma =iCustom(Symbol(), 0, "ViniL LRMA color", period, pricem, Shiftm, 0, 0);
int colorma2 =iCustom(Symbol(), 0, "ViniL LRMA color", period, pricem, Shiftm, 1, 0);
int colorma3 =iCustom(Symbol(), 0, "ViniL LRMA color", period, pricem, Shiftm, 2, 0);
С цветом я вроде разобрался, но я не уверен что это правильно. Как получить цену этой линии? Индикатор я прикрепил.

VininI_LRMA_color.mq4

Ссылка на сообщение
Поделиться на другие сайты

  • Ответов 1,8k
  • Создано
  • Последний ответ

Популярные авторы

Популярные авторы

Популярные посты

прикрутилround_LevelsWhite_alert_1.mq4

Перейти

StepMA_Stoch alert.mq4

Перейти

1. Push-уведомления добавлены. Включается/выключаются в настройках NotificationAlerts 2. Текущий TF добавлен как в алерты, так и в PUSH-уведомления. 3. Ошибки исправлены.   Проверя

Перейти
Доработка индикаторов: общая тема Опубликовано

У тебя все правильно. Если заглянуть внутрь индикатора то можно сказать что Желтая линия 0 буфер всегда имеет расчетное значение. а Зеленый и красный цвет индикатор принимает только если желтая линия на текущем боте больше или меньше чем на предыдущем баре. Сделаем вывод ты все сделал правильно. Само значение индикатора ты берешь с 0 буфера а значение для принятия торгового решения основываясь на цвет с 1 или 2.

  • Лайк 1
Ссылка на сообщение
Поделиться на другие сайты

Доработка индикаторов: общая тема Опубликовано


У тебя все правильно. Если заглянуть внутрь индикатора то можно сказать что Желтая линия 0 буфер всегда имеет расчетное значение. а Зеленый и красный цвет индикатор принимает только если желтая линия на текущем боте больше или меньше чем на предыдущем баре. Сделаем вывод ты все сделал правильно. Само значение индикатора ты берешь с 0 буфера а значение для принятия торгового решения основываясь на цвет с 1 или 2.


Еще раз спасибо тебе, ты всё очень доступно разъяснил! :)

Добавлено: 09-01-2014 15:17:45

Возможно, я чего-то не понял и туплю, но мой советник не хочет открывать ордера. Как мне написать код чтобы сов открывал ордер, если цена выше/ниже линии индикатора + цвет линии синий/красный? Я написал так:
double pricema =iCustom(Symbol(), 0, "ViniL LRMA color", period, pricem, Shiftm, 0, 0);
double colorma2 =iCustom(Symbol(), 0, "ViniL LRMA color", period, pricem, Shiftm, 1, 0);
double colorma3 =iCustom(Symbol(), 0, "ViniL LRMA color", period, pricem, Shiftm, 2, 0);

if (colorma2>0 && colorma3==EMPTY_VALUE && Ask>pricema) {открываем ордер на покупку}
Если тут всё правильно, то значит я допустил ошибку в другом месте. Ведь нулевой буфер дает значение цены, на которой находится линия индикатора. Я правильно понял? Изменено пользователем Hurricane in the head
Ссылка на сообщение
Поделиться на другие сайты

Доработка индикаторов: общая тема Опубликовано

Правильно, введи несколько комментариев внутри этого алгоритма и посмотри что не так.

  • Лайк 1
Ссылка на сообщение
Поделиться на другие сайты

Доработка индикаторов: общая тема Опубликовано

Прошу помощи в исправлении очередного эксперементального индикатора. На этот раз по анализу и сведению статистики входов на основании ГСЧ. Файл у меня генерируется и работает отлично, но вот в окне он почему-то не отражается. Но увы знаний в области индикаторов у меня нехватает, я попробовал внести все что было мне известно и о чем узнал, но мне это непомогло добиться результата.

Подручный_Властелина.mq4

  • Лайк 1
Ссылка на сообщение
Поделиться на другие сайты

Доработка индикаторов: общая тема Опубликовано


Правильно, введи несколько комментариев внутри этого алгоритма и посмотри что не так.

Оказалось что в функции iCustom я неправильно написал имя пользовательского индикатора. Я себе уже всю голову сломал, вот до чего доводит невнимательность! :)
Ссылка на сообщение
Поделиться на другие сайты

Доработка индикаторов: общая тема Опубликовано
nicholas, спасибо за отклик. Какой файл необходим на анализ? Если тот что он сгенерировал. То Вы можете запустить индюк у себя и он его тоже сгенерирует. А индикатор я вроде выложил. Основная проблема в том что независимо от исхода виртуальной сделки в файл все записывается правильно а в буфер не выводится. Хотя я вроде делал так чтоб было похоже на череду импульсов Изменено пользователем Ttomas
Ссылка на сообщение
Поделиться на другие сайты

Доработка индикаторов: общая тема Опубликовано

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

  • Лайк 1
Ссылка на сообщение
Поделиться на другие сайты

Доработка индикаторов: общая тема Опубликовано


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


Если не сложно, можешь помочь еще с одним индикатором? Это видоизмененная матрица. Только суть этой матрицы в том что она показывает не кубики, а полосы. Т.е. если все четыре кубика красные - индикатор показывает красную полосу, а если 3 из 4 красные - он показывает серую полосу. Аналогично для синего цвета. Мне нужно взять за условие открытия сделки цвет индикатора, но я запутался в буферах, там их аж 8 штук.

STSn_Tape.mq4
Матрица.PNG

Ссылка на сообщение
Поделиться на другие сайты

Доработка индикаторов: общая тема Опубликовано

Тут несколько посложнее. основную смуту вносит тот факт что второй буфер используется как для отображения направления вверх так и для отображения серого цвета. Кусок кода я составлять не буду просто опишу.

Вопервых я бы посоветовал внутри индюка убрать все лишние строковые внешние переменные.
Вовторых Напиши присвоение 4м переменным значений первых четырех буферов. Далее будут 5 варианта исходов. Если Используется параметр 3 из 4х то у тебя будут только 2 цвета синий и красный поэтому для того чтобы сигнал сформировался нужно проверить 2 переменные отвечающие за эти направления 0 и 2 буфер за синий цвет, а также 1 и 3 буфера за красный цвет. Если параметр 3 из 4х выключен то у тебя возможны 3 варианта. Синий если буфер 0 равен 1, Красный если буфер 1 равен единице. И Серый если буфер 2 равен единице. Тебе просто нужно дополнительно проверить параметр который ты передаешь индикатору.

  • Лайк 2
Ссылка на сообщение
Поделиться на другие сайты

Доработка индикаторов: общая тема Опубликовано


Тут несколько посложнее. основную смуту вносит тот факт что второй буфер используется как для отображения направления вверх так и для отображения серого цвета. Кусок кода я составлять не буду просто опишу.

Вопервых я бы посоветовал внутри индюка убрать все лишние строковые внешние переменные.
Вовторых Напиши присвоение 4м переменным значений первых четырех буферов. Далее будут 5 варианта исходов. Если Используется параметр 3 из 4х то у тебя будут только 2 цвета синий и красный поэтому для того чтобы сигнал сформировался нужно проверить 2 переменные отвечающие за эти направления 0 и 2 буфер за синий цвет, а также 1 и 3 буфера за красный цвет. Если параметр 3 из 4х выключен то у тебя возможны 3 варианта. Синий если буфер 0 равен 1, Красный если буфер 1 равен единице. И Серый если буфер 2 равен единице. Тебе просто нужно дополнительно проверить параметр который ты передаешь индикатору.

Для меня это будет несколько сложновато .:)
На самом деле я тупанул, для обычной матрицы написать код гораздо легче - там 8 буферов и каждые 2 отвечают за цвет одного кубика. Огромное тебе спасибо, можно сказать что ты меня научил брать данные из различных индикаторов! Возможно, эта тема еще многим пригодится. Я тебе очень признателен.
Ссылка на сообщение
Поделиться на другие сайты

  • 2 weeks later...
Доработка индикаторов: общая тема Опубликовано

Обращаюсь к вам с вопросом о помощи для связи с программистом, могущим
помочь в небольшой переделке индикатора - MA Chanels FIBO. Этот индикатор строит Fibo уровни на основе MA 100 или MA200. Мне требуется вписать в него (добавить) три уровня 76.4%; 88.2%; 100%.
С уважением
Евгений.

Ссылка на сообщение
Поделиться на другие сайты

Доработка индикаторов: общая тема Опубликовано

Вот этот индикатор - MA Chanels FIBO. Сам я смог только поменять уровни, одни на другие. Добавить
не могу. Никогда не программировал. Для смены дошел логикой, дальше тупик.

MA_Chanels_FIBO.mq4
MA_Chanels_FIBO.ex4

Ссылка на сообщение
Поделиться на другие сайты

Доработка индикаторов: общая тема Опубликовано

Сочувствую, добавить новые уровни нельзя. Все 8 буферов в советнике уже заняты старыми уровнями. Только заменять старые можно >:d


Добавлено: 24-01-2014 09:06:11

Кстати, ничего не мешает сделать 2 индикатора, как Вы сказали - уровни смогли поменять. Один старый, а другой с поменяными уровнями, и получаем - 2 индикатора и все нужные уровни на чарте ;) Изменено пользователем mzk_3om6u
Ссылка на сообщение
Поделиться на другие сайты

Доработка индикаторов: общая тема Опубликовано

это код болинжера, не подскажите что в нем нужно поменять что бы на экран выводилась величиа стандартного отклонения, int start()
{
int i,k,counted_bars=IndicatorCounted();
double deviation;
double sum,oldval,newres;
//----
if(Bars//---- initial zero
if(counted_bars for(i=1;i {
MovingBuffer[Bars-i]=EMPTY_VALUE;
UpperBuffer[Bars-i]=EMPTY_VALUE;
LowerBuffer[Bars-i]=EMPTY_VALUE;
}
//----
int limit=Bars-counted_bars;
if(counted_bars>0) limit++;
for(i=0; i MovingBuffer=iMA(NULL,0,BandsPeriod,BandsShift,MODE_SMA,PRICE_CLOSE,i);
//----
i=Bars-BandsPeriod+1;
if(counted_bars>BandsPeriod-1) i=Bars-counted_bars-1;
while(i>=0)
{
sum=0.0;
k=i+BandsPeriod-1;
oldval=MovingBuffer;
while(k>=i)
{
newres=Close[k]-oldval;
sum+=newres*newres;
k--;
}
deviation=BandsDeviations*MathSqrt(sum/BandsPeriod);
UpperBuffer=oldval+deviation;
LowerBuffer=oldval-deviation;
i--;
}
//----
return(0);
}

Ссылка на сообщение
Поделиться на другие сайты

Доработка индикаторов: общая тема Опубликовано


а что такое ВСО?




нижняя и верхняя линия находится как раз на величине стандартных отклонений, мне прост нужно что бы эти величины были выведены на экран)

Добавлено: 24-01-2014 14:29:12

Стандартное отклонение, среднеквадратичное отклонение, СКО, выборочное стандартное отклонение (англ. standard deviation, STD, STDev) — очень распространенный показатель рассеяния в описательной статистике. Но, т.к. технический анализ сродни статистике, данный показатель можно (и нужно) использовать в техническом анализе для обнаружения степени рассеяния цены анализируемого инструмента во времени.

Добавлено: 24-01-2014 14:36:38

Расчет

Полосы Боллинджера формируются из трех линий. Средняя линия (MIDDLE LINE, ML) — это обычное скользящее среднее.

ML = SUM (CLOSE, N) / N = SMA (CLOSE, N)

Верхняя линия (TOP LINE, TL) — это та же средняя линия, смещенная вверх на определенное число стандартных отклонений (D).

TL = ML + (D * StdDev)

Нижняя линия (BOTTOM LINE, BL) — это средняя линия, смещенная вниз на то же число стандартных отклонений.

BL = ML — (D * StdDev)

StdDev = SQRT (SUM ((CLOSE - SMA (CLOSE, N))^2, N)/N)

где:

SUM (..., N) — сумма за N периодов;
CLOSE — цена закрытия;
N — количество периодов, используемых для расчета;
SMA — простая скользящая средняя;
SQRT — квадратный корень;
StdDev — стандартное отклонение:

gbpusdm.png

Изменено пользователем Валерий123451
Ссылка на сообщение
Поделиться на другие сайты

Доработка индикаторов: общая тема Опубликовано

и в чем проблема добавить вывод на экран 2 строчки из буферов?
вроде во 2 уроке это было.

Ссылка на сообщение
Поделиться на другие сайты

Доработка индикаторов: общая тема Опубликовано


и в чем проблема добавить вывод на экран 2 строчки из буферов?
вроде во 2 уроке это было.



пересмотрю еще раз, прост недавно начал смотреть видео уроки по mql4, тк больше предпочитаю ручную торговлю, не как прост не разберусь в коде болингера, где сама формула и что нужно выводить..
Ссылка на сообщение
Поделиться на другие сайты

Доработка индикаторов: общая тема Опубликовано

Наслаждайся.


//+------------------------------------------------------------------+
//| Bands.mq4 |
//| Copyright © 2005, MetaQuotes Software Corp. |
//| http://www.metaquotes.net/ |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2005, MetaQuotes Software Corp."
#property link "http://www.metaquotes.net/"

#property indicator_chart_window
#property indicator_buffers 3
#property indicator_color1 LightSeaGreen
#property indicator_color2 LightSeaGreen
#property indicator_color3 LightSeaGreen
//---- indicator parameters
extern int BandsPeriod=20;
extern int BandsShift=0;
extern double BandsDeviations=2.0;
//---- buffers
double MovingBuffer[];
double UpperBuffer[];
double LowerBuffer[];
//+------------------------------------------------------------------+
//| Custom indicator initialization function |
//+------------------------------------------------------------------+
int init()
{
//---- indicators
SetIndexStyle(0,DRAW_LINE);
SetIndexBuffer(0,MovingBuffer);
SetIndexStyle(1,DRAW_LINE);
SetIndexBuffer(1,UpperBuffer);
SetIndexStyle(2,DRAW_LINE);
SetIndexBuffer(2,LowerBuffer);
//----
SetIndexDrawBegin(0,BandsPeriod+BandsShift);
SetIndexDrawBegin(1,BandsPeriod+BandsShift);
SetIndexDrawBegin(2,BandsPeriod+BandsShift);
//----
return(0);
}
//+------------------------------------------------------------------+
//| Bollinger Bands |
//+------------------------------------------------------------------+
int start()
{
int i,k,counted_bars=IndicatorCounted();
double deviation;
double sum,oldval,newres;
//----
if(Bars//---- initial zero
if(counted_bars for(i=1;i {
MovingBuffer[Bars-i]=EMPTY_VALUE;
UpperBuffer[Bars-i]=EMPTY_VALUE;
LowerBuffer[Bars-i]=EMPTY_VALUE;
}
//----
int limit=Bars-counted_bars;
if(counted_bars>0) limit++;
for(i=0; i MovingBuffer=iMA(NULL,0,BandsPeriod,BandsShift,MODE_SMA,PRICE_CLOSE,i);
//----
i=Bars-BandsPeriod;
if(counted_bars>BandsPeriod-1) i=Bars-counted_bars-1;
while(i>=0)
{
sum=0.0;
k=i+BandsPeriod-1;
oldval=MovingBuffer;
while(k>=i)
{
newres=Close[k]-oldval;
sum+=newres*newres;
k--;
}
deviation=BandsDeviations*MathSqrt(sum/BandsPeriod);
UpperBuffer=oldval+deviation; //верхняя полоска
LowerBuffer=oldval-deviation; //нижняя полоска
SetLabel("UPPER", DoubleToStr(UpperBuffer, Digits), Black, 50, 100);
SetLabel("LOWER", DoubleToStr(LowerBuffer, Digits), Black, 100, 100);
// SetLabel - можешь покрутить параметры, куда тебе данные воткнуть надо.
i--;
}
//----
return(0);
}
//+------------------------------------------------------------------+
//+----------------------------------------------------------------------------+
//| Автор : Ким Игорь В. aka KimIV, http://www.kimiv.ru |
//+----------------------------------------------------------------------------+
//| Версия : 12.10.2007 |
//| Описание : Установка текстовой метки, объект OBJ_LABEL. |
//+----------------------------------------------------------------------------+
//| Параметры: |
//| nm - наименование объекта |
//| tx - текст |
//| cl - цвет метки |
//| xd - координата X в пикселах |
//| yd - координата Y в пикселах |
//| cr - номер угла привязки (0 - левый верхний, |
//| 1 - правый верхний, |
//| 2 - левый нижний, |
//| 3 - правый нижний ) |
//| fs - размер шрифта (9 - по умолчанию ) |
//+----------------------------------------------------------------------------+
void SetLabel(string nm, string tx, color cl, int xd, int yd, int cr=0, int fs=9) {
if (ObjectFind(nm) ObjectSetText(nm, tx, fs);
ObjectSet(nm, OBJPROP_COLOR , cl);
ObjectSet(nm, OBJPROP_XDISTANCE, xd);
ObjectSet(nm, OBJPROP_YDISTANCE, yd);
ObjectSet(nm, OBJPROP_CORNER , cr);
ObjectSet(nm, OBJPROP_FONTSIZE , fs);
}
Ссылка на сообщение
Поделиться на другие сайты

Доработка индикаторов: общая тема Опубликовано

Если я правильно все понял, то мне достаточно прописать вывод на экран вот этих значений

UpperBuffer=oldval+deviation; //верхняя полоска
LowerBuffer=oldval-deviation; //нижняя полоска

Ссылка на сообщение
Поделиться на другие сайты

Для публикации сообщений создайте учётную запись или авторизуйтесь

Вы должны быть пользователем, чтобы оставить комментарий

Создать учетную запись

Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!

Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.

Войти

  • Специальное предложение


  • Рекомендуемые брокеры

  • ×
    ×
    • Создать...