nicholas, благодарю!!! :)
теперь и тормоза пропали абсолютно ;)
Доработка индикаторов: общая тема📌
От loreno, 17 августа, 2011 в Уголок Программиста
Была ошибка новичка.
Я не учел что параметры с коментариями тоже нужно в индикатор передавать.
Поэтому из-за смещения параметорв, в частности Update_in_sec, он раньше пытался считывать значения каждый тик.
Здравствуйте! Скажите кто может поставить звуковой сигнал на индюке NVO при появлении на нём столбца белого цвета?
Заранее СПАСИБО!
NormalizedVolumeOscillator_porsj.ex4
NormalizedVolumeOscillator_porsj.mq4
Держи добрый человек, погоняй в тестере, я уже пив0, мож чо попутал.
Уважаемые программисты, кто сможет добавить в индикатор RSIOMA звуковой сигнал,при пересечении скользящих?
Заранее благодарю.
Уважаемые программисты, кто сможет добавить в индикатор RSIOMA звуковой сигнал,при пересечении скользящих?
Заранее благодарю.
Индикатор мастерили три программиста, этож грааль :-o я четвёртым буду :d
но я не программист. Сначала в тестер
Изменено 6 декабря, 2017 пользователем Pavel888
Просьба программистам добавить звуковой сигнал(+Pop up window) при смене цвета (с синего на красный и наоборот) к индикатору. Заранее благодарен.
Может этот подойдёт?
Здравствуйте! имеется вот такой удивительный индикатор с использованием CCI сразу по всем таймфреймам, в практике очень удобная весчь. Подскажите! не могли бы присоединить к нему функцию обнаружения классицеских диверов сразу по всем таймфреймам + алерт на каком тайме и по какой валюте дивер? Заранее спасибо!
Всем привет!
В MQL не силен.
Пытаюсь вытащить данные из индикатора с помощью iCustom.
Хочу его заюзать для определения тренда.
Сам Индикатор.
//+------------------------------------------------------------------------+
//| Symphonie_Trendline_Indicator_v3.0.mq4 |
//|Based on basic Trendline by MetaTrader_Experts_and_Indicators |
//+------------------------------------------------------------------------+
#property copyright "Symphonie Trader System"
#property link "MetaTrader_Experts_and_Indicators"
#property indicator_chart_window
#property indicator_buffers 4
#property indicator_color1 DodgerBlue
#property indicator_color2 Red
extern int CCIPeriod=63;
extern int ATRPeriod=18;
double TrendUp[];
double TrendDown[];
int st = 0;
//extern int SlowerEMA = 6;
//+------------------------------------------------------------------+
//| Custom indicator initialization function|
//+------------------------------------------------------------------+
int init()
{
//---- indicators
SetIndexStyle(0, DRAW_LINE, STYLE_SOLID, 2);
SetIndexBuffer(0, TrendUp);
SetIndexStyle(1, DRAW_LINE, STYLE_SOLID, 2);
SetIndexBuffer(1, TrendDown);
/*SetIndexStyle(0, DRAW_ARROW, EMPTY);
SetIndexArrow(0, 159);
SetIndexBuffer(0, TrendUp);
SetIndexStyle(1, DRAW_ARROW, EMPTY);
SetIndexArrow(1, 159);
SetIndexBuffer(1, TrendDown);*/
/*for(int i = 0; i TrendUp = NULL;
TrendDown = NULL;
}*/
//----
return(0);
}
//+------------------------------------------------------------------+
//| Custor indicator deinitialization function|
//+------------------------------------------------------------------+
int deinit()
{
//----
/*for(int i = 0; i TrendUp = NULL;
TrendDown = NULL;
}*/
//----
return(0);
}
//+------------------------------------------------------------------+
//| Custom indicator iteration function|
//+------------------------------------------------------------------+
int start()
{
int limit, i, counter;
double Range, AvgRange, cciTrendNow, cciTrendPrevious, var;
int counted_bars = IndicatorCounted();
//---- check for possible errors
if(counted_bars //---- last counted bar will be recounted
if(counted_bars > 0) counted_bars--;
limit=Bars-counted_bars;
for(i = limit; i >= 0; i--) {
cciTrendNow = iCCI(NULL, 0, CCIPeriod, PRICE_TYPICAL, i);
cciTrendPrevious = iCCI(NULL, 0, CCIPeriod, PRICE_TYPICAL, i+1);
//st = st * 100;
counter = i;
Range = 0;
AvgRange = 0;
for (counter = i; counter >= i-9; counter--) {
AvgRange = AvgRange + MathAbs(High[counter]-Low[counter]);
}
Range = AvgRange/10;
if (cciTrendNow >= st && cciTrendPrevious TrendUp[i+1] = TrendDown[i+1];
}
if (cciTrendNow st) {
TrendDown[i+1] = TrendUp[i+1];
}
if (cciTrendNow >= st) {
TrendUp = Low - iATR(NULL, 0, ATRPeriod, i);
if (TrendUp TrendUp = TrendUp[i+1];
}
}
else if (cciTrendNow TrendDown = High + iATR(NULL, 0, ATRPeriod, i);
if (TrendDown > TrendDown[i+1]) {
TrendDown = TrendDown[i+1];
}
}
}
//----
//----
return(0);
}
//+------------------------------------------------------------------+
Мой скриптик
#property copyright "Copyrigh"
#property link ""
int timeprev = 0;
extern int CCIPeriod=30;
extern int ATRPeriod=5;
double up, down;
int init()
{
return(0);
}
int start()
{
if (timeprev == Time[0]) return (0);
timeprev = Time[0];
up = iCustom(Symbol(), 0, "Symphonie_Trendline_Indikator_v3.0", CCIPeriod, ATRPeriod, 0, 0);
down = iCustom(Symbol(), 0, "Symphonie_Trendline_Indikator_v3.0", CCIPeriod1, ATRPeriod, 1, 0);
Print("=======" + up);
Print("+++++++" + down);
return(0);
}
Из полученных данных полезной информации получить не удается.
Может еще как-то можно вытащить данные из Индикатора?
А тебе зачем данные то? Как вход?
Добавлено: 29-08-2013 09:58:54
Выведи данные на печать. Простой советник, двоичная переменная на каждый нужный буфер индикатора, присваиваем ей значение нужной свечи и выводим ее на печать. Данные выводятся в журнал...
Изменено 29 августа, 2013 пользователем talliy
Да, хочу делать вход по тренду.
Посмотрел Урок3, и хотел тренд из этого индикатора взять. Красиво он его рисует :)
А массив из индикатора возвращает малоинформативные для меня циферки, которые к тому же не меняются.
(гонял только в тестере).
Если у кого есть уже готовый скриптик для определения тренда, буду признателен.
Да, хочу делать вход по тренду.....
..... возвращает малоинформативные для меня циферки.....
Скрипт выведет на печать единожды, во время его включения, советник же будет выводить значения с каждым тиком. Тот же самый код только в эксперте. Обрати внимание на последнюю цифру в iCuston(...,...,...,...,0), это бар данные которого выводятся на печать. Поиграй с цифрами, на нулевом баре значения просто должны меняться...
Добавлено: 29-08-2013 10:14:21
Вложи индикатор, а то в коде который ты предоставил 11 ошибок при компиляции. Дай посмотреть на индикатор...
Изменено 29 августа, 2013 пользователем talliy
Цифры конечно меняются, но не понятно, что они обозначают.
Из тестера:
2013.03.25 20:00 tst_trendline_01 EURUSD,H4: DOWN +++++1.29386800
2013.03.25 20:00 tst_trendline_01 EURUSD,H4: UP =======2147483647.00000000
2013.03.25 16:00 tst_trendline_01 EURUSD,H4: DOWN +++++2147483647.00000000
2013.03.25 16:00 tst_trendline_01 EURUSD,H4: UP =======1.29676200
2013.03.25 12:00 tst_trendline_01 EURUSD,H4: DOWN +++++2147483647.00000000
2013.03.25 12:00 tst_trendline_01 EURUSD,H4: UP =======1.29752400
2013.03.25 08:00 tst_trendline_01 EURUSD,H4: DOWN +++++2147483647.00000000
2013.03.25 08:00 tst_trendline_01 EURUSD,H4: UP =======1.29963400
2013.03.25 04:00 tst_trendline_01 EURUSD,H4: DOWN +++++2147483647.00000000
2013.03.25 04:00 tst_trendline_01 EURUSD,H4: UP =======1.29899000
2013.03.25 00:00 tst_trendline_01 EURUSD,H4: DOWN +++++2147483647.00000000
2013.03.25 00:00 tst_trendline_01 EURUSD,H4: UP =======1.29292600
Symphonie_Trendline_Indikator_v3.0.ex4
Symphonie_Trendline_Indikator_v3.0.mq4
...
Из тестера...
2013.03.25 20:00 tst_trendline_01 EURUSD,H4: UP =======2147483647.00000000
Эти цифры означают что буфер принял не пустое значение но оно равно нулю... =EMPTY_VALUE...
Следовательно - if(твоя переменная != EMPTY_VALUE) то тренд в ту сторону, если равна то в другую...)))
Добавлено: 29-08-2013 10:54:55
вот сов с твоим кодом скрипта, он показывает что если на первом буфере значение то тренд вверх, если на нулевом то вниз...
Изменено 29 августа, 2013 пользователем talliy
talliy, во вложении мой скрипт :)
talliy писал:
"
Эти цифры означают что буфер принял не пустое значение но оно равно нулю... =EMPTY_VALUE...
Следовательно - if(твоя переменная != EMPTY_VALUE) то тренд в ту сторону, если равна то в другую...)))
"
Это многое прояснило, Спасибо!
Но, результат не бьется с графиком.
Видимо последний параметр не правильно использую.
Изменено 29 августа, 2013 пользователем Obn22
talliy, во вложении мой скрипт :)
да, только в советнике..
вскрытый твой индикатор дает много ошибок.. разбираться не хочу... одно тебе могу сказать, что если на первом буфере значение не равное EMPTY_VALUE то тренд вверх, вниз наоборот, на нулевом буфере... ,а дальше как пожелаешь так и делай...
talliy, большое спасибо за помощь!!!
Буду разбираться дальше.
А рабочие скрипты индикатора прикладывал в "Ответ #4"
Может кому пригодится.
Добрый день. Уважаемые коллеги, пожалуйста сделайте так, чтобы алерт в индикаторе появлялся только после стрелки на графике. Дело в том, что у него алерт расходится со стрелкой - а мне нужно только после реального ее появления .Возможно кто-то, захочет и советник написать. Тех задание есть. Индикатор хорошо работает по некоторым акциям и фьючерсам, на золоте тоже хорош достаточно. Спасибо большое.
Добрый день
Можно ли доработать индикатор что бы всё таки сигналил при появлений стрелки
Сигналы вроде не плохие но следить на нескольких парах очень неудобно
Заранее благодарен
MA_Crossover_Signal_+_zigzag_v1.2.mq4
MA_Crossover_Signal_+_zigzag_v1.2.ex4
Я не ставил данный индюк, так что добавил Аллерт наобум с указанием пары и текста который он сообщает, ели нужно будет подкорректировать аллерт, в коде увидите много восклицательных знаков и наверное единственный коммент=)
Вроде должно работать=)
Здравствуйте!
Беру внешний индикатор Slope Direction Line и пытаюсь сделать так чтобы он мне выдавал звуковой сигнал при смене цвета линии индикатора. Для этого в функцию Start() добавляю пару условий, на мой взгляд всё верно, но ни одного сигнала так и не увидел. Мои условия в коде находятся в самом конце и выделены комментарием "---МОИ УСЛОВИЯ ДЛЯ СИГНАЛА---", подскажите пожалуйста почему не срабатывает. Я новичок в MQL не судите строго если что. Заранее спасибо!
Я не сильно вникал в код индикатора, но почему вы решили сравнивать с цифрой 5000?
if ((Uptrend[0] 5000) && (Uptrend[1] >5000))
{
if (Signal == true) PlaySound("alert2.wav");
Comment("Покупка!");
Print("XAUUSD - Покупка!");
}
else if ((Dntrend[0] 5000) && (Dntrend[1] >5000))
{
if (Signal == true) PlaySound("alert2.wav");
Comment("Продажа!");
Print("XAUUSD - Продажа!");
}
В коде ясно сказано, что есть 2 варианта:
Если тренд вверх то в буфер Uptrend будет вносится значение ExtMapBuffer, а в буфер Dntrend значение EMPTY_VALUE
Для тренда вниз зеркально.
из чего следует что сравнивать нужно не с цифрой 5000, а сделать иначе - Сравнивать значение с EMPTY_VALUE. То есть аллерт на покупку должен звучать если значение Uptrend[0] !=EMPTY_VALUE && Dntrend[0]==EMPTY_VALUE ну можно поэкспериментировать с условиями для 0 и 1 значения массива. это уже творческий процесс каждого программиста \M/
Я не сильно вникал в код индикатора, но почему вы решили сравнивать с цифрой 5000?Спойлер
почему сравниваю два последних значения буферов с 5000? потому что если в буфере координата линии индикатора то она всегда ниже значения 5000, а если же EMPTY_VALUE, то выше 5000. Дело в том что я выводил в сообщение значение это самого EMPTY_VALUE, там обычное число почему-то, какое-то стопитсот большое. Я даже писал в одном из вариантов условие, которое вы предложили, но результата не было всё равно.
Добавлено: 18-09-2013 10:00:23
кстати сейчас попробовал он входит в условие что вы предложили, пишет "Покупка" или "Продажа". Единственное надо сейчас добавить условие чтобы это происходило один раз при смене направления тренда, а не всё время пока длится тренд. Но дальше я сам, спасибо за пинок в нужном направлении, раньше видимо что-то напутал.
Изменено 18 сентября, 2013 пользователем cdover
Для публикации сообщений создайте учётную запись или авторизуйтесь
Перейти к списку тем