Пробой уровня. Поиск количества свечей при тесте уровня.

 

Коллеги,

как узнать, сколько раз часовые свечки тестили уровень ?

Пример тесте уровня и его "пробой"

тест уровня

 
Sergey Lapshov:

Коллеги,

как узнать, сколько раз часовые свечки тестили уровень ?

Пример тесте уровня и его "пробой"


Для начала надо узнать, как определять уровень.
 
forexman77:
Для начала надо узнать, как определять уровень.

уровень может быть любой. например,

double MaxPrice=NormalizeDouble(iHigh(Symbol(),TimeCandle,1)+Delta*Point,Digits);

 
Sergey Lapshov:

уровень может быть любой. например,

double MaxPrice=NormalizeDouble(iHigh(Symbol(),TimeCandle,1)+Delta*Point,Digits);

Как понял по картинке входим после второго касания растущими свечами?
 
forexman77:
Как понял по картинке входим после второго касания растущими свечами?

да, всё верно

 
Sergey Lapshov:

да, всё верно

Примерно так:

extern int bar=50;//число баров для поиска
extern int I=5;  //индекс где произошло любое касание уровня больше или равен I
extern int b1=5;//кол-во баров для поиска первой растущей и пересекающей "MaxPrice" свечи начиная от index
////////////////////////////////////////////////////////////////////////////////////////////////////
int tiket=0;
int index=0;
double MaxPrice=NormalizeDouble(iHigh(Symbol(),TimeCandle,1)+Delta*Point,Digits);
if (Close[0] > Open[0] && Close[0] > MaxPrice)
{
for (int x=1;x<=bar;x++)
{
if (High[x] > MaxPrice){index=x;break;}//получили индекс на котором было касание уровня
}
if (index >= I)
{
for (int y=index;y<=index+b1;y++)//ищем в диапазоне баров растущий бар, который пересекает уровень первый раз
{
if (Close[y] > Open[y] && Close[y] > MaxPrice){tiket=1;break;}
}
}
}
if (tiket==1)
{
//Ваш код
}
 

Придумаете, как лучше находить напишите. 

А вот так можно посчитать все свечи в заданном диапазоне, которые пересекают уровень

extern int bar=50;//число баров для поиска
extern int T  =7;//Кол-во свечей пересекающих уровень
//////////////////////////////////////////////////////////////////////////////////////////////////////////
int k=0;
double MaxPrice=NormalizeDouble(iHigh(Symbol(),TimeCandle,1)+Delta*Point,Digits);
if (Close[0] > Open[0] && Close[0] > MaxPrice)
{
for (int x=1;x<=bar;x++)
{
if (High[x] > MaxPrice && Low[x] < MaxPrice){k=k+1;}//счетчик количества свечей пересекающих уровень
}
}
if (k>=T)
{
//Ваш код
}
 
forexman77:

Придумаете, как лучше находить напишите. 

А вот так можно посчитать все свечи в заданном диапазоне, которые пересекают уровень

спасибо за помощь.. к сожалению, не удалось "прикрутить" функцию к своему советнику и проверить работоспособность. 

число баров для поиска нужно считать от начала новой торговой сессии (H1) или от начала торговой недели (H4)

 
Sergey Lapshov:

спасибо за помощь.. к сожалению, не удалось "прикрутить" функцию к своему советнику и проверить работоспособность. 

число баров для поиска нужно считать от начала новой торговой сессии (H1) или от начала торговой недели (H4)

Вот так можно считать с начала дня:

extern int T  =7;//Кол-во свечей пересекающих уровень
////////////////////////////////////////////////////////////////////////////////
int k=0;
double MaxPrice=NormalizeDouble(iHigh(Symbol(),TimeCandle,1)+Delta*Point,Digits);
datetime TIME=iTime(NULL,PERIOD_D1,0); 
int      bar =iBarShift(NULL,0,TIME); 
if (Close[0] > Open[0] && Close[0] > MaxPrice && Time[1] > TIME)
{
for (int x=1;x<=bar;x++)
{
if (High[x] > MaxPrice && Low[x] < MaxPrice){k=k+1;}//счетчик количества свечей пересекающих уровень
}
}
if (k>=T)
{
//Ваш код
}
 

Посчитать-то не проблемма. На самом деле проблема  -а ЧТО ДЕЛАТЬ когда уровень явно многократно потроган и что-то назревает.

У меня пока тестятся два подхода -

1. Ничего не делать, т.е. просто блокировать отскок.

2. Напортив, уменьшать паузы и масштаб крайностей для отскоков с тем, что последний микроотскок совпадет по направлению с пробоем.

 

Интересно, но ни один пока не получил явного преимущества в тестах. 

 
Youri Tarshecki:

Посчитать-то не проблемма. На самом деле проблема  -а ЧТО ДЕЛАТЬ когда уровень явно многократно потроган и что-то назревает. 

Вы как будто кашу из топора варите )). Вам носят ингредиенты, а вы знай помешиваете