используйте анализ индикаторов через iAO и iAC
а затем на основном графике (indicator_chart_window) рисуйте через два буфера со свойством DRAW_HISTOGRAM
посмотрите принцип как это реализовано в индикатор Heiken Ashi
Я проанализировал индикаторы iAO и iAC из них нужно вынуть переменные up, назвать их по особенному, потом сравнить, если они соответствуют друг другу, то закрашивать свечку в свой цвет, если нет то не трогать и тд. Но вот как рисовать со свойством DRAW_HISTOGRAM? и как те две переменные запихнуть в один индикатор?
Надеюсь на понимание и отсутствие опыта :)
используйте анализ индикаторов через iAO и iAC
а затем на основном графике (indicator_chart_window) рисуйте через два буфера со свойством DRAW_HISTOGRAM
посмотрите принцип как это реализовано в индикатор Heiken Ashi
Я проанализировал индикаторы iAO и iAC из них нужно вынуть переменные up, назвать их по особенному, потом сравнить, если они соответствуют друг другу, то закрашивать свечку в свой цвет, если нет то не трогать и тд. Но вот как рисовать со свойством DRAW_HISTOGRAM? и как те две переменные запихнуть в один индикатор?
Надеюсь на понимание и отсутствие опыта :)
Но вот как рисовать со свойством DRAW_HISTOGRAM?
Вы ссылку выше видели?
DRAW_HISTOGRAM - это стиль рисования индикаторной линии. Просто с этим стилем удобнее всего закрашивать бары, можно конечно и графическими объектами, но это не так универсально.
Вы ссылку выше видели?
DRAW_HISTOGRAM - это стиль рисования индикаторной линии. Просто с этим стилем удобнее всего закрашивать бары, можно конечно и графическими объектами, но это не так универсально.
Спасибо, прочитал. А как вытащить переменные с других индикаторов?
Спасибо, прочитал. А как вытащить переменные с других индикаторов?
Спасибо, прочитал. А как вытащить переменные с других индикаторов?
Переменные из других индикаторов нельзя «вытащить».
Из индикаторов можно получать только значения индикаторных массивов, с помощью
специальных функций i…(), или
iCustom(). Для того
чтобы решить вашу задачу, вам нужно узнать в какой цвет окрашены столбики
индикаторов AC и AO в данный
момент. К сожалению функции iAC и iAO извлекают данные из линий с
индексом 0, которые хранят текущее значение этих индикаторов. Информации о
цвете в них нет. В этом случае предпочтительней использовать функцию iCustom()
которая в отличии от iAC и iAO, дает возможность выбрать, данные какого
индикаторного массива следует считать, делается это в параметре MODE. В выше
названных индикаторах информация о цвете «хранится» в линиях с индексами 1 для
зеленых столбиков, и 2 для красных, соответственно если значение этих линий не
равно 0.0 то рисуется столбик заданного цвета. Именно это условие и положено в
основу ниже представленного кода:
//+------------------------------------------------------------------+ //| AC_AO_Synchron.mq4 | //| Copyright © 2010, Анатолий Сергеев | //| mql.sergeev@yandex.ru | //+------------------------------------------------------------------+ #property copyright "Copyright © 2010, Анатолий Сергеев" #property link "mql.sergeev@yandex.ru" #property indicator_chart_window #property indicator_buffers 4 #property indicator_color1 Green #property indicator_width1 2 #property indicator_color2 Green #property indicator_width2 2 #property indicator_color3 Red #property indicator_width3 2 #property indicator_color4 Red #property indicator_width4 2 double Green_home[]; double Green_end[]; double Red_home[]; double Red_end[]; //+------------------------------------------------------------------+ //| Custom indicator initialization function | //+------------------------------------------------------------------+ int init(){ SetIndexStyle(0,DRAW_HISTOGRAM); SetIndexBuffer(0, Green_home); SetIndexStyle(1,DRAW_HISTOGRAM); SetIndexBuffer(1, Green_end); SetIndexStyle(2,DRAW_HISTOGRAM); SetIndexBuffer(2, Red_home); SetIndexStyle(3,DRAW_HISTOGRAM); SetIndexBuffer(3, Red_end); } //+------------------------------------------------------------------+ //| Custom indicator iteration function | //+------------------------------------------------------------------+ int start(){ for(int shift = Bars-IndicatorCounted()-1; shift >= 0; shift--){ if(iCustom(NULL, 0, "Accelerator", 1, shift) != 0 && iCustom(NULL, 0, "Awesome", 1, shift) != 0){ //ЕСЛИ ОБА ЗЕЛЕНЫЕ Green_home[shift] = Open[shift]; Green_end[shift] = Close[shift]; } if(iCustom(NULL, 0, "Accelerator", 2, shift) != 0 && iCustom(NULL, 0, "Awesome", 2, shift) != 0){ //ЕСЛИ ОБА КРАСНЫЕ Red_home[shift] = Open[shift]; Red_end[shift] = Close[shift]; } } } //+------------------------------------------------------------------+
Спасибо, прочитал. А как вытащить переменные с других индикаторов?
ToLik_SRGV Большое спасибо за самое полнейшее разъяснение вопроса! Я сам думал думал весь день над этим индикатором. В общем вот что надумал. получилось почти как у тебя
//+------------------------------------------------------------------+
//| пробный.mq4 |
//| Vasily Titov |
//| alternativagod@bk.ru |
//+------------------------------------------------------------------+
#property copyright "Vasily Titov"
#property link "alternativagod@bk.ru"
//----
#property indicator_chart_window
#property indicator_buffers 4
#property indicator_color1 Blue
#property indicator_width1 2
#property indicator_color2 Blue
#property indicator_width2 2
#property indicator_color3 Pink
#property indicator_width3 2
#property indicator_color4 Pink
#property indicator_width4 2
double Blue_home[];
double Blue_end[];
double Pink_home[];
double Pink_end[];
//+------------------------------------------------------------------+
//| Custom indicator initialization function |
//+------------------------------------------------------------------+
int init(){
SetIndexStyle(0,DRAW_HISTOGRAM);
SetIndexBuffer(0, Blue_home);
SetIndexStyle(1,DRAW_HISTOGRAM);
SetIndexBuffer(1, Blue_end);
SetIndexStyle(2,DRAW_HISTOGRAM);
SetIndexBuffer(2, Pink_home);
SetIndexStyle(3,DRAW_HISTOGRAM);
SetIndexBuffer(3, Pink_end);
}
//+------------------------------------------------------------------+
//| Custom indicator iteration function |
//+------------------------------------------------------------------+
int start(){
int Counted_bars = IndicatorCounted();
int limit,i,History;
History=4000;
limit=Bars-Counted_bars-1; // Индекс первого непосчитанного
if (limit>History-1) // Если много баров то ..
limit=History-1;
for(i=limit; i>=0; i--)
{
double CurrIAO = iAO(NULL,0,i);
double PrevIAO = iAO(NULL,0,i+1);
double CurrIAC= iAC(NULL,0,i);
double PrevIAC= iAC(NULL,0,i+1);
if (CurrIAO>PrevIAO && CurrIAC>PrevIAC) {Blue_home[i] = Open[i]; Blue_end[i] = Close[i];}
if (CurrIAO<PrevIAO && CurrIAC<PrevIAC) {Pink_home[i] = Open[i]; Pink_end[i] = Close[i];}
}
}
//+------------------------------------------------------------------+
Только чуть проще. но твой вариант, я думаю, будет более правильным. Всем ребятам большое спасибо за отзывчивость!
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
Ребят, прошу, не закидывайте камнями за дилетанство, я только неделю назад прочитал учебник по MQL4, прочитал полностью но понял не все. Вот первая моя практическая работа. Хочу написать индикатор на основе Accelerator и Awesome. Сут такая: Когда совпадают цвета столбцов на гистограмме, то нужно чтоб свечка перекрашивалась в какой-н. яркий цвет на графике.
Не могу никак понять, как совместить эти два индикатора в одном. В общем, если не трудно, то прошу помочь.
С уважением, Василий.