ilvera
ilvera

 
Уровень 19

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


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

Рейтинг 2146



РЕКОМЕНДУЮ



Индикатор сигнализирующий о начале расхождения цены
[*]

Нужен индикатор дивергенции для МТ4, которых конечно множество, но ни одного не нашла сигнализирующем о НАЧАЛЕ расхождения цены. Все индикаторы уже показывают совершившуюся дивергенцию.Хочется чтобы на графике и на индикаторе сразу появлялся визуальный сигнал (кружочек, ромбик) над баром с которого только что началось расхождение с индикатором, сообщение «начало расхождения» и звуковой сигнал, ну а потом естественно линию к бару свершившейся дивергенции и сообщение «конец расхождения».В качестве индикатора используйте если можно этот.

+OsMA Color 1S.rar (1 Kb)
  • 0
  • Просмотров: 5532
  • 16 ноября 2015, 13:42
  • ilvera
Понравилcя материал? Не забудьте поставить плюс и поделиться в социальной сети!

Вступите в группу "Стол заказов MQL", чтобы следить за обновлениями
ПРИСОЕДИНИТЬСЯ К ГРУППЕ
присоединиться
  Предыдущая запись в группе
Задержка показаний индикатора
Следующая запись в группе  
Советник по индикатору Quantum
16 ноября 2015
16 ноября 2015

Брокер для ваших роботов, 15 лет на рынке

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

+
0
Нарисуйте на скрине с индикатором, все как можно подробнее?
avatar

  35  AM2 Сообщений: 16276 - Андрей

  • 16 ноября 2015, 18:19
+
0
avatar

  19  ilvera Автор Сообщений: 50 - ilvera

  • 17 ноября 2015, 11:48
+
0
Сделайте только чтобы был визуальный и звуковой сигнал-сообщение «Начало расхождения» как только оно начинается, ну и «Конец расхождения».Если это возможно окрашивать по ходу расхождения с индикатором эти бары на графике другим цветом. Дивергенцию не надо. Я ее и на других индикаторах словлю.
avatar

  19  ilvera Автор Сообщений: 50 - ilvera

  • 17 ноября 2015, 11:59
+
+1
Какой паттерн на вашем графике соответствует началу и концу расхождения? Как я понял, на продажу столбики гистограммы убывали и 2 столбика в плюс. Опишите подробнее?
avatar

  35  AM2 Сообщений: 16276 - Андрей

  • 17 ноября 2015, 18:08
+
0
У меня ваш индикатор ничего не показывает. Есть рабочий?
avatar

  35  AM2 Сообщений: 16276 - Андрей

  • 17 ноября 2015, 18:19
+
0
Никакого паттерна нет. По крайней мере я точно незнаю как он называется. Расхождение может начаться и на 3 и т. д. столбике. Можете взять пока для работы обыкновенный индикатор из МТ4. Он такой же только не цветной. Завтра скину еще раз цветной. Вот недавно на ТМ1.
Редактирован: 17 ноября 2015, 19:17
avatar

  19  ilvera Автор Сообщений: 50 - ilvera

  • 17 ноября 2015, 18:56
+
+4
Никакого паттерна нет.

Для того чтобы объяснить машине нужны четкие условия. На подобие того что я описал выше:
на продажу столбики гистограммы убывали и 2 столбика в плюс.
avatar

  35  AM2 Сообщений: 16276 - Андрей

  • 17 ноября 2015, 20:53
+
+2
Заказчикам надо понимать, что программист не является консультантом по созданию торговых систем. Программист выполняет заказ строго по техническому заданию. Техническое задание должно включать в себя четкую формализацию всех правил и условий.
avatar

  11  pilot Сообщений: 410

  • 17 ноября 2015, 21:37
+
0
Ок, пусть будут 2 столбика в плюс.
avatar

  19  ilvera Автор Сообщений: 50 - ilvera

  • 18 ноября 2015, 10:37
+
0
avatar

  35  AM2 Сообщений: 16276 - Андрей

  • 18 ноября 2015, 20:40
+
0
Норм звенит! И даже поймал то что я хочу на дневном графике! Спасибо! Правда на других ТМ не совсем так получается.
avatar

  19  ilvera Автор Сообщений: 50 - ilvera

  • 19 ноября 2015, 11:08
+
0
На других ТМ он ловит направление цены, а не расхождение с ценой. А мне нужен только фрагмент расхождения.
avatar

  19  ilvera Автор Сообщений: 50 - ilvera

  • 19 ноября 2015, 11:33
+
0
На других ТМ он ловит направление цены, а не расхождение с ценой. А мне нужен только фрагмент расхождения.


Это мне ни о чем не говорит. Нужно четкое ТЗ.
avatar

  35  AM2 Сообщений: 16276 - Андрей

  • 19 ноября 2015, 11:35
+
0
ну незнаю как еще точнее. Когда 2 столбик гистограммы убывает в отрицательном поле и цена соответственно индикатору должна расти но она наоборот падает то тогда и сигнал: расхождение началось. Если 2 столбик в гистограмме в отрицательном поле т.е.ниже 0 увеличивается а цена соответственно должна падать но она растет вопреки индикатору то тогда тоже сигнал: расхождение началось. В поле индикатора выше 0 т. е. в положительной гистограмме все сигналы наоборот. Я уже не прошу про сигнал: расхождение окончилось. Хотя бы про то что оно началось. И сигнал разворота мне не нужен.
avatar

  19  ilvera Автор Сообщений: 50 - ilvera

  • 19 ноября 2015, 20:37
+
0
Когда 2 столбик гистограммы убывает в отрицательном поле и цена соответственно индикатору должна расти но она наоборот падает то тогда и сигнал: расхождение началось. Если 2 столбик в гистограмме в отрицательном поле т.е.ниже 0 увеличивается а цена соответственно должна падать но она растет вопреки индикатору то тогда тоже сигнал: расхождение началось. В поле индикатора выше 0 т. е. в положительной гистограмме все сигналы наоборот. Я уже не прошу про сигнал: расхождение окончилось.


На скрине покажите все что вы только что описали, как можно подробнее?
avatar

  35  AM2 Сообщений: 16276 - Андрей

  • 19 ноября 2015, 22:25
+
0
Цену можно смотреть по машке и сравнивать со столбиками индикатора.

avatar

  35  AM2 Сообщений: 16276 - Андрей

  • 19 ноября 2015, 23:22
+
0
ну незнаю как еще точнее.

Не поможет картинка?

avatar

  20  Anatoly74 Сообщений: 3710 - Анатолий

  • 19 ноября 2015, 21:14
+
0
Сейчас такой вариант:
1. цена на индикаторе развернулась и убывает а МА продолжает расти.
2. цена на индикаторе развернулась и возрастает а МА продолжает снижаться.




//+------------------------------------------------------------------+
//|                                                      DivOsMA.mq4 |
//+------------------------------------------------------------------+
#property copyright   "2005-2014, MetaQuotes Software Corp."
#property link        "http://www.mql4.com"
#property description "Moving Averages of Oscillator"
#property strict

#include <MovingAverages.mqh>

//--- indicator settings
#property  indicator_separate_window
#property  indicator_buffers 1
#property  indicator_color1  Silver
#property  indicator_width1  2
//--- indicator parameters
input int InpFastEMA=12;   // Fast EMA Period
input int InpSlowEMA=26;   // Slow EMA Period
input int InpSignalSMA=9;  // Signal SMA Period
input int MAPeriod=12;     // Simple MA Period
//--- indicator buffers
double ExtOsmaBuffer[];
double ExtMacdBuffer[];
double ExtSignalBuffer[];
//--- right input parameters flag
bool   ExtParameters=false;
datetime tim=0;
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int OnInit(void)
  {
//--- 2 additional buffers are used for counting.
   IndicatorBuffers(3);
//--- drawing settings
   SetIndexStyle(0,DRAW_HISTOGRAM);
   SetIndexDrawBegin(0,InpSignalSMA);
   IndicatorDigits(Digits+2);
//--- 3 indicator buffers mapping
   SetIndexBuffer(0,ExtOsmaBuffer);
   SetIndexBuffer(1,ExtMacdBuffer);
   SetIndexBuffer(2,ExtSignalBuffer);
//--- name for DataWindow and indicator subwindow label
   IndicatorShortName("OsMA("+IntegerToString(InpFastEMA)+","+IntegerToString(InpSlowEMA)+","+IntegerToString(InpSignalSMA)+")");
//--- check for input parameters
   if(InpFastEMA<=1 || InpSlowEMA<=1 || InpSignalSMA<=1 || InpFastEMA>=InpSlowEMA)
     {
      Print("Wrong input parameters");
      ExtParameters=false;
      return(INIT_FAILED);
     }
   else
      ExtParameters=true;
//--- initialization done
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
void PutPointer(double price,datetime time,int code,color clr)
  {
   const string name="Point"+TimeToStr(TimeCurrent());
//--- создаем стрелку "SELL"
   ObjectCreate(name,OBJ_ARROW,0,time,price,0,0);
   ObjectSet(name,OBJPROP_BACK,true);
   ObjectSet(name,OBJPROP_COLOR,clr);
   ObjectSet(name,OBJPROP_ARROWCODE,code);
   ObjectSet(name,OBJPROP_WIDTH,1);
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
void PutVLine(datetime t)
  {
   const string name="VLine"+TimeToStr(TimeCurrent());
   ObjectCreate(0,name,OBJ_VLINE,0,t,0);
//--- установим цвет линии
   ObjectSetInteger(0,name,OBJPROP_COLOR,Blue);
//--- установим стиль отображения линии
   ObjectSetInteger(0,name,OBJPROP_STYLE,STYLE_SOLID);
//--- установим толщину линии
   ObjectSetInteger(0,name,OBJPROP_WIDTH,1);
  }
//+------------------------------------------------------------------+
//| Moving Average of Oscillator                                     |
//+------------------------------------------------------------------+
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 i,limit;
   double ma1=iMA(NULL,0,MAPeriod,0,0,0,1);
   double ma2=iMA(NULL,0,MAPeriod,0,0,0,2);
   double ma3=iMA(NULL,0,MAPeriod,0,0,0,3);
//---
   if(rates_total<=InpSignalSMA || !ExtParameters)
      return(0);
//--- last counted bar will be recounted
   limit=rates_total-prev_calculated;
   if(prev_calculated>0)
      limit++;
//--- macd counted in the 1-st buffer
   for(i=0; i<limit; i++)
      ExtMacdBuffer[i]=iMA(NULL,0,InpFastEMA,0,MODE_EMA,PRICE_CLOSE,i)-
                       iMA(NULL,0,InpSlowEMA,0,MODE_EMA,PRICE_CLOSE,i);
//--- signal line counted in the 2-nd buffer
   SimpleMAOnBuffer(rates_total,prev_calculated,0,InpSignalSMA,ExtMacdBuffer,ExtSignalBuffer);
//--- main loop
   for(i=0; i<limit; i++)
      ExtOsmaBuffer[i]=ExtMacdBuffer[i]-ExtSignalBuffer[i];

   if(tim!=Time[0])
     {
      if(ExtOsmaBuffer[1]>ExtOsmaBuffer[2] && ExtOsmaBuffer[2]>ExtOsmaBuffer[3] && ExtOsmaBuffer[3]<ExtOsmaBuffer[4] && ExtOsmaBuffer[1]<0 && 
         ma1<ma2 && ma2<ma3)
        {
         Alert("Разворот снизу вверх!!!");
         PutVLine(Time[0]);
         PutPointer(Low[0],Time[0],233,Red);
        }
      if(ExtOsmaBuffer[1]<ExtOsmaBuffer[2] && ExtOsmaBuffer[2]<ExtOsmaBuffer[3] && ExtOsmaBuffer[3]>ExtOsmaBuffer[4] && ExtOsmaBuffer[1]>0 && 
         ma1>ma2 && ma2>ma3)
        {
         Alert("Разворот сверху вниз!!!");
         PutVLine(Time[0]);
         PutPointer(High[0],Time[0],234,Aqua);
        }
      tim=Time[0];
     }
//--- done
   return(0);
  }
//+------------------------------------------------------------------+

avatar

  35  AM2 Сообщений: 16276 - Андрей

  • 20 ноября 2015, 04:18
+
0
Ладно, Андрей бросьте мучаться с этим индикатором.Видимо его в принципе невозможно сделать, а то кто-нибудь уже бы придумал его. Где то я читала, что осцилляторы не могут такое движение поймать.Жаль конечно, ведь такой индикатор был неплохим помощником в торговле.Вам огромное СПАСИБО, что пытались мне помочь и что всем помогаете безвозмездно. Отдельное спасибо Анатолию.
avatar

  19  ilvera Автор Сообщений: 50 - ilvera

  • 20 ноября 2015, 11:27

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