alex30774

 
Уровень 19

  Торгую в компаниях:


Группа "Стол заказов MQL"

Рейтинг 2081



РЕКОМЕНДУЮ



Фильтр флета в индикатор

Здравствуйте, Андрей.

А можно в этот индикатор
zakaz.opentraders.ru/58635.html
добавить фильтр флета
в виде допонительного условия: количество баров с момента последнего сигнала(или количество баров между сигналами).То есть задали в настройках количество баров например 20, и сигналы между которыми меньше 20 баров не показываются.
P.S. а ещё лучше напишите отдельный индикатор, чтоб не портить индикатор, который заказал stoopor и мне нужен именно индикатор, а не советник(параметры намного легче и быстрее подобрать)

  • 0
  • Просмотров: 1713
  • 10 апреля 2021, 14:56
  • alex30774
Понравилcя материал? Не забудьте поставить плюс и поделиться в социальной сети!

Вступите в группу "Стол заказов MQL", чтобы следить за обновлениями
ПРИСОЕДИНИТЬСЯ К ГРУППЕ
присоединиться
  Предыдущая запись в группе
Доработать советник RollBack
09 апреля 2021
10 апреля 2021

Комментарии (12)

+
+1
на 19-е
avatar

  34  AM2 Сообщений: 15869 - Андрей

  • 10 апреля 2021, 19:14
+
0
Спасибо, буду ждать.
avatar

  19  alex30774 Автор Сообщений: 715

  • 10 апреля 2021, 21:14
+
0
сделал попеременный вариант, т.е. бай селл бай. устроит?




//+------------------------------------------------------------------+
//|                                                     RSICross.mq4 |
//|                                              Copyright 2021, AM2 |
//|                                      http://www.forexsystems.biz |
//+------------------------------------------------------------------+
#property copyright "Copyright 2021, AM2"
#property link      "http://www.forexsystems.biz"
#property version   "1.00"
#property strict
#property indicator_chart_window

#property indicator_buffers 2

input int RSI=7;
input int Level=20;
input int Count=111;

bool b=1,s=1;
double up[],dn[];
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int OnInit()
  {
//--- indicator buffers mapping
   SetIndexStyle(0,DRAW_ARROW,0,2,Lime);
   SetIndexArrow(0,233);
   SetIndexBuffer(0,up);

   SetIndexStyle(1,DRAW_ARROW,0,2,Red);
   SetIndexArrow(1,234);
   SetIndexBuffer(1,dn);
//---
   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[])
  {
//---
   for(int i=0; i<Count; i++)
     {
      double rsi1=iRSI(NULL,0,RSI,0,i);
      double rsi2=iRSI(NULL,0,RSI,0,i+1);

      if(rsi1>Level && rsi2<Level && b)
        {
         up[i]=low[i];
         b=0;s=1;
        }
      if(rsi1<100-Level && rsi2>100-Level && s)
        {
         dn[i]=high[i];
         s=0;b=1;
        }
     }
//--- return value of prev_calculated for next call
   return(rates_total);
  }
//+------------------------------------------------------------------+


avatar

  34  AM2 Сообщений: 15869 - Андрей

  • 11 апреля 2021, 09:56
+
0
Протестировал и на демо и в тестере, не устраивает меня такой вариант, потому что рисует и оставляет только последнию стрелку.
А мне надо чтоб не рисовал и выводил все стрелки которые соответствуют условиям.
avatar

  19  alex30774 Автор Сообщений: 715

  • 12 апреля 2021, 14:41
+
0
потому что рисует


вы хотите чтобы RSI не рисовал?
avatar

  34  AM2 Сообщений: 15869 - Андрей

  • 12 апреля 2021, 21:53
+
0
Нет, мне надо, чтоб после закрытия бара или даже двух стрелки не убирались. А то индикатор наставит несколько стрелок, а потом после смены тайфрейма (на новый и обратно)оставляет только последнию стрелку.
И мне кажется RSI по цене open не рисует.А по остальным ценам точно рисует.

Вобщем мне нужен индикатор отфильтровывающий флет.То есть появился сигнал (бай или сел не важно) и с момента предпоследнего сигнала(не важно кокого) прошло не меньше N-го количества баров то тогда сигнал учитывается и ставится стрелка.

P.S.Может Кимовская функция вам как-то даст подсказку или облегчит работу.
<code>//+----------------------------------------------------------------------------+
//|  Автор    : Ким Игорь В. aka KimIV,  http://www.kimiv.ru                   |
//+----------------------------------------------------------------------------+
//|  Версия   : 10.06.2008                                                     |
//|  Описание : Возвращает количество баров между двумя последними фракталами. |
//+----------------------------------------------------------------------------+
//|  Параметры:                                                                |
//|    sy - наименование инструмента        ("" или NULL - текущий символ)     |
//|    tf - таймфрейм                       (    0       - текущий ТФ)         |
//+----------------------------------------------------------------------------+
int BarsBetweenLastFractals(string sy="", int tf=0) {
  double fu=0, fd=0;
  int    i, nu=0, nd=0;

  if (sy=="" || sy=="0") sy=Symbol();
  for (i=2; i<100; i++) {
    fu=iFractals(sy, tf, MODE_UPPER, i);
    if (fu!=0) {
      if (nu==0) nu=i;
    }
    fd=iFractals(sy, tf, MODE_LOWER, i);
    if (fd!=0) {
      if (nd==0) nd=i;
    }
    if (nu>0 && nd>0) return(MathAbs(nu-nd));
  }
  Print("BarsBetweenLastFractals(): Фракталы не найдены");
  return(-1);
}
</code>



Редактирован: 13 апреля 2021, 13:46
avatar

  19  alex30774 Автор Сообщений: 715

  • 13 апреля 2021, 10:08
+
0
avatar

  34  AM2 Сообщений: 15869 - Андрей

  • 13 апреля 2021, 21:48
+
0
Спасибо за вашу работу, но индикатор ставит стрелки не по моей задумке.А на некоторых таймфреймах вообще не ставит стрелки.
Ну и чёрт с ним.Раз не получается как надо то и не нужно с ним возится(доделывать).
У меня ещё вопрос: а функцию BarsBetweenLastFractals нельзя к индикаторам прикручивать или она только для советников.
avatar

  19  alex30774 Автор Сообщений: 715

  • 14 апреля 2021, 13:49
+
0
А на некоторых таймфреймах вообще не ставит стрелки.


если не ставит на других тф, значит не выполнилось условие. скажем рси 14 и уровень 20 на Н1 ставит стрелки, а на Н4 уже ставить не будет, т.к. не выполнилось условие пересечения уровней индикатором.

функция фильтра работает так: перед каждой установкой стрелки одного типа, проверяет есть ли стрелка указанное количество баров назад. если есть не ставит. все так как вы просили
avatar

  34  AM2 Сообщений: 15869 - Андрей

  • 14 апреля 2021, 18:04
+
0
Тогда почему у меня на 1Н и 15М не работает


настройки по умолчанию

А если параметр Flet поставить больше 12, то на большенстве таймфреймов не показывает, хотя условия выполняются.
Редактирован: 14 апреля 2021, 19:37
avatar

  19  alex30774 Автор Сообщений: 715

  • 14 апреля 2021, 19:30
+
0
в индикаторе есть ошибка:


2021.04.14 20:43:15.903	RSICross EURUSD,H1: array out of range in 'RSICross.mq4' (58,12)


если вы сказали не надо доделывать, править не буду
avatar

  34  AM2 Сообщений: 15869 - Андрей

  • 14 апреля 2021, 19:44
+
0
если вы сказали не надо доделывать, править не буду

самый простой вариант
avatar

  19  alex30774 Автор Сообщений: 715

  • 14 апреля 2021, 20:14

Зарегистрируйтесь или авторизуйтесь, чтобы оставить комментарий
Начать торговлю с Альпари