Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Вот советник, кот. отрисовывает на графике стрелками два последних минимума и два последних максимума. Отрисовывает стрелками. (Стрелки, - это не входы!, а экстремумы)
Программно это, в конечном итоге, выведено так:
Желающие могут соотв. изменить там условия входов, - причем можно строить(задавать) различные фигуры (по 4 точкам abcd ) и менять условия входов в соотв. с конфигупацией.
Ну так попробуйте с помощью Функций iLowest и iHighest найти те точки,которые отмечены на графике. Как это Вы сделаете? Никак не сделаете, так как цена может 10 баров подряд падать и фрактал появится только на 11-ом баре(соответственно будет всего один пик на 11 барах), а может на этих 11 барах сформировать 3 или даже больше фракталов(соответственно будет 3 или более пиков на 11 барах). Поэтому тут парами строк кода не обойтись.
Легко. Посмотрите ЗигЗаг, Вам на многое откроются глаза.
Вот этот код выведет на печать номера баров на которых сформировались максимумы на фракталах за последние 100 баров. Примерно в этом направлении и надо искать пики, а не функциями iLowest или iHighest.
ИМХО.
Функция возвращает фрактал по его номеру. Нумерация для верхних и нижних фракталов раздельная. Может пригодиться при разработке советников, которые для принятия решения о входе в рынок анализируют взаимное расположение какого то количества последних фракталов. Сделана путём переделки функции KimIV.
Уважаемые профи!
Чтобы сравнить, например, два соседних бара, нужно один обозначить i+1, второй i+2. А как сравнить два максима или два минимума обозначенные ниже на рисунке точками?
Видимо затронул интересный вопрос. Привожу код индикатора:
#property indicator_chart_window // Индик. рисуется в основном окне
#property indicator_buffers 2 // Количество буферов
#property indicator_color1 DarkBlue // Цвет первой линии
#property indicator_color2 Crimson // Цвет второй линии
extern int History =50; // Колич. баров в расчётной истории
double MaxA[], // Массив MaxA
MinA[]; // Массив MinA
double Buf_MaxA[], // Объявление индикаторного массива Buf_Max
Buf_MinA[]; // Объявление индикаторного массива Buf_Min
//-------------------------------------------------------------------
int init() // Специальная функция init()
{
SetIndexBuffer(0,Buf_MaxA); // Назначение массива буферу
SetIndexStyle (0,DRAW_ARROW,STYLE_SOLID,4); // Стиль линии
SetIndexArrow(0, 158); // Порядковый номер линии и номер значка
SetIndexLabel(0,"MAX"); // Имя линии индикатора
SetIndexBuffer(1,Buf_MinA); // Назначение массива буферу
SetIndexStyle (1,DRAW_ARROW,STYLE_SOLID,4); // Стиль линии
SetIndexArrow(1, 158); // Порядковый номер линии и номер значка
SetIndexLabel(1,"MIN"); // Имя линии индикатора
return; // Выход из спец. ф-ии init()
}
//-------------------------------------------------------------------
int start() // Специальная функция start()
{
int counted_bars=IndicatorCounted(); // Количество просчитанных баров
int i=Bars-counted_bars-1, // Индекс первого непосчитанного
k; // Индекс k
double HighA=0, // Максимум A
HighB=0, // Максимум B
HighC=0, // Максимум C
LowA=0, // Минимум A
LowB=0, // Минимум B
LowC=0; // Минимум C
//-------------------------------------------------------------------
if (i>History-1) // Если много баров то
i=History-1; // рассчитывать заданное колич
SetIndexDrawBegin(0,Bars-History+1); // Установка первого бара от которого должна
// начинаться отрисовка индикаторной линии
ArrayResize(MaxA,History); // Установка массива MaxA
ArrayResize(MinA,History); // Установка массива MinA
ArrayInitialize(MaxA,0); // Инициализация элементов в массиве MaxA
ArrayInitialize(MinA,0); // Инициализация элементов в массиве MinA
//-------------------------------------------------------------------
for (i=0; i<History-1; i++) // Цикл от 0-ого бара до History-1
{
HighA=High[i+2]; // Вычисляем HighA
HighB=High[i+1]; // Вычисляем HighB
HighC=High[i+0]; // Вычисляем HighC
LowA=Low[i+2]; // Вычисляем LowA
LowB=Low[i+1]; // Вычисляем LowB
LowC=Low[i+0]; // Вычисляем LowC
//-------------------------------------------------------------------
for (k=0; k<i; k++) // Цикл от 0-ого бара до History-1,
// для операций с максим. и мин.
{
if (MaxA[i+1]>0||MinA[i+1]>0)break; // Если рассчет цикла завершен, выход
//-------------------------------------------------------------------
if (HighA<=HighB && HighB>=HighC && LowB>High[k]) // Задается условие
{
MaxA[i+0]=HighB; // для поиска MaxA
Buf_MaxA[i+1]=MaxA[i+0]; // Buf_MaxA получает значение MaxA
}
if (LowA>=LowB && LowB<=LowC && HighB<Low[k]) // Задается условие
{
MinA[i+0]=LowB; // для поиска MinA
Buf_MinA[i+1]=MinA[i+0]; // Buf_MinA получает значение MinA
}
//-------------------------------------------------------------------
}
}
return(0); // Выход из спец. ф-ии start()
}
//-------------------------------------------------------------------
int deinit() // Специальная функция deinit()
{
return(0); // Выход из спец. ф-ии deinit()
}
//+------------------------------------------------------------------+
Если кто знает, напишите, как, например, найти максимальный максимум из трех последовательно идущих (обозначеных точками) максимумов.
Что на этом профи и закончились? Вы только способны мыслить высокими материами, а когда дело доходит до чего-то реального так все умалкают.
Добрый вечер всем.
Оч. большая неприятнось случилось пару часов назад. .
Не так давно открыл небольшой памм-счет в Альпари. За месяц советник увеличил депозит примерно на 11 процентов.
Сегодня я вручную открыл две арбитражные позиции BUY USDCHF + BUY USDCAD
И повесил советник - "Парный трейлингстоп". Где предусмотрел условия закрытия либо по виртуальному парному тралу, либо по достижении заданного суммарного профита/убытка.
Через 30 минут обе позиции закрылись по тралу.
По условиям советника сделки должны были открыться опять.
Они открылись. И потом сразу закрылись. И опять открылись. И тут же закрылись.
И так почти 450 раз - до тех пор, пока я минут через 30 случайно не заглянул в терминал! И обнаружил,
что за 450 раз (аск-бид) - сильно уменьшили размер депозита.
Советник в закачке.
Судя ро всему, здесь виноват блок закрытия позиций арбитражной пары инструментов по заданному суммарному профиту/убытку. Поскольку ничто иное там в коде позиции не закрывает.
Вот этот блок:
(используются ф-и И.Кима)