vikas
Алексей

 
Уровень 9

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


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

Рейтинг 2156



РЕКОМЕНДУЮ



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

Здравствуйте АМ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
  • Просмотров: 5536
  • 1 июня 2015, 22:26
  • vikas
Понравилcя материал? Не забудьте поставить плюс и поделиться в социальной сети!

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

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

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

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

avatar

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

  • 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 Сообщений: 16530 - Андрей

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

avatar

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

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

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

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

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

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

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

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

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

  • 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 Сообщений: 16530 - Андрей

  • 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

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