PDA

View Full Version : Дивергенция. Миф или полезный инструмент?



Scriptong
15-12-2009, 20:55
Просматривая темы статей за последние полгода, с удивлением обнаружил, что до сих пор не была затронута такая обширная тема как торговля на дивергенциях. Восполнить такой досадный пробел было решено немедленно. Ко всему прочему, помогло удачное стечение обстоятельств - во время работы над статьей меня попросили создать советника по очень схожему алгоритму. Отличия от разрабатываемого мной алгоритма было два - другой индикатор, при помощи которого определяется дивергенция, и другая тактика входа (вместо открытия рыночного ордера применяется вход отложенным лимитным ордером).

Для начала, специально для тех, кто еще не сталкивался с самим понятием дивергенции, дадим определение. Дивергенция (от англ. "divergence" - несоответствие, отклонение, расхождение) - разнонаправленное движение цены и показаний индикатора. Полезным можно назвать всего два типа дивергенции:
Показания индикатора уменьшаются, а цена при этом продолжает восходящее движение. В таких случаях стоит готовиться к осуществлению продаж.
Показания индикатора растут, а цена продолжает нисходящее движение. В таких случаях необходимо рассматривать возможность покупок.
Оставшиеся два варианта дивергенции (рост индикатора при падении цены и падение индикатора при росте цены) практического применения не имеют, так как в данном случае мы наблюдаем самый большой недостаток абсолютно всех индикаторов - запаздывание. Запаздывание происходит по той простой причине, что первичной все же является цена, в то время как любой индикатив всего лишь производная от цены.

Предложенный алгоритм рассмотрим на двух примерах - для покупки (см. рис. 1) и продажи (см. рис. 2):
http://www.forextrade.ru/media/Image/MQLabs/45_ag/figure_1.gif

Рис. 1. - Показания индикатора растут, а цена падает.

Вертикальными черными линиями показаны две точки, по которым была определена дивергенция. Эти точки были найдены после того, как показания MACD пересекли нулевую линию снизу вверх. Как только MACD стал положительным, на всем участке от текущего пересечения нулевой линии до предыдущего ищется самое минимальное значение гистограммы. На рис. 1 это первая вертикальная линия. Как известно, для построения прямой требуется две точки. В качестве второй точки берется локальный минимум гистограммы, который является последним перед пересечением нулевой линии. Соединяя найденные точки, получаем восходящую прямую, то есть показания индикатора растут.

Далее проводим вертикальные линии через найденные экстремумы MACD так, чтобы они отобразились на графике цен. Таким образом, мы находим две свечи, которые соответствуют минимальным показаниям MACD. Через минимумы этих свечей проводим наклонную линию, которая оказывается нисходящей. В результате получаем две разнонаправленные прямые, что говорит о наличии дивергенции.

После идентификации дивергенции необходимо определить минимальное значение цены на всем промежутке, где гистограмма MACD находилась ниже нуля. Это ориентировочный уровень стопа для будущей длинной позиции и нулевой уровень для сетки Фибоначчи. Уровень 100% сетки Фибоначчи находится как максимальное значение цены, которое было достигнуто на участке после фиксации минимума гистограммы MACD. Построение линий Фибоначчи дает возможность определить середину сложившегося канала, куда и откладывается ордер Buy Limit. На рис. 1 цена открытия длинной позиции (сработал отложенный ордер) расположена несколько выше 50%, что объясняется учетом спрэда - BUY открывается по цене Ask, в то время как цены в терминале отображаются по Bid.

Не стоит уровень стоп-приказа для длинной позиции располагать непосредственно на найденном минимуме цены. Необходимо делать хоть какой-то запас для случаев ложного пробития. На рис. 1. это запас минимальный - 1 пункт.

Цель сделки очень удобно указывать в числах Фибоначчи, тем более, сетка у нас уже посчитана и отображена. Наиболее интересными оказались уровни 161.8, 361.8 461.8 и 561.8. Хотя во входных параметрах советника, который будет описан чуть ниже, по умолчанию установлен уровень 300%. В результате получаем солидное превосходство уровня профита над стопом.

Подобным образом определяется дивергенция для коротких сделок (см. рис. 2):
http://www.forextrade.ru/media/Image/MQLabs/45_ag/figure_2.gif

Рис. 2. - Показания индикатора уменьшаются, а цена растет.

Когда гистограмма MACD пересекает нулевую линию сверху вниз, находим максимальное положительное значение индикатора на отрезке между соседними пересечениями нулевой линии. Максимум отмечен вертикальной линией, находящейся левее. Справа от найденного максимума фиксируется локальный максимум, который является ближайшим к пересечению нуля. Через эти два максимума проводится нисходящая линия.

На графике цен отмечаются свечи, которые соответствуют двум найденным экстремумам индикатора. Через максимумы этих свечей проводится восходящая линия. Таким образом, получаем расхождение линий - дивергенцию.

Далее нужно найти максимальное значение цены за то время, пока гистограмма MACD находилась выше нуля. Это будет нулевой уровень линий Фибоначчи. Для нахождения уровня 100% потребуется найти минимальное значение цены, начиная от свечи, которая соответствует максимуму индикатора MACD. После формирования сетки Фибоначчи, на уровень 50% откладывается ордер Sell Limit. Уровень стопа ставится чуть выше нулевого уровня Фибо с учетом спрэда, а уровень профита на один из уровней Фибоначчи. По умолчанию это 300%, но наиболее вероятными, как было указано выше, оказались уровни 161.8, 361.8, 461.8 и 561.8.

Перейдем к написанию торгового робота DivergenceOnMACDFibo_Expert, который основывается на описанной стратегии. Первым делом займемся сигнальной частью, которая сегодня на порядок сложнее обычного:

//+-------------------------------------------------------------------------------------+
//| Расчет значений MACD с формированием сигналов для открытия позиций |
//+-------------------------------------------------------------------------------------+
void GetSignal()
{
Signal = 0;
// - 1 - == Получение значений индикатора ===============================================
double MACD1 = iMACD(Symbol(), 0, FastM, SlowM, SignalM, MACDPrice, MODE_MAIN, 1);
double MACD2 = iMACD(Symbol(), 0, FastM, SlowM, SignalM, MACDPrice, MODE_MAIN, 2);
// - 1 - == Окончание блока =============================================================

// - 2 - == Генерация сигнала SELL ======================================================
if (MACD1 < 0 && MACD2 > 0) // Пересечение нулевой линии MACD
if (ExtremumsFind(1)) // найти положительные значения
if (VMax > VFirst && NMax > NFirst) // последняя вершина ниже максимума
if (High[NMax] < High[NFirst]) // Там, где MACD падает, цена еще растет
{
Signal = -1; // сигнал SELL
ShowDivergence(-1); // Рисуем линии дивергенции в отрицательной зоне MACD
ShowFibo(Time[LowBar], CurLow, Time[HighBar], CurHigh); // Рисуем сетку Фибо
return;
}
// - 2 - == Окончание блока =============================================================

// - 3 - == Генерация сигнала BUY =======================================================
if (MACD1 > 0 && MACD2 < 0) // Пересечение нулевой линии MACD
if (ExtremumsFind(-1)) // найти отрицательные значения
if (VMax<VFirst && NMax > NFirst)//последняя впадина выше минимального значения MACD
if (Low[NMax] > Low[NFirst]) // Там, где MACD растет, цена падает
{
Signal = 1; // сигнал Buy
ShowDivergence(1); // Рисуем линии дивергенции в положительной зоне MACD
ShowFibo(Time[HighBar], CurHigh, Time[LowBar], CurLow); // Рисуем сетку Фибо
return;
}
// - 3 - == Окончание блока =============================================================
}
Блок 1 рассчитывает ближайшие значения гистограммы MACD для того, чтобы впоследствии можно было определить момент пересечения нулевой линии. Если пересечения линии не было, то на этом выполнение функции GetSignal заканчивается.

Во втором блоке происходит проверка пересечения нуля сверху вниз. При фиксации пересечения управление передается функции ExtremumsFind с параметром 1, что означает обработку положительной зоны гистограммы MACD. ExtremumsFind возвращает результат True, если удалось найти максимальное значение MACD и следующий за ним локальный максимум. При этом заполняются значения переменных VMax (максимальное значение MACD), NMax (номер бара, где зафиксировано максимальное значение), VFirst (значение локального максимума), NFirst (номер бара, где найден локальный максимум), CurLow (минимальное значение цены после максимума MACD), CurHigh (максимальное значение цены за время нахождения гистограммы выше нуля). После успешного выполнения ExtremumsFind сравниваются значения VMax и VFirst. При этом локальный максимум должен быть ниже максимума MACD, а максимум свечи, соответствующей локальному максимуму, выше максимума свечи, соответствующей VMax. При выполнении всех этих условий переменная Signal принимает значение -1, подавая сигнал к продаже. При помощи функции ShowDivergence отображаются линии дивергенции, а при помощи функции ShowFibo отображаются линии Фибоначчи.

Третий блок аналогичен второму. Только здесь отслеживается пересечение нуля снизу вверх, а затем вызывается функция ExtremumsFind с параметром -1, что указывает на обработку отрицательной зоны MACD. При успешном выполнении ExtremumsFind требуется, чтобы найденный минимум MACD, который содержится в VMax, был ниже локального минимума, содержащегося в VFirst. При этом минимум свечи, соответствующей VMax должен быть выше минимума свечи, соответствующей VFirst. Вновь, если все условия соблюдены, то флаг Signal принимает значение 1, подавая сигнал к покупке, а функции ShowDivergence и ShowFibo отображают линии дивергенции и Фибоначчи.

Код функции ExtremumsFind выглядит грозно:

//+-------------------------------------------------------------------------------------+
//| Поиск последних двух вершин или впадин индикатора |
//+-------------------------------------------------------------------------------------+
bool ExtremumsFind(int Type)
{
// - 1 - ====================== Принятие начальных условий поиска =======================
VFirst = 0; NFirst = 0; // Первая вершина/впадина
VMax = 0; NMax = 0; // максимальное/минимальное значение индикатора
int i = 2;
double IndPred = iMACD(Symbol(), 0, FastM, SlowM, SignalM, MACDPrice, MODE_MAIN, 1);
double IndCur = iMACD(Symbol(), 0, FastM, SlowM, SignalM, MACDPrice, MODE_MAIN, 2);
double IndPrev = iMACD(Symbol(), 0, FastM, SlowM, SignalM, MACDPrice, MODE_MAIN, 3);
// - 1 - ====================== Окончание блока =========================================

// - 2 - ==== Поиск вершины/впадины и максимального (по модулю) значения индикатора =====
while (((IndCur > 0 && Type > 0) || (IndCur < 0 && Type < 0)) && i < Bars)
{
if ((IndPred < IndCur && IndPrev < IndCur && Type > 0) || // определена вершина
(IndPred > IndCur && IndPrev > IndCur && Type < 0)) // или впадина
{
if (VFirst == 0) // найдена первая вершина/впадина
{
VFirst = IndCur; // запоминаем значение
NFirst = i; // и номер бара
VMax = IndCur; // Это же значение пока будет максимальным/минимальным
NMax = i;
}
else
if ((IndCur > VMax && Type > 0) || (IndCur < VMax && Type < 0))//найдена следую-
{ // щая вершина/впадина, не будет ли она максимумом в абсолютном значении?
VMax = IndCur;
NMax = i;
}
}
i++;
// готовим данные для следующего цикла
IndPred = IndCur;
IndCur = IndPrev;
IndPrev = iMACD(Symbol(), 0, FastM, SlowM, SignalM, MACDPrice, MODE_MAIN, i+1);
}
// - 2 - ====================== Окончание блока =========================================

if (i == Bars) return(False); // если достигнут конец истории, то выдаем ошибку

// - 3 - ==== Нахождение максимального/минимального значения после экстремума MACD ======
if (Type > 0)
{
HighBar = iHighest(Symbol(), 0, MODE_HIGH, i);
CurHigh = High[HighBar];
LowBar = iLowest(Symbol(), 0, MODE_LOW, HighBar);
CurLow = Low[LowBar];
}

if (Type < 0)
{
LowBar = iLowest(Symbol(), 0, MODE_LOW, i);
CurLow = Low[LowBar];
HighBar = iHighest(Symbol(), 0, MODE_HIGH, LowBar);
CurHigh = High[HighBar];
}
// - 3 - ====================== Окончание блока =========================================

return(True);
}
В первом блоке рассчитывается значение последних трех значений MACD, из которых IndCur считается потенциальной вершиной или впадиной.

Второй блок в цикле проходит все свечи, пока не находит обратное пересечение нулевой линии. При этом каждый локальный максимум или минимум (максимум, когда IndCur больше значений IndPrev и IndPred, а минимум, когда IndCur меньше IndPrev и IndPred) сравнивается с предыдущим найденным экстремумом. Наибольший в абсолютном значении экстремум, в конце концов, остается в VMax, а первый найденный - в VFirst.

Еще одним условием прерывания цикла второго блока является достижение конца истории. В этом случае функция возвращает результат False.

Задачей третьего блока является нахождение минимального и максимального значения цены в соответствии со стратегией. По окончанию работы блока формируются данные в CurHigh (нулевой уровень сетки Фибо или 100%, в зависимости от направления) и в CurLow (противоположный CurHigh уровень Фибо).

Отображением линий дивергенции занимается функция ShowDivergence:

//+-------------------------------------------------------------------------------------+
//| Отображение линий дивергенции |
//+-------------------------------------------------------------------------------------+
void ShowDivergence(int Type)
{
// - 1 - ========= Подготовка значений в зависимости от типа отоюражения ================
datetime Time1 = Time[NMax];
datetime Time2 = Time[NFirst];
double IndPrice1 = VMax;
double IndPrice2 = VFirst;
if (Type == 1)
{
double Price1 = Low[NMax];
double Price2 = Low[NFirst];
}
else
{
Price1 = High[NMax];
Price2 = High[NFirst];
}
// - 1 - ========= Окончание блока ======================================================

// - 2 - ========= Линия дивергенции на графике =========================================
if (ObjectFind(Name1) < 0)
{
ObjectCreate(Name1, OBJ_TREND, 0, Time1, Price1, Time2, Price2);
ObjectSet(Name1, OBJPROP_COLOR, DiverColor);
ObjectSet(Name1, OBJPROP_RAY, True);
}
else
{
ObjectMove(Name1, 0, Time1, Price1);
ObjectMove(Name1, 1, Time2, Price2);
}
// - 2 - ========= Окончание блока ======================================================

// - 3 - ========= Линия дивергенции на индикаторе ======================================
if (WindowFind(IndicatorName) > 0) // если индикатор существует
if (ObjectFind(Name2) < 0) // если объект еще не создан
{
ObjectCreate(Name2, OBJ_TREND, WindowFind(IndicatorName), Time1, IndPrice1, Time2,
IndPrice2);
ObjectSet(Name2, OBJPROP_COLOR, DiverColor);
ObjectSet(Name2, OBJPROP_RAY, True);
}
else // объект создан - передвигаем
{
ObjectMove(Name2, 0, Time1, IndPrice1);
ObjectMove(Name2, 1, Time2, IndPrice2);
}
// - 3 - ========= Окончание блока ======================================================
}
Первый блок формирует значения Time1, Price1 (первая точка прямой на графике цен), Time2, Price2 (вторая точка на графике цен), IndPrice1 (значение индикатора для первой точки на гистограмме MACD) и IndPrice2 (значение индикатора для второй точки на MACD). Значение времени для обеих прямых будет совпадать.

Второй блок в особых комментариях не нуждается. Он просто рисует на графике наклонную линию, которая впоследствии передвигается.

В третьем блоке производится отображение линии дивергенции в окне индикатора MACD. Для этого сначала необходимо узнать номер окна. Номер окна можно найти, зная короткое название индикатора. Чаще всего это "MACD(12,26,9)" - стандартные настройки MACD. Но если пользователь решит использовать другие параметры MACD, то и здесь можно подстроиться, используя входные параметры эксперта. В них пользователь должен внести соответствующие настройки параметров индикатора (FastM, SlowM и SignalM). При использовании этих настроек в функции init формируется значение строковой переменной IndicatorName, которая содержит короткое имя индикатора. Поэтому попытка отображения линии дивергенции в окне индикатора осуществляется только при нахождении нужного окна MACD. Если индикатор не присоединен или у него установлены несоответствующие значения, то линия не отображается.

Подобным образом работает функция ShowFibo:

//+-------------------------------------------------------------------------------------+
//| Отображение линий Фибоначчи |
//+-------------------------------------------------------------------------------------+
void ShowFibo(datetime Time1, double Price1, datetime Time2, double Price2)
{
// - 1 - ========= Если сетка еще не отображалась, то создаем новый объект ==============
if (ObjectFind(FiboName) < 0)
{
ObjectCreate(FiboName, OBJ_FIBO, 0, Time1, Price1, Time2, Price2);
ObjectSet(FiboName, OBJPROP_FIBOLEVELS, 4); // Всего будет четыре Фибо-уровня
ObjectSet(FiboName, OBJPROP_FIRSTLEVEL, 0); // Первый уровень - ноль
ObjectSet(FiboName, OBJPROP_FIRSTLEVEL+1, FiboPercent/100); // Второй - уровень входа
ObjectSet(FiboName, OBJPROP_FIRSTLEVEL+2, 1.0); // Третий - уровень 100%
ObjectSet(FiboName, OBJPROP_FIRSTLEVEL+3, FiboTarget/100);// Четвертый - уровень цели
// Подписываем уровни
ObjectSetFiboDescription(FiboName, 0, "0.0 (%$)");
ObjectSetFiboDescription(FiboName, 1, DoubleToStr(FiboPercent, 1) + " (%$)");
ObjectSetFiboDescription(FiboName, 2, "100.0 (%$)");
ObjectSetFiboDescription(FiboName, 3, DoubleToStr(FiboTarget, 1) + " (%$)");

ObjectSet(FiboName, OBJPROP_BACK, True); // Сетка на заднем плане
ObjectSet(FiboName, OBJPROP_COLOR, CLR_NONE);// Не показывать техническую линию сетки
ObjectSet(FiboName, OBJPROP_LEVELCOLOR, Gray); // Цвет сетки
ObjectSet(FiboName, OBJPROP_LEVELSTYLE, STYLE_DOT); // Стиль сетки
}
// - 1 - ========= Окончание блока ======================================================

// - 2 - ========= Иначе просто передвигаем имеющуюся сетку =============================
else
{
ObjectMove(FiboName, 0, Time1, Price1);
ObjectMove(FiboName, 1, Time2, Price2);
}
// - 2 - ========= Окончание блока ======================================================
}
Первый блок создает объект "линии Фибоначчи" с четырьмя уровнями, два из которых пользователь может изменить по собственному желанию (FiboPercent - уровень для цены открытия отложенного ордера и FiboTarget - уровень цели позиции). Во втором блоке происходит обычное перемещение объекта при смене данных по дивергенции.

Связывание всех приведенных функций производится в функции start. Ее вид настолько стандартный, что рассматривать его сегодня не будем, а перейдем непосредственно к тестированию стратегии. Разработанный эксперт имеет такие входные параметры:
TakeProfit = True - включение/выключение установки уровня профита. Если отключен, то выход из сделки произойдет по уровню стопа или при получении обратного сигнала StopLoss = True - включение/выключение установки уровня стоп-приказа. Если отключен, то выход из сделки произойдет по уровню профита или при получении обратного сигнала Lots = 0.1 - фиксированный объем сделки FastM = 12 - период быстрой средней MACD SlowM = 26 - период медленной средней MACD SignalM = 9 - период сигнальной средней MACD. Используется только для идентификации советником присоединения MACD. MACDPrice = 0 - цена, по которой рассчитывается MACD. 0 - Close, 1 - Open, 2 - High, 3 - Low, 4 - Median Price, 5 - Typical Price, 6 - Weigthed Close DiverColor = Blue - цвет линий дивергенции DeltaStopLoss = 1 - отступ от экстремума в пунктах для установки уровня стоп-приказа FiboPercent = 50.0 - уровень Фибоначчи в процентах, на котором будет установлен отложенный лимитный ордер FiboTarget = 300.0 - уровень Фибоначчи в процентах, на котором будет установлен профит сделки

Для получения достаточного для анализа количества сделок, тестирование произведем на истории 01.01.2008 - 06.12.2009 и таймфрейме М15. Значения эксперта приняты по умолчанию (см. рис. 3 - 6):
http://www.forextrade.ru/media/Image/MQLabs/45_ag/EURUSD%20Begin.gif
Рис. 3. - Результаты тестирования эксперта DivergenceOnMACDFibo_Expert на валютной паре EURUSD.
http://www.forextrade.ru/media/Image/MQLabs/45_ag/USDCHF%20Begin.gif
Рис. 4. - Результаты тестирования эксперта DivergenceOnMACDFibo_Expert на валютной паре USDCHF.
http://www.forextrade.ru/media/Image/MQLabs/45_ag/GBPUSD%20Begin.gif
Рис. 5 - Результаты тестирования эксперта DivergenceOnMACDFibo_Expert на валютной паре GBPUSD.
http://www.forextrade.ru/media/Image/MQLabs/45_ag/USDJPY%20Begin.gif
Рис. 6. - Результаты тестирования эксперта DivergenceOnMACDFibo_Expert на валютной паре USDJPY.

Даже такие невыразительные результаты можно считать успешными, так как мы еще не подключали грозное оружие - оптимизацию параметров для каждой валютной пары в отдельности. Наиболее неудачные показатели у EURUSD - 177 долларов чистой прибыли против 2535 долларов максимальной просадки. Самые лучшие показатели у USDJPY - чистая прибыль 1333 долларов и максимальная просадка 640 долларов (фактор восстановления больше двух).

Если же произвести оптимизацию советника по каждой валютной паре, то результаты выйдут более оптимистичные. О том, как производится оптимизация, было написано в предыдущих двух статьях. Поэтому сейчас рассмотрим только конечные результаты.

Для валютной пары EURUSD были подобраны такие параметры: FastM = 3, SlowM = 49, FiboTarget = 161.8. Остальные параметры - по умолчанию (рис. 7):
http://www.forextrade.ru/media/Image/MQLabs/45_ag/EURUSD%20End.gif
Рис. 7. - Результаты тестирования эксперта после оптимизации на валютной паре EURUSD.

Кривая баланса выглядит очень стабильной. Правда, число сделок немного недотягивает до достаточного - 162. Чистая прибыль 1605 долларов, а максимальная просадка 562 доллара, что дает фактор восстановления 2.85. Итог - вполне прилично.

Для валютной пары USDCHF параметры взяты следующие: FastM = 4, SlowM = 42, FiboTarget = 461.8 (рис. 8):
http://www.forextrade.ru/media/Image/MQLabs/45_ag/USDCHF%20End.gif
Рис. 8. - Результаты тестирования эксперта после оптимизации на валютной паре USDCHF.

Вид кривой баланса немного хуже, чем у евро, но здесь более высокий фактор стабильности системы, так как максимальная просадка показана меньше (585 долларов) при большем количестве сделок (172). За то чистая прибыль составила 2279 долларов. И в результате фактор восстановления выходит 3.9. Итог - можно брать на вооружение.

Валютная пара GBPUSD остановилась на таких параметрах: FastM = 8, SlowM = 24, FiboTarget = 561.8 (рис. 9):
http://www.forextrade.ru/media/Image/MQLabs/45_ag/GBPUSD%20End.gif
Рис. 9. - Результаты тестирования эксперта после оптимизации на валютной паре GBPUSD.

Вновь имеем довольно стабильный вид кривой баланса. К тому же, количество сделок приличное - 292. Чистая прибыль наибольшая из всех результатов - 3530 долларов при максимальной просадке 991 доллар. Фактор восстановления 3.56. Прибыль достигнута тотальным превосходством потенциальной прибыли над потенциальным убытком. Средняя прибыль - 188 долларов, а средний убыток всего лишь 39 долларов. При этом даже максимальное значение убытка не дотягивает до средней прибыли (111 долларов). Итог - стоит взять на вооружение.

Последняя валютная пара - USDJPY. На ней уже получены удобоваримые результаты. Поэтому с нетерпением ждем их улучшения. Параметры такие: FastM = 7, SlowM = 51, FiboTarget = 161.8 (рис. 10).
http://www.forextrade.ru/media/Image/MQLabs/45_ag/USDJPY%20End.gif
Рис. 10. - Результаты тестирования эксперта после оптимизации на валютной паре USDJPY.

Самый лучший вид кривой баланса - это одно из заметных достижений йены. Вторым достижением является минимальное значение просадки - 329 долларов. А чистая прибыль даже превысила значение при начальном тесте - 2091 доллар. Фактор восстановления получается неприлично большим - 6.36. Поэтому итог вполне логичен - использовать всегда и везде.

Общий итог по стратегии можно подвести как никогда оптимистичный. Все валютные пары очень хорошо вписываются в концепцию, при этом не страдают от чрезмерных просадок. Поэтому советую как можно лучше приглядеться к полученному эксперту.



Доработка эксперта для работы в среде AutoGraf 4.0.
Входных параметров у эксперта довольно много. Поэтому впервые придется задействовать входные параметры AutoGraf: AT_1, AT_2, AT_3, AT_4 и AT_5. В них нужно указать те значения, которые заносились бы соответственно в FastM, SlowM, SignalM, FiboPercent и FiboTarget. Параметру DeltaStopLoss будет соответствовать значение дистанции Ds. Параметры TakeProfit и StopLoss будут все время включены. Поэтому для их отключения нужно будет указать большие значения AT_5 и Ds.

Для запуска стратегии необходимо проделать такие шаги:
Воспользоваться ссылкой Файлы стратегий для Autograf 4.0 (http://www.forextrade.ru/media/Image/MQLabs/45_ag/AG_DivergenceOnMACD.zip) и полученный архив распаковать в папку MT4\experts\libraries. Запустить AutoGraf и во входных параметрах AT_1 - AT_5 указать необходимые значения. Например, для пары EURUSD: AT_1 = 3, AT_2 = 49, AT_3 = 9, AT_4 = 50, AT_5 = 161.8. Для получения похожих результатов работы выставить объем открываемой позиции (Lots) 0.1, настроить значение Ds (DeltaStopLoss) = 1. Выбрать стратегию №3. Для этого передвинуть вверх значок So и среди названий стратегий найти S3 Запустить функцию автоматической торговли, передвинув значок AT в верхнее положение.

Советник DivergenceOnMACDFibo_Expert (http://www.forextrade.ru/media/Image/MQLabs/45_ag/DivergenceOnMACDFibo_Expert.mq4)
Файлы стратегий для Autograf 4.0 (http://www.forextrade.ru/media/Image/MQLabs/45_ag/AG_DivergenceOnMACD.zip)
Развернутые отчеты тестирования и оптимизации эксперта (http://www.forextrade.ru/media/Image/MQLabs/45_ag/Test.zip)

Использование полученного советника рекомендуется только в полуавтоматическом режиме под присмотром трейдера и после всестороннего изучения слабых и сильных сторон стратегии.

Aksin
16-12-2009, 20:01
Добрый день! У меня есть предложения по доработке советника. Первое, что нужно добавить - это перевод позиции вв безубыток при достижении ценой уровня 100%. Второе, расчет уровня отложки нужно производить не сразу при пересечении, а при появлении первого экстремума после пересечения макдом нулевой линии. И третье, фильтровать дивергенции. Советник видит любую дивергенцию, но вот торговать нужно не все. Желательно отслеживать дивергенции где макд максимально приближается к нулевой линии
http://s41.radikal.ru/i092/0912/f1/13138123bf13.png (http://www.radikal.ru)
На графике видно, что та дивергенция которую видел советник получилась убыточная, а отмеченая красными линиями принесла прибыль. Предлагаю такие мелкие дивергенции отфильтровывать, будет меньше лосей.

Вот еще один скрин, где дивергенция которая нас не должна интересовать и яркий пример пользы от перевода в безубыток
http://s16.radikal.ru/i191/0912/12/9bf53e55ca9d.png (http://www.radikal.ru)

Да, и еще забыл добавить. Нужно сделать так, чтоб скажем советник сопровождал сделку. Пример, мы задаем максимальный уровень тейкпрофита, а советник тралит цену от уровня к уровню. Дошла цена до 100% он стоп переводит в безубыток, дошла до 162 фибы - стоп на 100%, до 262 - стоп на 162 и т.д пока не дойдет до заданного максимального профита. А то получается, ганяю в тестере и вижу как сделка открылась дошла до тейка - закрылась, а цена дальше пошла.

Scriptong
16-12-2009, 21:19
Добрый день! У меня есть предложения по доработке советника. Первое, что нужно добавить - это перевод позиции вв безубыток при достижении ценой уровня 100%.

Вывести то без проблем. Но как по мне, это трусливая тактика. Дело в том, что каналы, в основном, получаются узкие. Уровень 100%, чаще всего, представляет собой уход позиции в прибыль на 10-15 пунктов. В таких случаях выгоднее закрыть позицию, чем выводить в ноль.
Кстати, вот результаты с применением перевода в БУ:
EURUSD - чистая прибыль 1351 (против первичного теста 1605), максимальная просадка 408 (562). ФВ = 3.3 (первичный 2.85)
USDCHF - чистая прибыль 110 (2279), максимальная просадка 691 (584). ФВ = 0.16 (3.9)
GBPUSD - чистая прибыль 1054 (3530), максимальная просадка 901 (991). ФВ = 1.17 (3.56)
USDJPY - чистая прибыль 1204 (2091), максимальная просадка 268 (329). ФВ = 4.49 (6.36)

Как видно, положительный эффект наблюдается только по EURUSD. Но он все равно незначительный и объясняется изначально малой целью сделок (161.8). Во всех остальных случаях придвинутый стоп мешает достижению намеченных целей. Исходник эксперта прикреплен.



Второе, расчет уровня отложки нужно производить не сразу при пересечении, а при появлении первого экстремума после пересечения макдом нулевой линии.

Это можно попробовать, но вход получится слишком оттянутым. К сожалению, на скорую руку это, как в случае со стопом, не получится. Слишком много изменений нужно произвести в алгоритме.



И третье, фильтровать дивергенции. Советник видит любую дивергенцию, но вот торговать нужно не все. Желательно отслеживать дивергенции где макд максимально приближается к нулевой линии

Программирование не терпит размытых формулировок. Что значит "максимально приближается"? Нужна четкая формулировка или, на худой конец, цифра. Я сознательно упустил этот момент в стратегии, так как не смог найти для него приемлемого четкого описания.



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

То же самое - как определить мелкая дивергенция или крупная?




Вот еще один скрин, где дивергенция которая нас не должна интересовать и яркий пример пользы от перевода в безубыток

Здесь вы перепрыгнули через положительное значение MACD и взяли экстремумы от разных отрицательных зон. Пока налицо субъективное построение дивергенции, которое неясно, как загнать в правило.
Хотя, возможно, я чего-то не понимаю. Сформулируйте это правило и я попробую его формализовать.

Aksin
16-12-2009, 21:35
Здесь вы перепрыгнули через положительное значение MACD и взяли экстремумы от разных отрицательных зон. Пока налицо субъективное построение дивергенции, которое неясно, как загнать в правило.
Хотя, возможно, я чего-то не понимаю. Сформулируйте это правило и я попробую его формализовать.

Давайте сделаем правило для дивергенции - это касание макдом нулевой линии. Как на самом первом скрине.
И еще вопрос, я не нашел в ваших статьях как сделать оптимизацию советника. Я не сильно в этом разбираюсь, подскажите где именно прочитать.

Scriptong
17-12-2009, 14:29
Давайте сделаем правило для дивергенции - это касание макдом нулевой линии. Как на самом первом скрине.

Вот именно этот момент меня и интересует. Как советник должен определить, что MACd коснулся нуля? Дело в том, что значение MACD = 0 бывает крайне редко. Это означает, что средние, на основании которых вычисляется MACD, имеют равные значения.

В результате, "MACD коснулся нуля" можно создать лишь искусственно. Это момент, когда гистограмма не пересекла ноль, но имела очень малое значение. Вот в этом "очень малом значении" вся загвоздка. Для определения "очень малого числа" (в математике, правда, есть такой термин - бесконечно малая величина, но с ней никаких численных действий совершить невозможно) нужно принять какое-то число, меньше которого будет считаться, что MACD равен 0.



И еще вопрос, я не нашел в ваших статьях как сделать оптимизацию советника. Я не сильно в этом разбираюсь, подскажите где именно прочитать.
О том, как правильно производить оптимизацию, было рассказано в статьях "Поймать разворот тренда".
Если же вы имеете в виду непосредственно техническую часть (на какие кнопки нажимать и что ставить в параметрах), то об этом я писал еще в прошлом году в 38-ом выпуске журнала Fortrader.ru, стр. 42 (http://finfile.ru//index.php/files/get/eXCWq75RG6/ft291208.zip)

Aksin
17-12-2009, 21:18
Вот именно этот момент меня и интересует. Как советник должен определить, что MACd коснулся нуля? Дело в том, что значение MACD = 0 бывает крайне редко. Это означает, что средние, на основании которых вычисляется MACD, имеют равные значения.

В результате, "MACD коснулся нуля" можно создать лишь искусственно. Это момент, когда гистограмма не пересекла ноль, но имела очень малое значение. Вот в этом "очень малом значении" вся загвоздка. Для определения "очень малого числа" (в математике, правда, есть такой термин - бесконечно малая величина, но с ней никаких численных действий совершить невозможно) нужно принять какое-то число, меньше которого будет считаться, что MACD равен 0.

К сожалению я не понимаю в этих чмслах практически ни чего, по этому с числом мне трудно определиться. Как у него там числовой ряд идет? .....-3-2-1 0-1 2 3.....
Или можно к примеру этот параметр вынести в настройки советка для изменения при оптимизации.

Scriptong
18-12-2009, 13:37
К сожалению я не понимаю в этих чмслах практически ни чего, по этому с числом мне трудно определиться. Как у него там числовой ряд идет? .....-3-2-1 0-1 2 3.....
Или можно к примеру этот параметр вынести в настройки советка для изменения при оптимизации.

С числами вы сами можете определиться, просто посмотрев на значения гистограммы MACD. Они зависят от разрядности валютной пары.
В принципе, можно привязаться к пунктам и считать приближением к нулю значение, которое меньше одного пункта. Но в любом случае, это уже искусственное условие. Я почему на него так и обращаю внимание, что во многих случаях визуально MACD приближается к нулю, а на самом деле его значение - десятки пунктов. То есть дело уже просто в масштабе и попытка загнать значение в рамки, как минимум, нелогична.

Aksin
18-12-2009, 14:51
Вы наверное правы, дивергенции не бывают одинаковы и заганять в жесткие рамки смысла нет. Согласен с вашим мнением. Разобрался с оптимизацией наконец то, благодаря вашим статьям. Теперь осталось сделать оптимизацию на всех парах и ставить на реалтайм на прогон. Спасибо Вам за уделенное внимание.

Scriptong
21-12-2009, 09:10
Вы наверное правы, дивергенции не бывают одинаковы и заганять в жесткие рамки смысла нет. Согласен с вашим мнением. Разобрался с оптимизацией наконец то, благодаря вашим статьям. Теперь осталось сделать оптимизацию на всех парах и ставить на реалтайм на прогон. Спасибо Вам за уделенное внимание.

Оптимизация советника уже произведена, о чем написано в самой статье. Уже все подобрано и с этими настройками советника можно приступать к тестам онлайн на демо-счете.

Будут вопросы, обязательно обращайтесь. Произвести полноценный онлайн-тест всех разрабатываемых советников у меня просто нет возможности. Поэтому при выявлении ошибок или недочетов можно смело сюда писать, будем вместе разбираться.

Aksin
29-12-2009, 16:00
Уважаемый Scriptong! В процессе теста на демке на 10 парах, на двух тайм фреймах, у советника слетели настройки на второй неделе тестирования. Первую неделю было все нормально, были сделки с положительным результатом, потом пошли минуса, я сразу не обратил внимания, ну думаю посмотрю еще. Потом пошли одинаковые сделки и тут я решил заглянуть в настройки. Все настройки сбились на настройки по умолчанию, все магик номера тоже. Я в настройки на лазил это 100% гарантии, к компу ни кто доступа не имеет. От чего такое могло произойти?

Scriptong
29-12-2009, 20:13
Уважаемый Scriptong! В процессе теста на демке на 10 парах, на двух тайм фреймах, у советника слетели настройки на второй неделе тестирования. Первую неделю было все нормально, были сделки с положительным результатом, потом пошли минуса, я сразу не обратил внимания, ну думаю посмотрю еще. Потом пошли одинаковые сделки и тут я решил заглянуть в настройки. Все настройки сбились на настройки по умолчанию, все магик номера тоже. Я в настройки на лазил это 100% гарантии, к компу ни кто доступа не имеет. От чего такое могло произойти?
Само по себе это, действительно, не могло произойти. Но и в настройки для этого было лезть необязательно. Достаточно было перекомпилировать советника.
Такое могло быть сделано как вручную, так и автоматически. Вручную, думаю, вы и сами заметили, когда это делали. Автоматически же это могло произойти при удалении или повреждении файла советника ex4. В этом случае при очередном запуске терминала имеющийся исходник компилируется заново.

Aksin
30-12-2009, 10:22
Тогда такой вопрос. У меня несколько терминалов, в том терминале в котором торговал советник я не ковырялся в коде, а вот в другом терминале да. Я закинул советник в два терминала и во втором уже эксперементировал и естественно компилировал измененые варианты. Возможно это как-то повлияло? Понаблюдаю еще. Спасибо за ответ.

Scriptong
30-12-2009, 13:00
Тогда такой вопрос. У меня несколько терминалов, в том терминале в котором торговал советник я не ковырялся в коде, а вот в другом терминале да. Я закинул советник в два терминала и во втором уже эксперементировал и естественно компилировал измененые варианты. Возможно это как-то повлияло? Понаблюдаю еще. Спасибо за ответ.
Автоматическая торговля требует повышенного внимания со стороны трейдера. В этом случае, конечно, нужно выделять отдельный терминал для тестирования и отдельный для программирования. По крайней мере, у меня именно так и делается. Еще лучше разносить рабочий и тест-терминалы на разные компьютеры.

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

s2101-1
03-01-2010, 14:58
Полезным можно назвать всего два типа дивергенции:
Показания индикатора уменьшаются, а цена при этом продолжает восходящее движение. В таких случаях стоит готовиться к осуществлению продаж.
Показания индикатора растут, а цена продолжает нисходящее движение. В таких случаях необходимо рассматривать возможность покупок.
Оставшиеся два варианта дивергенции (рост индикатора при падении цены и падение индикатора при росте цены) практического применения не имеют, так как в данном случае мы наблюдаем самый большой недостаток абсолютно всех индикаторов - запаздывание. Запаздывание происходит по той простой причине, что первичной все же является цена, в то время как любой индикатив всего лишь производная от цены.

В корне неверное утверждение. Рассматривать нужно не два, а четыре равноправные вида сигналов, - сигналы дивергенции (или конвергенции) против тренда (классические первые два графика- пунктирные линии) и сигналы дивергенции (или конвергенции) по тренду (последние два графика - белые линии).

http://sk-fx.com/system/1-1.png

В первых двух вариантах будущее направление ценового графика совпадает с направлением линии дивергенции/конвергенции на индикаторе, т.е. направлено против тренда (сигналы против тренда).
В последних двух вариантах будущее направление ценового графика совпадает с направлением линии дивергенции/конвергенции на ценовом графике, т.е. направлено по тренду (сигналы по тренду).
Хорошим индикатором дивергенции является не MACD (это больше трендовый индикатор), а MACD_H (в МТ 4 - OsMA). Желательно не в гистограммном, а в линейном варианте.
Сигналы дивергенции (конвергенции) опережающие и выполняются всегда. На текущей цене сигнал дивергенции (конвергенции) не является сигналом разворота, - это сигнал будущего разворота (тренда или на коррекцию). Исполнение сигнала начнется при сигнале дивергенции (конвергенции) на этом ТФ и одновременном наличии сигналов дивергенции (конвергенции) на всех младших ТФ. Отсюда недостатки советников, работающих на этом принципе.
У сигналов дивергенции (конвергенции) есть еще много не документированных ранее особенностей.

Scriptong
03-01-2010, 17:24
В корне неверное утверждение. Рассматривать нужно не два, а четыре равноправные вида сигналов, - сигналы дивергенции (или конвергенции) против тренда (классические первые два графика- пунктирные линии) и сигналы дивергенции (или конвергенции) по тренду (последние два графика - белые линии).


Прошу быть внимательнее. Я рассматривал именно дивергенции. О конвергенции не было сказано ни слова.



Хорошим индикатором дивергенции является не MACD (это больше трендовый индикатор), а MACD_H (в МТ 4 - OsMA). Желательно не в гистограммном, а в линейном варианте.

"Хорошесть" индикатора определяется двумя критериями:
Лучшими результатами торговли по сравнению с другими индикаторами Личными предпочтениями трейдера


Поэтому доказуемым является только первый пункт, по которому никаких результатов предъявлено не было.


У сигналов дивергенции (конвергенции) есть еще много не документированных ранее особенностей.
Никто не спорит. Типов и возможностей дивергенций существует очень много. Рассматривать их все не входило в возможности одной статьи. Возможно, что-то еще будет рассмотрено в будущем.

s2101-1
04-01-2010, 09:01
Прошу быть внимательнее. Я рассматривал именно дивергенции. О конвергенции не было сказано ни слова.

Почему же? Я очень внимателен.
1. Показания индикатора уменьшаются, а цена при этом продолжает восходящее движение. В таких случаях стоит готовиться к осуществлению продаж.
Это сигнал против восходящего тренда, - именно дивергенция (расхождение).
2.Показания индикатора растут, а цена продолжает нисходящее движение. В таких случаях необходимо рассматривать возможность покупок.
A это сигнал против нисходящего тренда, - именно конвергенция (схождение).
Сигналы по тренду на восходящем тренде (тоже дивергенция) и на нисходящем тренде (тоже конвергенция) вы не затрагивали.

"Хорошесть" индикатора определяется двумя критериями:
Лучшими результатами торговли по сравнению с другими индикаторами Личными предпочтениями трейдера

Правильно. А лучшие результаты у MACD_H, он более точный.
Предпочтение же, - чисто субъективрый фактор.

Никто не спорит. Типов и возможностей дивергенций существует очень много.
Но нельзя забывать главную особенность. Дивергенция (конвергенция)-это только сигнал будущего разворота ценового графика и не несет никакой информации о продолжительности и амплитуде движения после разворота. Сигнал выполнен, как только направление движения изменилось. Поэтому ваш вход на покупку выполнен неверно, - сигнал конвергенции давно отработал и вы с одинаковым успехом могли получить как прибыль, так и убыток.
На графиках ниже MACD и MACD_H. На MACD_H зеленая линия, - это MACD. Видно, кто из них точнее генерирует сигналы любого направления.

http://sk-fx.com/system/1-2.png

Scriptong
05-01-2010, 07:36
2.Показания индикатора растут, а цена продолжает нисходящее движение. В таких случаях необходимо рассматривать возможность покупок.
A это сигнал против нисходящего тренда, - именно конвергенция (схождение).


Не нужно додумывать того, чего я не писал.


Правильно. А лучшие результаты у MACD_H, он более точный.

Снова какая-то бездоказательность... Где эти "лучшие результаты"?



Поэтому ваш вход на покупку выполнен неверно

Да, неверен. И итоговая прибыль получена неверно. ;)

На рынке существует один критерий "правильности" - заработок. Если вы получили прибыль, то вы правы. Если получили убыток - вы неправы.

Науки и теории, о которых вы пытаетесь спорить, это всего лишь иллюзия. Это не математика и не физика, где все давно доказано и разложено по полочкам. Технический анализ не имеет абсолютных постулатов. Он всего лишь ищет закономерности, которые не обязаны таковыми быть. Поэтому о любой торговой системе нельзя сказать зараннее, что она "неправильная". Об этом можно судить только со временем.

s2101-1
05-01-2010, 17:51
Не нужно додумывать того, чего я не писал.
Я и не додумываю, вы просто перепутали конвергенцию с дивергенцией. Ниже я показал, в чем разница между дивергенцией и конвергенцией.

http://sk-fx.com/images/1.png

А ниже ваш рисунок с конвергенцией (рядом с вашими линиями я показал жирными линиями), где вы утверждаете, цитирую: "Вертикальными черными линиями показаны две точки, по которым была определена дивергенция."

http://sk-fx.com/images/2.gif


Да, неверен. И итоговая прибыль получена неверно.
На этот раз вам повезло. На следующий раз при таком входе не повезет.


Технический анализ не имеет абсолютных постулатов.
В любом случае определения путать не стоит.
С MACD_H, если захотите, разберетесь (если не перепутаете).

Scriptong
06-01-2010, 07:24
Я и не додумываю, вы просто перепутали конвергенцию с дивергенцией. Ниже я показал, в чем разница между дивергенцией и конвергенцией.
Это старый журналистский прием - выдернуть слова из контекста и представить их в нужном виде. В целом статья рассматривала именно дивергенцию. Приведенный вами вариант как раз был отброшен.



На этот раз вам повезло. На следующий раз при таком входе не повезет.

То есть в вашем определении везение - это систематическое повторение более двухсот раз подряд? Я же не предлагаю вам использовать эту систему. Пользуйтесь той, которая вам больше по душе.



В любом случае определения путать не стоит.
С MACD_H, если захотите, разберетесь (если не перепутаете).
Еще раз повторяю - использование того или иного индикатора является личным предпочтением трейдера. Если же вы хотите доказать, что MACD_H такой хороший, то приведите неголословные утверждения. А то выходит, что я сам должен себе что-то доказывать.
А строить дивергенции можно на любом осцилляторе - RSI, RVI, ADX, Stochastic и т. д. И не думаю, что результат будет хуже.

s2101-1
06-01-2010, 16:35
Это старый журналистский прием - выдернуть слова из контекста и представить их в нужном виде. В целом статья рассматривала именно дивергенцию. Приведенный вами вариант как раз был отброшен.
Я ничего не выдергивал (прочитайте ваш пост #1). Хотя сигналы дивергенции (конвергенции) на MACD можно (и нужно) использовать в торговле, то, что вы показали в #1, никакого отношения к торговле с использованием сигналов дивергенции (конвергенции) не имеет, так как именно эти сигналы вами проигнорированы.

Если же вы хотите доказать, что MACD_H такой хороший, то приведите неголословные утверждения. А то выходит, что я сам должен себе что-то доказывать.
Я не собираюсь ничего доказывать, просто продемонстрирую.

Что касается MACD_H, то правила работы по его сигналам показаны на графике ниже. (На линейном индикаторе это более наглядно видно, - фиолетовая линия). Сигналы разворотов тренда или на коррекцию генерируются дивергенцией (конвергенцией) его линий или при достижении линиями границы окна. Нулевая линия индикатора игнорируется.
При неясной ситуации на тайм-фрейме она уточняется на младшем ТФ(ситуация на Н4 (в овале) уточняется на Н1 (в овале).
Видно, что на графике индикатора требуется трендовая индикация.

http://sk-fx.com/images/3.png

Дивергенция (конвергенция), - сигнал опережающий и не является сигналом разворота на текущей цене. Это сигнал будущего разворота . Разворот на любом ТФ подтверждается началом исполнения сигнала Д/К на младшем тайм-фрейме, который, в свою очередь, подтверждается началом исполнения на еще младшем тайм-фрейме, и .т.д.
От начала генерации сигнала Д/К до начала его исполнения, как правило, проходит 2-3 бара.

Классы дивергенции (конвергенции) по общепринятой классификации в классическом теханализе.

http://sk-fx.com/images/6.png

Все сигналы равноправны!!! Значимость сигналов дивергенции (конвергенции) зависит не от внешнего вида (формы) этих сигналов, а от места их генерации в волновой структуре!!! Теханализ ошибался. (Каждый может это проверить).

О выполненной и сломанной дивергенции.
Почему-то многие считают, что по сигналу дивергенции/конвергенции развернуться должен именно тренд. Не развернуться, например на внутриструктурную коррекцию, а именно развернуться должен тренд. А если по сигналу дивергенции выполнена коррекция и тренд продолжил движение в прежнем направлении, то дивергенция, мол, "ложная" или "сломана".
Недоразумение возникает из-за отсутствия определения понятия "выполненная и "сломанная" дивергенция.
Любой термин, во избежание разночтения, должен иметь однозначное определение.
Сформулируем определение: сигнал дивергенции (или конвергенции) выполнен, если направление движения ценового графика изменилось в сторону, определенную этим сигналом. При таком подходе отпадает само понятие "сломанной" дивергенции, а вместе с ним и недоразумение.
Сигнал дивергенции (или конвергенции) является только сигналом будущего изменения направления ценового движения и не несет никакой информации ни о продолжительности, ни об амплитуде ценового движения после изменения направления этого движения. На эти вопросы может ответить волновой анализ или ранг тайм-фрейма, на котором сгенерирован сигнал.

Многократная дивергенция
При многократных дивергенциях/конвергенциях каждая из них выполнилась, иначе не было бы следующей.
Сигнал разворота предыдущего тренда вниз (локальная дивергенция), - желтые линии.
На нисходящем тренде Daily 5-кратная конвергенция против тренда, 4-кратная конвергенция по тренду , 2-кратная дивергенция (светло-голубые линии на ценовом графике). На трендовом осцилляторе (светло-голубая линия, MACD) внизу конвергенция, - тренд разворачивается вверх. Это же сигнализирует и классическое "тройное дно".
Сравнение пиков может быть не только над или под нулевой линией индикаторов (фиолетовые линии).
Абсолютно все сигналы дивергенции (конвергенции) выполнились.
Переломы тренда при схождении линий трендовых индикаторов вверху/внизу окна индикаторов.
Сигналы дивергенции/конвергенции одинаково работают на любом тайм-фрейме.

http://sk-fx.com/images/4.png

Интерпретация (толкование) сигналов дивергенции.
Ниже на графике М15 сигналы общей конвергенции - длинные желтые линии, фиолетовые, голубые, зеленые и красные линии. Из них длинные желтые и голубые линии -"идеальные" сигналы входа/добавления позиции (сигналы по тренду).
Короткие желтые линии, - сигналы локальной конвергенции и 2 сигнала локальной дивергенции; - точные (в пределах тайм-фрейма) моменты разворота.
Все сигналы выполнились.

http://sk-fx.com/images/5.png

О практической точной работе с индикаторами тренда и индикаторами дивергенции можно прочитать в моих статьях. Их около двух десятков.

Сергей Кучер

Scriptong
06-01-2010, 21:00
О практической точной работе с индикаторами тренда и индикаторами дивергенции можно прочитать в моих статьях. Их около двух десятков.

Ну что же, вот мы и добрались до сути. Речь, оказывается, идет о рекламе. Ну и ладно, каждый в этом мире выживает по-своему.
Я ни в коей мере не собираюсь оспаривать ваши труды. В рамках же моих статей не производится углубление в каждую конкретную методику. Поэтому не удивительно, что многие нюансы попросту опущены. Целью статей является показ разнообразия стратегий и методы их формализации.

К тому же, стоит учитывать, что на любую стратегию я смотрю сквозь призму личного восприятия, которое у каждого человека свое. То есть говорить о "правильности" или "неправильности" трактовки дивергенции не имеет никакого смысла. Это понятие не является догмой, оно не возведено в научный ранг и каждый волен трактовать его по-своему. Загонять понимание рынка в какие-то стандартные общепринятые рамки - глупо. Его можно победить только нестандартным подходом.

s2101-1
07-01-2010, 10:27
Ну что же, вот мы и добрались до сути. Речь, оказывается, идет о рекламе.
Это по вашему мнению. Я же в рекламе не нуждаюсь.

Загонять понимание рынка в какие-то стандартные общепринятые рамки - глупо. Его можно победить только нестандартным подходом.
Я и показал нестандартный подход, позволяющий очень точно прогнозировать поведение рынка. И уж явно не в общепринятыхрамках. (В общепринятых рамках гуру теханализа ошибались в течение нескольких десятилетий).
Сигналы дивергенции (конвергенции) отнюдь не миф, а чрезвычайно точный прогностический инструмент в умелых руках. Точно так же эти сигналы работают и в трендовой индикации. Применение этого инструмента позволяет также практически устранить главный недостаток волнового анализа, - его неоднозначность. Более точного инструмента в техническом анализе нет.

Scriptong
08-01-2010, 13:46
Я и показал нестандартный подход, позволяющий очень точно прогнозировать поведение рынка. И уж явно не в общепринятыхрамках. (В общепринятых рамках гуру теханализа ошибались в течение нескольких десятилетий).
Сигналы дивергенции (конвергенции) отнюдь не миф, а чрезвычайно точный прогностический инструмент в умелых руках. Точно так же эти сигналы работают и в трендовой индикации. Применение этого инструмента позволяет также практически устранить главный недостаток волнового анализа, - его неоднозначность. Более точного инструмента в техническом анализе нет.

Вновь вы голословны. Если приведенные вами методики такие точные, то почему вы не создали по ним советника? Выложив результаты теста такого советника можно уже говорить об успешности стратегии.

Если же методика не поддается формализации, а может быть использована лишь в качестве подсобного инструмента трейдера, то стратегия абсолютно здесь неинтересна, так как умелый трейдер сможет успешно торговать и на пересечении МАшек.

s2101-1
08-01-2010, 17:13
Вновь вы голословны. Если приведенные вами методики такие точные, то почему вы не создали по ним советника? Выложив результаты теста такого советника можно уже говорить об успешности стратегии.

Если же методика не поддается формализации, а может быть использована лишь в качестве подсобного инструмента трейдера, то стратегия абсолютно здесь неинтересна, так как умелый трейдер сможет успешно торговать и на пересечении МАшек.
Странный вы человек однако. Похоже, кроме "голословно", других слов у вас нет. Речь шла о дивергенции. Я показал, что, выражаясь вашими словами, вы голословны в этом вопросе, т.е. совершенно не владеете предметом. И ничего удивительного в этом нет, так как утверждения технического анализа в этом предмете ошибочны десятилетиями, а фундаментальные исследования выполнил я только несколько лет назад.

И почему, собственно, я должен создавать советник и выкладывать результаты тестов? Мне он не нужен.
А если умелый трейдер может успешно торговать и на пересечении МАшек, то пусть торгует. Кто ж ему мешает?
Тема, начатая вами в этой ветке, называется: "Дивергенция. Миф или полезный инструмент?" По этой теме я и высказывался, - это чрезвычайно полезный инструмент.

Scriptong
08-01-2010, 19:39
Странный вы человек однако. Похоже, кроме "голословно", других слов у вас нет. Речь шла о дивергенции. Я показал, что, выражаясь вашими словами, вы голословны в этом вопросе, т.е. совершенно не владеете предметом. И ничего удивительного в этом нет, так как утверждения технического анализа в этом предмете ошибочны десятилетиями, а фундаментальные исследования выполнил я только несколько лет назад.
Вижу, что скромность не ваша добродетель;)

Голословно - значит, не приводя фактов. Вы утверждаете, что все имеющиеся представления о дивергенции ошибочны. Но любое утверждение должно подкрепляться фактами, если человек не желает прослыть болтуном. Любая теорема в любой науке имеет свое доказательство. К сожалению, теханализ такая наука, в которой доказательства не могут быть приведены при помощи формул. Они могут быть приведены лишь в одной форме - результатах успешной торговли. То есть для определения лучшей стратегии требуется сопоставление результатов торговли на основании нескольких тактик за одинаковый исторический период.

Чтобы не тратить годы на проведение онлайн-соревнований уже давно изобретен такой метод, как тестирование стратегий на исторических данных. Это можно осуществить только запрограммировав стратегию.



И почему, собственно, я должен создавать советник и выкладывать результаты тестов? Мне он не нужен.

Тогда о чем весь сыр-бор? Вы пришли, сказали: "Все это неправильно, а как правильно я вам не скажу, мне это незачем". Вот в чем проблема.



По этой теме я и высказывался, - это чрезвычайно полезный инструмент.
Поразительно, но точно такой же вывод сделан в конце статьи!

s2101-1
09-01-2010, 10:16
Глухому рассказывать, слепому показывать бесполезно.
Если захотите, прочитаете.

Scriptong
10-01-2010, 16:20
Глухому рассказывать, слепому показывать бесполезно.
Если захотите, прочитаете.

Что я должен, по-вашему, прочитать? Насколько я понимаю, вы говорите, что существующее понятие дивергенции в корне неверно. Я спросил: "Как вы определили, что верно именно то, о чем вы рассказываете?" И предложил единственный видимый мною метод определения (то есть доказательства) истинности вашего утверждения.

Именно на этот вопрос вы так и не ответили. Если вам известны другие методы определения (доказательств), то прошу, приведите их.

Другого контекста нашей дискуссии я не вижу.

simplesimple
08-03-2010, 10:15
сегодня по паре GBPUSD выставляет что позиция SELLLIMIT открыта успешно, хотя потом не выполнил, и нет записи что закрыл или изменил?!?!

Scriptong
09-03-2010, 06:11
сегодня по паре GBPUSD выставляет что позиция SELLLIMIT открыта успешно, хотя потом не выполнил, и нет записи что закрыл или изменил?!?!

Давайте как то яснее выражаться. Что значит "выставляет, что позиция SELLLIMIT открыта успешно, хотя потом не выполнил"?

simplesimple
18-03-2010, 10:05
все нормально разобрался...
стабильная стратегия!!! (пока что..)

Scriptong
18-03-2010, 16:00
Да, я считаю ее лучшей из реализованных мною на сегодняшний день. В ближайшем будущем планирую запустить на микро-счете.

est1958
14-04-2010, 21:24
Глухому рассказывать, слепому показывать бесполезно.
Если захотите, прочитаете.

покажите хоть одну сделку на графике

est1958
17-04-2010, 19:15
какое подтверждение?

simplesimple
18-04-2010, 09:08
какое подтверждение?

судя по линиям это шорт

Scriptong
19-04-2010, 12:42
судя по линиям это шорт

Насколько я понимаю, вопрос относился конкретно к s2101-1.

est1958
20-04-2010, 02:13
да если начинать говорить то до конца

est1958
20-04-2010, 03:29
у нас 3 дивергенции ,какая из них отработала , или они все отработали. а точность можно подрегулировать

Scriptong
20-04-2010, 20:04
В подобных вещах особой точности искать не стоит. Единственное, что можно привести с какой-то точностью - статистические данные. Все остальное приходится подбирать.
В приведенном случае советником будет зафиксирована только одна дивергенция, отвечающая каким-то определенным параметрам.

est1958
21-04-2010, 18:33
извини, немного порисовал, я бы вошел здесь по крюку Росса 1.2.3.паттерн+ крюк.Buob перекрыл предыдущее падение ,Buy stop там же

est1958
21-04-2010, 18:36
извини, немного порисовал, я бы вошел здесь по крюку Росса 1.2.3.паттерн+ крюк.Buob перекрыл предыдущее падение ,Buy stop там же правильнее крюк на вершине а вход по хитрости трейдера

est1958
26-04-2010, 16:46
D/K,,,,,покажи хотя бы одну точку выставления,

est1958
26-04-2010, 18:16
смена High/Low,,,,уверен что на каком нибудь индикаторе будет дивергенция или конвергенция

Scriptong
27-04-2010, 18:06
смена High/Low,,,,уверен что на каком нибудь индикаторе будет дивергенция или конвергенция

Это уж совсем общее выражение:) Если диапазон поисков не ограничивать одним индикатором и при этом экспериментировать с параметрами, то можно сказать, что дивергенция/конвергенция существует в любой момент времени.

est1958
27-04-2010, 19:15
4.03.2010. На http://rutracker.org/forum/viewtopic.php?t=2795767 кто-то выложил материалы по ТС SK-FX от моего имени под ником s2101.
Я никогда никакие материалы в сеть не выкладывал и не собираюсь, - иногда могу оставить только пост на каком-нибудь форуме.
Впредь несанкционированные выкладки материалов в сеть от моего имени будут преследоваться.
От своего имени можете выкладывать любые материалы по системе SK-FX (кроме Real SK-FX) со ссылкой на источник.

est1958
27-04-2010, 19:24
Это уж совсем общее выражение:) Если диапазон поисков не ограничивать одним индикатором и при этом экспериментировать с параметрами, то можно сказать, что дивергенция/конвергенция существует в любой момент времени.

согласен, но всетаки основной сигнал идет от цены, нашел по моему подходящий пример.

icas
28-04-2010, 09:57
доброе время суток!
я вхожу в рынок тоже по диверам , но с такой конструкцией
http://i015.radikal.ru/1004/5f/d7089145558e.jpg, использую три индикатора - фишер, макд и супер сигнал. Когда появляются 2 стрелки и дивера = вход в рынок. Можно ли по такой конструкции написать советник ?

Scriptong
28-04-2010, 11:23
На первый взгляд, можно. Остальное уже в деталях.

icas
30-04-2010, 19:34
По диверам я работаю давно , читала статью по классификации диверов и стала пользоваться. Заметила что не всегда они дают правильные входы и для того чтобы фильтровать ложные от истинных добавила к макд с параметрами 8,12,5 еще индикатор "фишер" . Получилось очень интересно , если разнобой в диверах, то стоим по тренду, если смотрят правильно входим в рынок. Потом добавила индикатор "супер сигнал", правда им я не очень довольна , так он при импульсе перерисовывает стрелки, но если устаканились и появились 2 стрелки без противоходных и дивера правильно смотрят , то вход в рынок правильный, Но таких надежных входов мало, но зато они дают профит.
http://s003.radikal.ru/i204/1004/a6/7cd7b8e6e73b.jpg
http://i076.radikal.ru/1004/83/cca536fb61c4.jpg
однобой стала отмечать желтыми линиями, а разнобой розовыми.
Вход в рыноу делаю по еще одному индикатору его про себя зову светофором , вот когда желтая переходит в красную или зеленую вот тогда и вхожу.
Но если однобоя в диверах нет , но есть стрелки входа нет
http://i082.radikal.ru/1004/7f/6ac813825c13.jpg
Получается надо учесть следующие факторы - 1. правильность диверов 2. 2 стрелки одинаковые
вот тогда и вход в рынок , ну и выход когда сложатся такие же условия только наоборот

icas
30-04-2010, 19:38
все индикаторы могу скинуть , они самые простые . Конструкция надежная, главное достоинство фильрация правильных и ложных входов. Сделок будет немного, он они будут надежными

Scriptong
03-05-2010, 09:19
По диверам я работаю давно , читала статью по классификации диверов и стала пользоваться. Заметила что не всегда они дают правильные входы и для того чтобы фильтровать ложные от истинных добавила к макд с параметрами 8,12,5 еще индикатор "фишер" . Получилось очень интересно , если разнобой в диверах, то стоим по тренду, если смотрят правильно входим в рынок. Потом добавила индикатор "супер сигнал", правда им я не очень довольна , так он при импульсе перерисовывает стрелки, но если устаканились и появились 2 стрелки без противоходных и дивера правильно смотрят , то вход в рынок правильный, Но таких надежных входов мало, но зато они дают профит.
http://s003.radikal.ru/i204/1004/a6/7cd7b8e6e73b.jpg
http://i076.radikal.ru/1004/83/cca536fb61c4.jpg
однобой стала отмечать желтыми линиями, а разнобой розовыми.
Вход в рыноу делаю по еще одному индикатору его про себя зову светофором , вот когда желтая переходит в красную или зеленую вот тогда и вхожу.
Но если однобоя в диверах нет , но есть стрелки входа нет
http://i082.radikal.ru/1004/7f/6ac813825c13.jpg
Получается надо учесть следующие факторы - 1. правильность диверов 2. 2 стрелки одинаковые
вот тогда и вход в рынок , ну и выход когда сложатся такие же условия только наоборот
Среди приведенных примеров я вижу лишь один четко формализуемый случай - с австралийцем. И то там вход можно было осуществлять на семь баров раньше. Причем открытие сделки мне видится только на основании Фишера. МАСД в данном случае показывает схождение с ценой (конвергенцию), что мной не рассматривается в качестве сигнала.

По йене вообще трудно что-либо говорить, так как, например, не понятно, на каком основании строилась средняя желтая линия на графике цены.

В случае с фунт-йеной налицо полный субъективизм, так как все линии построены не по последним показаниям индикаторов. Такой подход уж точно запрограммировать невозможно. Вот когда техника доберется до моделирования человеческого поведения, тогда будет возможно.

icas
04-05-2010, 13:29
вот в данный момент есть сигнал на покупку фунтика по м15
http://s13.radikal.ru/i186/1005/65/81d2f9d46461.jpg

Scriptong
04-05-2010, 20:58
вот в данный момент есть сигнал на покупку фунтика по м15
http://s13.radikal.ru/i186/1005/65/81d2f9d46461.jpg

Ну что же, дивергенции тоже не всегда правы. Тут уже нужно смотреть, где был поставлен стоп.

est1958
07-05-2010, 17:09
игра против тренда

Galion
09-01-2011, 19:36
Приветствую!
// - 3 - ==== Нахождение максимального/минимального значения после экстремума MACD ======
if (Type > 0) // если MACD больше 0
{
HighBar = iHighest(Symbol(), 0, MODE_HIGH, i);// индекс бара с макс значением на чарте?
CurHigh = High[HighBar];//ценовое значение
LowBar = iLowest(Symbol(), 0, MODE_LOW, HighBar);// ?
CurLow = Low[LowBar];
}

if (Type < 0)
{
LowBar = iLowest(Symbol(), 0, MODE_LOW, i);
CurLow = Low[LowBar];
HighBar = iHighest(Symbol(), 0, MODE_HIGH, LowBar);
CurHigh = High[HighBar];
}
// - 3 - ====================== Окончание блока =========================================

return(True);
}
В этом месте кода буксую. Если не трудно, поясните.

Scriptong
11-01-2011, 16:53
В этом месте кода буксую. Если не трудно, поясните.

Здравствуйте.

В каждом из случаев находятся номера баров с максимальным и минимальным значением в диапазоне i баров и HighBar/LowBar баров, начиная от текущего.