АмиБрокер. Подсчет волн 1-2-3
Модифицированный зигзагообразный индикатор «максимум-минимум», который основан на процентном изменении цены и измерении волатильности на основе ATR.
Here are all the parameters I use:
- ZZPercent = 5: использованный процент зигзага (значение по умолчанию 5)
- ATRPeriod = 5: период ретроспективного анализа ATR (по умолчанию 5)
- ATRFactor = 1.5: коэффициент умножения ATR (по умолчанию 1,5)
- zigZagColor = Color.DodgerBlue: цвет по умолчанию, используемый для зигзага
- linewidth = 1: ширина линии зигзага
- trend: тренд текущей зигзагообразной линии (1 = вверх, -1 = вниз)
- lhb: последнее максимальное количество баров с момента последнего максимума колебания
- uplineid: lимя последнего использованного идентификатора строки
- llb: количество последних минимальных баров с момента последнего минимума колебания
- downlineid: последнее использованное имя идентификатора нисходящей линии
- hh: новый высокий максимум
- ll: новый нижний минимум
- HLPivot: уровень разворота high-low.
Формула индикатора The 1-2-3 Wave Count
ZZPercent = Param("ZZPercent", 5 ); ATRPeriod = Param("ATRPeriod", 5 ); ATRFactor = Param("ATRFactor", 1.5, 0, 5 ); HLPivot = ZZPercent * 0.01 + ATRFactor * ATR( ATRPeriod )/Close; Ll = Low[ 0 ]; Hh = High[ 0 ]; Llb = Lhb = 0; if( High[ 1 ] >= Hh ) { Hh = High[ 1 ]; Lhb = trend = 1; } else { Ll = Low[ 1 ]; Llb = 1; trend = -1; } Line = Null; for( i = 2; i < BarCount; i++ ) { if( trend > 0 ) { if( High[ i ] >= Hh ) { Hh = High[ i ]; Lhb = i; Curline = LineArray( Llb, Ll, Lhb, Hh ); Line = IIf( IsNull( CurLine ), Line, CurLine ); } else if( Low[ i ] < Hh - Hh * HLPivot[ i ] ) { Ll = Low[ i ]; Llb = i; trend = -1; CurLine = LineArray( Lhb, Hh, Llb, Ll ); Line = IIf( IsNull( CurLine ), Line, CurLine ); } } else { if( Low[ i ] <= Ll ) { Ll = Low[ i ]; Llb = i; CurLine = LineArray( Lhb, Hh, Llb, Ll ); Line = IIf( IsNull( CurLine ), Line, CurLine ); } else if( High[ i ] > Ll + Ll * HLPivot[ i ] ) { Hh = High[ i ]; lhb = i; trend = 1; CurLine = LineArray( Llb, Ll, Lhb, Hh ); Line = IIf( IsNull( CurLine ), Line, CurLine ); } } } Plot( Line, "", colorBlueGrey, styleThick ); Plot( Close, Date()+ " Close", colorDefault, styleCandle );