Доработка ботов (советников, индикаторов) vol. 2

AlexeNP

Гуру форума
Алексей, если вас не затруднит, помогите пожалуйста с индикатором. Не могу, стрелку правильно выставить.

Посмотреть вложение 545782

На картинке: Линия МА с периодом 20. Нормализована до 3 знаков. (ступенчатая bufer_MA[] );

На каждой ступеньке вверх, выставляется синяя стрелка (код: 159 arrow_up[]);

Количество непрерывных ступеней, записывается в счётчик. ( count_up[] );

Использовал 4 буфера: 1.Линия МА. 2. Синяя стрелка. 3. Счётчик ступеней. 4. Для красной стрелки.


Нужно выставить красную стрелку (круг код: 161) всегда на синюю стрелку,

при таких условиях:

При появлении первой синей стрелки - (это первая ступень вверх) выставить Красную стрелку на синюю стрелку.
При появлении второй синей стрелки - (это вторая ступень вверх) выставить Красную стрелку на синюю новую-верхнюю стрелку. При этом удалить предыдущую Красную стрелку, с нижн(ей-их) ступеней.
При появлении третей синей стрелки - (это третья ступень вверх) выставить Красную стрелку на синюю новую-верхнюю стрелку. При этом удалить предыдущую Красную стрелку, с нижн(ей-их) ступеней.

и т.д.

То есть, если синих стрелок больше одной, и счётчик ступеней больше нуля, то переставить Красную стрелу, на новую (верхнюю) синюю стрелку.


Делал так:

PHP:
Expand Collapse Copy
#property strict
#property indicator_chart_window

#property indicator_buffers 4

#property indicator_color1 clrSteelBlue
#property indicator_color2 clrDodgerBlue
#property indicator_color3 clrNONE
#property indicator_color4 clrRed




input int period_MA = 20;
input int Normalize = 3;


double bufer_MA[];
double arrow_up[];
double count_up[];


double arr_verh[];

 
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int OnInit()
{
    //--- indicator buffers mapping
    SetIndexBuffer(0, bufer_MA);  SetIndexStyle(0, DRAW_LINE);                                         // Синяя линия
    SetIndexBuffer(1, arrow_up);  SetIndexStyle(1, DRAW_ARROW, 0, 2); SetIndexArrow(1, 159);           // Синяя стрелка
    SetIndexBuffer(2, count_up);  SetIndexStyle(2, DRAW_NONE);                                         // Счётчик ступеней
 
    SetIndexBuffer(3, arr_verh);  SetIndexStyle(3, DRAW_ARROW, 0, 1); SetIndexArrow(3, 161);           // Для красной стрелки

 
    return (INIT_SUCCEEDED);
}

//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
int OnCalculate(const int rates_total,
                const int prev_calculated,
                const datetime &time[],
                const double &open[],
                const double &high[],
                const double &low[],
                const double &close[],
                const long &tick_volume[],
                const long &volume[],
                const int &spread[])
{

    int limit = rates_total - prev_calculated;
    if (limit > 1)limit -= 1;


 

    // Ступеньки из линии МА
    for (int i = 0; i < limit; i++)  bufer_MA[i] = NormalizeDouble(iMA(Symbol(), 0, period_MA, 0, 0, 0, i), Normalize);



    // Счётчик количества непрерывных ступеней
    int continuous_steps_up = 0;


    // Определить сколько раз, у первой линии, было непрерывно ступеней вверх.
    for (int i = limit - 1; i >= 0; i--){
 
 
    //+----------------------------------------------------------------------------------------------------+
        if (i < rates_total - 1 && bufer_MA[i] > bufer_MA[i + 1] && bufer_MA[i] != bufer_MA[i + 1]){
            continuous_steps_up++;
            arrow_up[i] = bufer_MA[i];
     

         }
    //+----------------------------------------------------------------------------------------------------+
    //|   счётчик ступеней
    //+----------------------------------------------------------------------------------------------------+
 
      if(   bufer_MA[i] < bufer_MA[i + 1]){   continuous_steps_up = 0;  }

        count_up[i] = continuous_steps_up;
    //+----------------------------------------------------------------------------------------------------+


      }




    return (rates_total);
}

/////////////////////////////////////////////////

Это я так делал..

Не могли бы вы, мне помочь, прикрутить красную стрелку, так как на картинках?


Картинки:
насколько я понял, синяя стрелка - основная и красную мы ставим только после ее появления. Решение простое - на баре i появилась синяя стрелка, на этом же баре ставим красную, а на баре i+1 в буфере который отвечает за красных ставим EMPTY_VALUE.

Чего уж непонятного в слове Клоузд, я не понимаю(
 

AlexeNP

Гуру форума
ох, грехи мои тяжкие...
Скажите, вот за каким ухом вам нужно играть с округлением? Не говорите, что вы ничего не слышали о медианах.
Описываю алгоритм действий по шагам.
1. пишите Макару в личку что-то типа - у тебя есть аккаунт на MQL?
2. Ок, переходите во фриланс и даете ему такое ТЗ. Пусть мы задаем какой-то максимальный период = N. Нам нужно найти все медианы цены по нечетным периодам не превосходящим N. То есть 1, 3, 5, 7 и т.д. Потом среди этих медиан найти их медиану. Так, стоп - уточнение N должно быть нечетным, т.е. иметь вид 2*n+1. Но и количество полученных медиан должно быть нечетным. Значит, период должен быть задан так: 4*N+3. Где N - входной параметр. Цена вопроса - 30 баксов, через пару часов индикатор готов. Вы его смотрите, просите вставить какие-нибудь точечки, галочки и прочую мишуру.
3. Пока Макар писал вам индикатор, вы читали какие-нибудь умные статьи и поняли что разности более информативны. Поэтому вы тут же делаете заказ Макару на написание осциллятора вида цена минус индикатор. Цена вопроса прежняя.
4. Пока Макар делал вам индикатор, вы время зря не теряли и читали какие-то умные статьи, где написано как из осциллятора сделать советник. И вы пишите новое ТЗ. Цена вопроса та же самая ерунда. В результате вы получите что-то такое.
11.png
Особо не впечатляет, но где-то в умных статьях сказано, что можно использовать несколько индикаторов сразу, главное чтобы они были непохожи. Делаете последний заказ типа - штук 5 чтобы периодов можно было прописать... Результат вас удивит.
Итог, за 120 баксов вы имеете 2 индикатора, 1 простой советник, и 1 сложный советник, который вы никому не отдадите
 

MakarFX

Элитный участник
Но вы почему то, решили Клоузд-ом добить!

Чего уж непонятного в слове Клоузд, я не понимаю(

А что же в нём понятного та??
Похоже Вы не правильно интерпретируете слова Алексея
Клоузд был не для Вас, а для всех форумчан
Попробую запустить какой-нибудь немного платный проект. Получится или нет - хз, но попытка не пытка. Но и тут еще могу появляться иногда.
 

egor008

Активный участник
Благодарю.
При всём уважении, но способ урезания истории, не спасает ситуацию.
 

egor008

Активный участник
ох, грехи мои тяжкие...
Скажите, вот за каким ухом вам нужно играть с округлением? Не говорите, что вы ничего не слышали о медианах.
Описываю алгоритм действий по шагам.
1. пишите Макару в личку что-то типа - у тебя есть аккаунт на MQL?
2. Ок, переходите во фриланс и даете ему такое ТЗ. Пусть мы задаем какой-то максимальный период = N. Нам нужно найти все медианы цены по нечетным периодам не превосходящим N. То есть 1, 3, 5, 7 и т.д. Потом среди этих медиан найти их медиану. Так, стоп - уточнение N должно быть нечетным, т.е. иметь вид 2*n+1. Но и количество полученных медиан должно быть нечетным. Значит, период должен быть задан так: 4*N+3. Где N - входной параметр. Цена вопроса - 30 баксов, через пару часов индикатор готов. Вы его смотрите, просите вставить какие-нибудь точечки, галочки и прочую мишуру.
3. Пока Макар писал вам индикатор, вы читали какие-нибудь умные статьи и поняли что разности более информативны. Поэтому вы тут же делаете заказ Макару на написание осциллятора вида цена минус индикатор. Цена вопроса прежняя.
4. Пока Макар делал вам индикатор, вы время зря не теряли и читали какие-то умные статьи, где написано как из осциллятора сделать советник. И вы пишите новое ТЗ. Цена вопроса та же самая ерунда. В результате вы получите что-то такое.
Посмотреть вложение 545851
Особо не впечатляет, но где-то в умных статьях сказано, что можно использовать несколько индикаторов сразу, главное чтобы они были непохожи. Делаете последний заказ типа - штук 5 чтобы периодов можно было прописать... Результат вас удивит.
Итог, за 120 баксов вы имеете 2 индикатора, 1 простой советник, и 1 сложный советник, который вы никому не отдадите

Алексей! Если для вас это Решение простое - то может быть, вы подключитесь и поможете.
Без вас не справляемся.

Там нет ни каких игр с округлением. Эта МА тут вообще не суть, просто линия для привязки.
Проблема в выставлении стрелок!
У вас по видимому что то получилось, если вы тему разогнали аж до советника.
Поделитесь, способом, как эти стрелки поверх других нужно правильно прикручивать?
 

druzhba78

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

Вложения

MakarFX

Элитный участник
Благодарю.
При всём уважении, но способ урезания истории, не спасает ситуацию.
Код:
Expand Collapse Copy
XAUUSD,M5: 1195778 tick events (1375 bars, 1196779 bar states) processed in 0:02:21.234 (total time 0:02:21.375)
Не знаю что у Вас может тормозить...
 

MakarFX

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

Вложения

Müllmann

Активный участник
Добрый день. Просьба- колоризировать , если это не проблема, данный OsMA, по подобию терминального AO, где столбец с бОльшим показателем окрашен в зеленый, с меньшим- в красный. Заранее спасибо!
 

Вложения

  • OsMA.mq4
    OsMA.mq4
    8,8 КБ · Просмотры: 5

MakarFX

Элитный участник
Добрый день. Просьба- колоризировать , если это не проблема, данный OsMA, по подобию терминального AO, где столбец с бОльшим показателем окрашен в зеленый, с меньшим- в красный. Заранее спасибо!
 

Вложения

  • OsMA2.mq4
    OsMA2.mq4
    10,5 КБ · Просмотры: 39

lain7123

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

Посмотрели (294) Посмотреть

Отслеживают (1805) Посмотреть

Верх