3veriek:
поулярные - полярные как на северном полюсе, Это вам не к программистам а к медведям.
Вопрос то в чем вообще?
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Вывод фракталов я сделал так:
#property indicator_chart_window
#property indicator_buffers 2
#property indicator_color1 Blue
#property indicator_color2 Red
#property indicator_width1 1
#property indicator_width2 1
extern int prmBars = 1000;
extern int prmLength = 5;
///////////////////////////////////////////////////////////
double MarkNord[];
double MarkZuid[];
void init()
{
IndicatorDigits(Digits);
SetIndexStyle (0, DRAW_ARROW); SetIndexArrow(0, 163);
SetIndexBuffer(0, MarkNord);
SetIndexStyle (1, DRAW_ARROW); SetIndexArrow(1, 163);
SetIndexBuffer(1, MarkZuid);
IndicatorShortName("Frct:"+prmLength);
SetIndexLabel(0, "top:"+prmLength);
SetIndexLabel(1, "bot");
}
//=========================================================
void start()
{
int nMax = prmBars; //количество бар
if (nMax < 10 || nMax > Bars)
nMax = Bars;
int nRight = (prmLength-1)/2;
int prevTop = nMax+prmLength; //количество бар перед верхним фракталом
int prevBot = nMax+prmLength; //количество бар перед нижним фракталом
int nOffset = prmLength/2;
if (prmLength%2 == 0)
nOffset--;
///////////////////////////////////////////////////////
for (int k = nMax-prmLength/2; nRight <= k; k--) {
if (nOffset < prevTop-k && true == GetTopFrac(k, prmLength)) {
MarkNord[k] = High[k];
Print("MarkNord[k]: ",MarkNord[k]);
prevTop = k;
Print("prevTop: ",prevTop);
}
if (nOffset < prevBot-k && true == GetBotFrac(k, prmLength)) {
MarkZuid[k] = Low[k];
Print("MarkZuid[k]: ",MarkZuid[k]);
prevBot = k;
Print("prevBot: ",prevBot);
}
}
}
//=========================================================
bool GetTopFrac (int shift, int nLength)
// Bерхние фракталы
{
int j, nVl, nVr;
// Левая часть
for (j = nLength/2; j > 0; j--) {
nVl = 0.5 + High[shift+j ]/Point;
nVr = 0.5 + High[shift+j-1]/Point;
if (nVr >= nVl) {
}
else
return(false);
}
// Правая часть
int nRight = (nLength-1)/2;
for (j = 1; j <= nRight; j++) {
nVl = 0.5 + High[shift-j+1]/Point;
nVr = 0.5 + High[shift-j ]/Point;
if (nVl >= nVr) {
}
else
return(false);
}
return(true);
}
//=========================================================
bool GetBotFrac (int shift, int nLength)
// Нижние фракталы
{
int j, nVl, nVr;
// Левая часть
for (j = nLength/2; j > 0; j--) {
nVl = 0.5 + Low[shift+j ]/Point;
nVr = 0.5 + Low[shift+j-1]/Point;
if (nVr <= nVl) {
}
else
return(false);
}
// Правая часть
int nRight = (nLength-1)/2;
for (j = 1; j <= nRight; j++) {
nVl = 0.5 + Low[shift-j+1]/Point;
nVr = 0.5 + Low[shift-j ]/Point;
if (nVl <= nVr) {
}
else
return(false);
}
return(true);
}
//=========================================================
Т.е. программным образом выделить среди всех фракталов самые популярные зоны (как на рисунке, т.е. зоны с наибольшим скоплением фракталов), нарисовать их и подсчитать количество таких фракталов в каждой зоне, которые отклоняются от заданной тенденции конкретной зоны.