vikas
Алексей

 
Уровень 9

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


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

Рейтинг 2146



РЕКОМЕНДУЮ



Сделать индикатор

Здравствуйте АМ2. Просьба написать индикатор. Работа ведётся на Н1.
При движении цены вверх, с появлением каждой последующей сформированной свечи,
индикатор соединяет линией Low свечей если эти Low от свечки к свечки возрастают.
Как только открывается очередная свеча и цена опускается ниже уровня Low предыдущей свечи, в момент пересечения этого уровня индикатор должен либо нарисовать кружок (например красный) над этой ещё не сформированной свечой, либо этот уровень (Low предыдущей свечи) в момент равенства Low предыдущей свечи и цены, отобразить линией. Линия должна остаться горизонтальной, если цена продолжит движение вниз,
и закончиться в теле новой свечи.
Этот нужно для того, чтобы в дальнейшем при использовании индикатора в советнике,
одним из условий выставления стопового ордера можно было бы указать например либо
if(redRing!=0) (для кружка), либо if(Ask > redLine && Bid < redLine && Low[1]>redLine && Open[0]< Close[1]) (для линии).

При движении цены вниз логика такая же. — только соединяются High
Пояснительную картинку прилагаю: f6.s.qip.ru/OgbqimTt.png
  • +1
  • Просмотров: 5434
  • 1 июня 2015, 22:26
  • vikas
Понравилcя материал? Не забудьте поставить плюс и поделиться в социальной сети!

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

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

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

+
0
Может лучше сразу написать советник по вашему условию?

avatar

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

  • 2 июня 2015, 09:45
+
0
Вот простой пробойник по условию:
1. Лоу растут, но свеча закрылась ниже последнего лоу — селл стоп.
2. Хаи убывают, но свеча закрылась выше последнего хая — бай стоп.

Точки при совпадении условия, если нужно расставлю.


//+------------------------------------------------------------------+
//|                                                    Proboynik.mq4 |
//|                                            Copyright © 2014, AM2 |
//|                                      http://www.forexsystems.biz |
//+------------------------------------------------------------------+

#property copyright "Copyright © 2014, AM2"
#property link      "http://www.forexsystems.biz"
#property description "Forex expert advisor"

//--- Inputs
extern int StopLoss      = 2000; // стоплосс ордера
extern int TakeProfit    = 2000; // тейкпрофит ордера
extern int Slip          = 2;    // проскальзывание
extern int Expiration    = 14;   // время истечения ордера
extern int Delta         = 100;  // расстояние от вершин
extern double Lots       = 0.1;  // объем позиции
extern int MAGIC         = 333;  // магик
//+------------------------------------------------------------------+
//| Check for open order conditions                                  |
//+------------------------------------------------------------------+
void PutOrder()
  {
   int    res,b,s;
   datetime expiration=TimeCurrent()+3600*Expiration;
   double price,tp,sl;

   for(int i=OrdersTotal()-1;i>=0;i--)
     {
      if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
        {
         if(OrderSymbol()==Symbol() && OrderMagicNumber()==MAGIC)
           {
            if(OrderType()==OP_BUYSTOP)b++;
            if(OrderType()==OP_SELLSTOP)s++;
           }
        }
     }

//--- buy
   if(High[2]<High[3] && Close[1]>High[2]  && b<1)
     {
      price=High[1]+Delta*Point;
      sl=price-StopLoss*Point;
      tp=price+TakeProfit*Point;
      res=OrderSend(Symbol(),OP_BUYSTOP,Lots,price,Slip,sl,tp,"",MAGIC,expiration,Blue);
     }

//--- sell 
   if(Low[2]>Low[3] && Close[1]<Low[2] && s<1)
     {
      price=Low[1]-Delta*Point;
      sl=price+StopLoss*Point;
      tp=price-TakeProfit*Point;
      res=OrderSend(Symbol(),OP_SELLSTOP,Lots,price,Slip,sl,tp,"",MAGIC,expiration,Red);
     }
  }
//+------------------------------------------------------------------+
void DelOrder()
  {
   bool del;
   for(int i=OrdersTotal()-1; i>=0; i--)
     {
      if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==false) break;
      if(OrderType()==OP_BUYSTOP)  del=OrderDelete(OrderTicket());
      if(OrderType()==OP_SELLSTOP) del=OrderDelete(OrderTicket());
     }
  }
//+------------------------------------------------------------------+
bool NewBar()
  {
   static datetime lastbar=0;
   datetime curbar=Time[0];
   if(lastbar!=curbar)
     {
      lastbar=curbar;
      return (true);
     }
   else
     {
      return(false);
     }
  }
//+------------------------------------------------------------------+
int CountTrades()
  {
   int count=0;
   for(int i=OrdersTotal()-1;i>=0;i--)
     {
      if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
        {
         if(OrderSymbol()==Symbol() && OrderMagicNumber()==MAGIC)
           {
            if(OrderType()==OP_BUY || OrderType()==OP_SELL)
               count++;
           }
        }
     }
   return(count);
  }
//+------------------------------------------------------------------+
//| OnTick function                                                  |
//+------------------------------------------------------------------+
void OnTick()
  {
//--- check for history and trading
   if(Bars<100 || IsTradeAllowed()==false)
      return;
   if(NewBar()==true)
     {
      if(CountTrades()<1)PutOrder();
      if(CountTrades()>0)DelOrder();
     }
//---
  }
//+------------------------------------------------------------------+


avatar

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

  • 2 июня 2015, 11:28
+
0
Сейчас отмечает входы точками: www.opentraders.ru/downloads/764/

avatar

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

  • 2 июня 2015, 12:03
+
0
Базовый советник уже есть. Написан Oxy. Я его немного доработал.
Он прекрасно работает, в четырёх вариантах ( с разными индикаторами).
Но я не смог найти индикатор, который позволял бы безопаснее выставлять отложенники с минимальным отступом при пробое (в сравнении с теми вариантами, которые я использую). Так что я начал анализировать историю на этот предмет и то что я нарисовал мне кажется должно подойти. Там конечно придётся в условие выставления ордеров вставлять
фильтры, — но это я уже буду экспериментировать сам. Для каждого индикатором они разные. Так что хотелось бы так, как я нарисовал.
avatar

  9  vikas Автор Сообщений: 113 - Алексей

  • 2 июня 2015, 15:37
+
0
Тот что на картинке это какой индикатор?
avatar

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

  • 2 июня 2015, 15:49
+
0
это не индикатор. Это моё видение индикатора. Т.е. индикатор, который
мне нужен должен работать как на картинке.
avatar

  9  vikas Автор Сообщений: 113 - Алексей

  • 2 июня 2015, 15:55
+
+1
Я очень мало занимаюсь индикаторами, но попропробую.
avatar

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

  • 2 июня 2015, 16:01
+
0
Хорошо.
avatar

  9  vikas Автор Сообщений: 113 - Алексей

  • 2 июня 2015, 16:05
+
0
При пробитии роста лоу индикатор ставит синюю точку над хаем свечи.
При пробитии снижения хаев ставит красную точку под лоем свечи.




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

#property indicator_buffers    2
#property indicator_color1     Red
#property indicator_color2     Blue

input int BarsCount=100;
//--- buffers
double UpBuf[];
double DnBuf[];
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int OnInit()
  {
   IndicatorBuffers(2);
   SetIndexBuffer(0,UpBuf);
   SetIndexBuffer(1,DnBuf);

//--- indicator line
   SetIndexStyle(0,DRAW_ARROW,STYLE_SOLID,1);
   SetIndexArrow(0,108);
   SetIndexStyle(1,DRAW_ARROW,STYLE_SOLID,1);
   SetIndexArrow(1,108);

   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<BarsCount; i++)
     {
      if(High[i+2]>High[i+1] && High[i]>High[i+1])
        {
         UpBuf[i]=Low[i];
        }

      if(Low[i+2]<Low[i+1] && Low[i]<Low[i+1])
        {
         DnBuf[i]=High[i];
        }
     }
   return(rates_total);
  }
//+------------------------------------------------------------------+


Редактирован: 3 июня 2015, 22:54
avatar

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

  • 3 июня 2015, 17:25
+
0
напишу индикатор точь в точь как на картинке в задании, за wmr
avatar

  27  Oxy Сообщений: 3430 - ..ιllιlι.lι.ιllι.ιlι..

  • 3 июня 2015, 17:31
+
+1
Спасибо Oxy. Индикатор АМ2 думаю подойдёт. Андрей спасибо, — простой код. Доступно и понятно.
avatar

  9  vikas Автор Сообщений: 113 - Алексей

  • 3 июня 2015, 21:54

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