ICWR
Сообщите нам, если считаете, что материал размещён без разрешения.
Сообщить о материале
Обращение по товару «icwr.a.mq5» отправится на рассмотрение. Укажите контакт для ответа и опишите причину.
О программе
Индикатор ICWR для MetaTrader 4 рассчитывает точки зигзагообразных экстремумов цены на основе заданных параметров глубины, отклонения и шага. Он отображает на графике красную трендовую линию, соединяющую значимые волны, превышающие минимальную высоту, и накладывает зелёный объект Фибоначчи с уровнями ретракции между началом и концом этой волны. Для работы используются два внутренних буфера индикатора и графические объекты чарта.
Настройки программы
| Настройка | Описание |
|---|---|
| ExtDepth | Глубина поиска — Количество баров, в пределах которых ищется экстремум (минимум или максимум) при построении зигзага. |
| ExtDeviation | Отклонение — Минимальное отклонение в пунктах между текущим экстремумом и найденным минимумом/максимумом за заданную глубину, необходимое для признания нового уровня значимым. |
| ExtBackstep | Шаг возврата — Количество баров, на которые осуществляется проверка назад для устранения промежуточных точек зигзага, оказавшихся выше нового минимума или ниже нового максимума. |
| RequiredWaveHeight | Требуемая высота волны — Минимальная высота волны в пунктах, необходимая для отрисовки трендовой линии и объекта Фибоначчи; значение автоматически корректируется в зависимости от текущего таймфрейма. |
Поиск по коду файла
#property indicator_chart_window
#property indicator_buffers 1
#property indicator_color1 Black
extern int ExtDepth=10;
extern int ExtDeviation=5;
extern int ExtBackstep=3;
extern int RequiredWaveHeight=40;
double ExtMapBuffer[];
double ExtMapBuffer2[];
int init()
{
// код доступен только после оплаты
}
int deinit() // Removes all lines and text
{ // from the chart upon removal
ObjectDelete("ActiveWave");
ObjectDelete("Fibo");
return(0);
}
int start()
{
// код доступен только после оплаты
}
if(Period()==5) {RequiredWaveHeight=40;}
if(Period()==240) {RequiredWaveHeight=150;}
int shift,back,lasthighpos,lastlowpos,LastActivePos;
double val,res;
double curlow,curhigh,lasthigh,lastlow,LastActive;
int AWStartPos, AWEndPos;
double AWStart, AWEnd;
double FiboL, FiboH, FiboLC, FiboLR, FiboHR, FiboHC;
for(shift=Bars-ExtDepth; shift>=0; shift--)
{
val=Low[Lowest(NULL,0,MODE_LOW,ExtDepth,shift)];
if(val==lastlow) // If this is not a new low
val=0.0; // - Reset the val marker to dbl 0
else // Otherwise, if it is a new low
{
lastlow=val; // - Record this new low in lastlow for future reference
if((Low[shift]-val)>(ExtDeviation*Point))
val=0.0; // If the low of the current bar is 6 or
else // Otherwise, if the current low is within 6 pips
{ // of the lowest low of the last 12 bars
for(back=1; back<=ExtBackstep; back++)
{ // Check back 3 bars, and if each value over those
res=ExtMapBuffer[shift+back];
if((res!=0)&&(res>val))
ExtMapBuffer[shift+back]=0.0;
}
}
}
ExtMapBuffer[shift]=val; // Set our current bar to 0 (continuation of zig) if:
val=High[Highest(NULL,0,MODE_HIGH,ExtDepth,shift)];
if(val==lasthigh)
val=0.0;
else
{
lasthigh=val;
if((val-High[shift])>(ExtDeviation*Point))
val=0.0;
else
{
for(back=1; back<=ExtBackstep; back++)
{
res=ExtMapBuffer2[shift+back];
if((res!=0)&&(res<val))
ExtMapBuffer2[shift+back]=0.0;
}
}
}
ExtMapBuffer2[shift]=val;
}
lasthigh=-1;
lasthighpos=-1;
lastlow=-1;
lastlowpos=-1;
for(shift=Bars-ExtDepth; shift>=0; shift--)
{
curlow=ExtMapBuffer[shift];
curhigh=ExtMapBuffer2[shift];
if((curlow==0)&&(curhigh==0)) // Break into the next cycle of the loop
continue; // to try and find the next zig-zap endpoint
if(curhigh!=0) // If there is a current high, then:
{
if(lasthigh>0) // If there was a previous high already:
{
if(lasthigh<curhigh) // - Set the last high to 0 if it is less than the current high
ExtMapBuffer2[lasthighpos]=0;
else // - Set the current bar to 0 if it is less than the last high
ExtMapBuffer2[shift]=0;
}
if(lasthigh<curhigh || lasthigh<0)
{ // If there was no last high or the last high was less than the current high
lasthigh=curhigh; // - Set the current high to be the last high (keep record of it)
lasthighpos=shift; // - Set the current bar to the lasthighpos (keep record of it)
}
lastlow=-1; // Since we just had a new high, reset the lastlow flag
}
if(curlow!=0) // If there is a low, then do the same as above, except for the case of lows instead of hПоказано первые 50% кода (символов: 5255)
Открыть по тарифу
Купите тариф с пакетом открытий или войдите, если тариф уже есть. Открытый файл останется в вашем кабинете навсегда.
Разовая покупка файла
На этой странице откроется полный исходный код файла вместо ознакомительного фрагмента.
Зачем нужен email? После подтверждения оплаты файл сохранится в кабинете на этот email. Если аккаунта ещё нет, мы создадим его и пришлём ссылку для задания пароля. Если аккаунт уже есть, покупка добавится в него. Укажите адрес, к которому у вас есть доступ.
Чтобы оформить заказ, введите email и перейдите к оплате.