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

Рейтинг 2146



РЕКОМЕНДУЮ



Стрелка для индикатора heikin ashi мт4 + всплывающее окошко и алерт

Heiki.PNG (63 Kb)Здравствуйте! Возможно прикрутить стрелку к индикатору когда меняется тренд и стрелка с алертом и всплывающим кошком с указанием пары и направлением появляется на закрытии первой свечи которая появится без тени внизу если вверх и без тени сверху если вниз как на рисунке? Cпасибо heiken_ashi.mq4 (4 Kb)
  • 0
  • Просмотров: 7034
  • 5 января 2016, 17:34
  • Shiva
Понравилcя материал? Не забудьте поставить плюс и поделиться в социальной сети!

Вступите в группу "Стол заказов MQL", чтобы следить за обновлениями
ПРИСОЕДИНИТЬСЯ К ГРУППЕ
присоединиться
  Предыдущая запись в группе
доработка в советнике Cheburashka v19.1f_x
Следующая запись в группе  
доработка советника
04 января 2016
07 января 2016

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

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

+
0
Индикатор хоть и ставит только гистограмки, но люди делали, тоже пытаюсь <img src='http://opentraders.ru/templates/skin/g6h/images/smilies/002.gif' alt=' :) '>&nbsp; 


Редактирован: 5 января 2016, 19:02
avatar

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

  • 5 января 2016, 19:00
+
0
Пока сделал стрелку на смену цвета:






//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
void PutArrow(string name,double price,int arrow_code,color clr,int width)
  {
   ObjectsDeleteAll();
//--- создадим стрелку
   ObjectCreate(0,name,OBJ_ARROW,0,Time[1],price);
//--- установим код стрелки
   ObjectSetInteger(0,name,OBJPROP_ARROWCODE,arrow_code);
//--- установим цвет стрелки
   ObjectSetInteger(0,name,OBJPROP_COLOR,clr);
//--- установим размер стрелки
   ObjectSetInteger(0,name,OBJPROP_WIDTH,width);
  }
avatar

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

  • 5 января 2016, 20:50
+
0
Оно?
www.opentraders.ru/downloads/998/





//+------------------------------------------------------------------+
//|                                                  Heiken Ashi.mq4 |
//|                   Copyright 2006-2014, MetaQuotes Software Corp. |
//|                                              http://www.mql4.com |
//+------------------------------------------------------------------+
#property copyright   "2006-2014, MetaQuotes Software Corp."
#property link        "http://www.mql4.com"
#property description "We recommend next chart settings (press F8 or select menu 'Charts'->'Properties...'):"
#property description " - on 'Color' Tab select 'Black' for 'Line Graph'"
#property description " - on 'Common' Tab disable 'Chart on Foreground' checkbox and select 'Line Chart' radiobutton"
#property strict

#property indicator_chart_window
#property indicator_buffers 4
#property indicator_color1 Red
#property indicator_color2 White
#property indicator_color3 Red
#property indicator_color4 White
#property indicator_width1 1
#property indicator_width2 1
#property indicator_width3 3
#property indicator_width4 3

//---
input color ExtColor1 = Red;    // Shadow of bear candlestick
input color ExtColor2 = White;  // Shadow of bull candlestick
input color ExtColor3 = Red;    // Bear candlestick body
input color ExtColor4 = White;  // Bull candlestick body
//--- buffers
double ExtLowHighBuffer[];
double ExtHighLowBuffer[];
double ExtOpenBuffer[];
double ExtCloseBuffer[];

int b=0,s=0;
datetime t=0;
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//|------------------------------------------------------------------|
void OnInit(void)
  {
   IndicatorShortName("Heiken Ashi");
   IndicatorDigits(Digits);
//--- indicator lines
   SetIndexStyle(0,DRAW_HISTOGRAM,0,1,ExtColor1);
   SetIndexBuffer(0,ExtLowHighBuffer);
   SetIndexStyle(1,DRAW_HISTOGRAM,0,1,ExtColor2);
   SetIndexBuffer(1,ExtHighLowBuffer);
   SetIndexStyle(2,DRAW_HISTOGRAM,0,3,ExtColor3);
   SetIndexBuffer(2,ExtOpenBuffer);
   SetIndexStyle(3,DRAW_HISTOGRAM,0,3,ExtColor4);
   SetIndexBuffer(3,ExtCloseBuffer);
//---
   SetIndexLabel(0,"Low/High");
   SetIndexLabel(1,"High/Low");
   SetIndexLabel(2,"Open");
   SetIndexLabel(3,"Close");
   SetIndexDrawBegin(0,10);
   SetIndexDrawBegin(1,10);
   SetIndexDrawBegin(2,10);
   SetIndexDrawBegin(3,10);
//--- indicator buffers mapping
   SetIndexBuffer(0,ExtLowHighBuffer);
   SetIndexBuffer(1,ExtHighLowBuffer);
   SetIndexBuffer(2,ExtOpenBuffer);
   SetIndexBuffer(3,ExtCloseBuffer);
//--- initialization done
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
void PutArrow(string name,double price,int arrow_code,color clr,int width)
  {
//--- создадим стрелку
   ObjectCreate(0,name,OBJ_ARROW,0,Time[1],price);
//--- установим код стрелки
   ObjectSetInteger(0,name,OBJPROP_ARROWCODE,arrow_code);
//--- установим цвет стрелки
   ObjectSetInteger(0,name,OBJPROP_COLOR,clr);
//--- установим размер стрелки
   ObjectSetInteger(0,name,OBJPROP_WIDTH,width);
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
int UpDn()
  {
   int ud=0;
   for(int i=Bars-1;i>=0;i--)
     {
      if(ExtOpenBuffer[i-1]>ExtCloseBuffer[i-1] && ExtOpenBuffer[i-2]<ExtCloseBuffer[i-2])
        {
         ud=1;//sell
         break;
        }
      if(ExtOpenBuffer[i-1]<ExtCloseBuffer[i-1] && ExtOpenBuffer[i-2]>ExtCloseBuffer[i-2])
        {
         ud=1;//buy
         break;
        }
     }
   return(ud);
  }
//+------------------------------------------------------------------+
//| Heiken Ashi                                                      |
//+------------------------------------------------------------------+
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,pos;
   double haOpen,haHigh,haLow,haClose;
//---
   if(rates_total<=10)
      return(0);
//--- counting from 0 to rates_total
   ArraySetAsSeries(ExtLowHighBuffer,false);
   ArraySetAsSeries(ExtHighLowBuffer,false);
   ArraySetAsSeries(ExtOpenBuffer,false);
   ArraySetAsSeries(ExtCloseBuffer,false);
   ArraySetAsSeries(open,false);
   ArraySetAsSeries(high,false);
   ArraySetAsSeries(low,false);
   ArraySetAsSeries(close,false);
//--- preliminary calculation
   if(prev_calculated>1)
      pos=prev_calculated-1;
   else
     {
      //--- set first candle
      if(open[0]<close[0])
        {
         ExtLowHighBuffer[0]=low[0];
         ExtHighLowBuffer[0]=high[0];
        }
      else
        {
         ExtLowHighBuffer[0]=high[0];
         ExtHighLowBuffer[0]=low[0];
        }
      ExtOpenBuffer[0]=open[0];
      ExtCloseBuffer[0]=close[0];
      //---
      pos=1;
     }
//--- main loop of calculations
   for(i=pos; i<rates_total; i++)
     {
      haOpen=(ExtOpenBuffer[i-1]+ExtCloseBuffer[i-1])/2;
      haClose=(open[i]+high[i]+low[i]+close[i])/4;
      haHigh=MathMax(high[i],MathMax(haOpen,haClose));
      haLow=MathMin(low[i],MathMin(haOpen,haClose));
      if(haOpen<haClose)
        {
         ExtLowHighBuffer[i]=haLow;
         ExtHighLowBuffer[i]=haHigh;
        }
      else
        {
         ExtLowHighBuffer[i]=haHigh;
         ExtHighLowBuffer[i]=haLow;
        }
      ExtOpenBuffer[i]=haOpen;
      ExtCloseBuffer[i]=haClose;
     }

   if(ExtOpenBuffer[Bars-2]<ExtCloseBuffer[Bars-2] && ExtOpenBuffer[Bars-3]>ExtCloseBuffer[Bars-3]) {b=1;s=0;} //пересечение buy
   if(ExtOpenBuffer[Bars-2]>ExtCloseBuffer[Bars-2] && ExtOpenBuffer[Bars-3]<ExtCloseBuffer[Bars-3]) {b=0;s=1;} //пересечение sell
   
   if(t!=Time[0])
     {
      // BUY
      if(b==1 && ExtLowHighBuffer[Bars-2]==ExtOpenBuffer[Bars-2])
        {
         PutArrow("UP"+(string)Time[0],ExtOpenBuffer[Bars-2],233,Aqua,2);
         Alert(Symbol()+" BUY");
         b=0;
        }
      //SELL
      if(s==1 && ExtLowHighBuffer[Bars-2]==ExtOpenBuffer[Bars-2])
        {
         PutArrow("DN"+(string)Time[0],ExtOpenBuffer[Bars-2],234,Magenta,2);
         Alert(Symbol()+" SELL");
         s=0;
        }
      t=Time[0];
     }

   Comment("\n Open 1: ",ExtOpenBuffer[Bars-1],
           "\n Close 1: ",ExtCloseBuffer[Bars-1],
           "\n Open 2: ",ExtOpenBuffer[Bars-2],
           "\n Close 2: ",ExtCloseBuffer[Bars-2],
           "\n ================",
           "\n Low 1: ",ExtLowHighBuffer[Bars-1],
           "\n High 1: ",ExtHighLowBuffer[Bars-1],
           "\n Low 2: ",ExtLowHighBuffer[Bars-2],
           "\n High 2: ",ExtHighLowBuffer[Bars-2],
           "\n ================",
           "\n UpDn: ",UpDn(),
           "\n BUY: ",b,
           "\n SELL: ",s);
//--- done
   return(rates_total);
  }
//+------------------------------------------------------------------+




Редактирован: 5 января 2016, 23:27
avatar

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

  • 5 января 2016, 23:08
+
0
Да, большое спасибооооо!!!
avatar

  10  Shiva Автор Сообщений: 148

  • 5 января 2016, 23:10
+
0
Я еще раз скажу о тех.задании :) 
1. Поменялся цвет на хейки аши.
2. Если после смены цвета 1-ая свеча нового цвета идущая к примеру вверх с тенью внизу хоть с самой малюсенькой то ее прорускаем, вторая свеча без какой-либо тени закрывается, то на третьей свече надо чтобы появилась стрелка вверх и окошко с указание пары, направление и алертом. Так и в обратную сторону… Спасибо.
avatar

  10  Shiva Автор Сообщений: 148

  • 5 января 2016, 23:09

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