fibos.mq5
Сообщите нам, если считаете, что материал размещён без разрешения.
Сообщить о материале
Обращение по товару «fibos.mq5» отправится на рассмотрение. Укажите контакт для ответа и опишите причину.
О программе
Индикатор для MetaTrader 5, отображающий уровни Фибоначчи на графике цены. Он определяет экстремумы (минимум и максимум) за заданный диапазон баров и строит на их основе линию тренда и объект Фибоначчи с настраиваемыми процентными уровнями. Результат визуализируется вертикальными линиями, трендовой линией и набором горизонтальных уровней Фибоначчи в окне графика.
Настройки программы
| Настройка | Описание |
|---|---|
| HighToLow | Высокий к низкому — Переключатель направления: при включении уровни рассчитываются от максимума к минимуму, при выключении — от минимума к максимуму |
| Fibo_Level_1 | Fibo_Level_1 — Значение первого промежуточного уровня Фибоначчи |
| Fibo_Level_2 | Fibo_Level_2 — Значение второго промежуточного уровня Фибоначчи |
| Fibo_Level_3 | Fibo_Level_3 — Значение третьего промежуточного уровня Фибоначчи |
| Fibo_Level_4 | Fibo_Level_4 — Значение четвёртого промежуточного уровня Фибоначчи |
| Fibo_Level_5 | Fibo_Level_5 — Значение пятого промежуточного уровня Фибоначчи |
| Fibo_Level_6 | Fibo_Level_6 — Значение шестого промежуточного уровня Фибоначчи |
| StartBar | StartBar — Начальный бар, с которого начинается поиск экстремумов |
| BarsBack | BarsBack — Количество баров назад для определения максимальной и минимальной цены |
| Pause | Pause — При включении приостанавливает перерисовку и обновление уровней индикатора |
Поиск по коду файла
#property version "1.00"
#property indicator_chart_window
#property indicator_buffers 8
#property indicator_plots 8
input bool HighToLow = true;
input double Fibo_Level_1 = 0.236;
input double Fibo_Level_2 = 0.382;
input double Fibo_Level_3 = 0.500;
input double Fibo_Level_4 = 0.618;
input double Fibo_Level_5 = 0.764;
input double Fibo_Level_6 = 0.886;
input int StartBar = 0;
input int BarsBack = 20;
input bool Pause = false;
color VerticalLinesColor = clrRed;
color FiboLinesColors = clrBlue;
double Fibo_Level_0 = 0.000;
double Fibo_Level_7 = 1.000;
double f_1[];
double f_2[];
double f_3[];
double f_4[];
double f_5[];
double f_6[];
double f_7[];
double f_8[];
#define MODE_OPEN 0
#define MODE_LOW 1
#define MODE_HIGH 2
#define MODE_CLOSE 3
#define MODE_VOLUME 4
#define MODE_TIME 5
#define MODE_REAL_VOLUME 5
int OnInit()
{
// код доступен только после оплаты
}
int OnCalculate(const int rates_total,
const int prev_calculated,
const datetime &time[],
const double &open[],
const double &high[],
const double &low[],
const double &close[],
const long &tick_volume[],
const long &volume[],
const int &spread[])
{
// код доступен только после оплаты
}
if(Pause==false)
{
int LowBar = 0, HighBar= 0;
double LowValue = 0 ,HighValue = 0;
int lowest_bar = iLowest(NULL,0,MODE_LOW,BarsBack,StartBar);
int highest_bar = iHighest(NULL,0,MODE_HIGH,BarsBack,StartBar);
double higher_point = 0;
double lower_point = 0;
HighValue=High(highest_bar);
LowValue=Low(lowest_bar);
if(HighToLow)
{
DrawVerticalLine("v_u_hl",highest_bar,VerticalLinesColor);
DrawVerticalLine("v_l_hl",lowest_bar,VerticalLinesColor);
if(ObjectFind(0,"trend_hl")<0)
ObjectCreate(0,"trend_hl",OBJ_TREND,0,Time(highest_bar),HighValue,Time(lowest_bar),LowValue);
ObjectSetInteger(0,"trend_hl",OBJPROP_TIME,0,Time(highest_bar));
ObjectSetInteger(0,"trend_hl",OBJPROP_TIME,1,Time(lowest_bar));
ObjectSetDouble(0,"trend_hl",OBJPROP_PRICE,0,HighValue);
ObjectSetDouble(0,"trend_hl",OBJPROP_PRICE,1,LowValue);
ObjectSetInteger(0,"trend_hl",OBJPROP_COLOR,VerticalLinesColor);
ObjectSetInteger(0,"trend_hl",OBJPROP_STYLE,STYLE_DOT);
ObjectSetInteger(0,"trend_hl",OBJPROP_RAY,false);
if(ObjectFind(0,"Fibo_hl")<0)
ObjectCreate(0,"Fibo_hl",OBJ_FIBO,0,0,HighValue,0,LowValue);
ObjectSetDouble(0,"Fibo_hl",OBJPROP_PRICE,0,HighValue);
ObjectSetDouble(0,"Fibo_hl",OBJPROP_PRICE,1,LowValue);
ObjectSetInteger(0,"Fibo_hl",OBJPROP_TIME,0,Time(highest_bar));
ObjectSetInteger(0,"Fibo_hl",OBJPROP_TIME,1,Time(lowest_bar));
ObjectSetInteger(0,"Fibo_hl",OBJPROP_COLOR,FiboLinesColors);
ObjectSetInteger(0,"Fibo_hl",OBJPROP_LEVELCOLOR,0,FiboLinesColors);
ObjectSetInteger(0,"Fibo_hl",OBJPROP_LEVELCOLOR,1,FiboLinesColors);
ObjectSetInteger(0,"Fibo_hl",OBJPROP_LEVELCOLOR,2,FiboLinesColors);
ObjectSetInteger(0,"Fibo_hl",OBJPROP_LEVELCOLOR,3,FiboLinesColors);
ObjectSetInteger(0,"Fibo_hl",OBJPROP_LEVELCOLOR,4,FiboLinesColors);
ObjectSetInteger(0,"Fibo_hl",OBJPROP_LEVELCOLOR,5,FiboLinesColors);
ObjectSetInteger(0,"Fibo_hl",OBJPROP_LEVELCOLOR,6,FiboLinesColors);
ObjectSetInteger(0,"Fibo_hl",OBJPROP_LEVELCOLOR,7,FiboLinesColors);
ObjectSetInteger(0,"Fibo_hl",OBJPROP_LEVELS,8);
ObjectSetDouble(0,"Fibo_hl",OBJPROP_LEVELVALUE,0,Fibo_Level_0);
ObjectSetDouble(0,"Fibo_hl",OBJPROP_LEVELVALUE,1,Fibo_Level_1);
ObjectSetDouble(0,"Fibo_hl",OBJPROP_LEVELVALUE,2,Fibo_Level_2);
ObjectSetDouble(0,"Fibo_hl",OBJPROP_LEVELVALUE,3,Fibo_Level_3);
ObjectSetDouble(0,"Fibo_hl",OBJPROP_LEVELVALUE,4,Fibo_Level_4);
ObjectSetDouble(0,"Fibo_hl",OBJPROP_LEVELVALUE,5,Fibo_Level_5);
ObjectSetDouble(0,"Fibo_hl",OBJPROP_LEVELVALUE,6,Fibo_Level_6);
ObjectSetDouble(0,"Fibo_hl",OBJPROP_LEVELVALUE,7,Fibo_Level_7);
ObjectSetInteger(0,"Fibo_hl",OBJPROP_RAY_RIGHT,true);
ChartRedraw();
for(int i=prev_calculated;i<rates_total;i++)
{
f_8[i] = NormalizeDouble(LowValue+(HighValue-LowValue)*Fibo_Level_7,_Digits);
f_7[i] = NormalizeDouble(LowValue+(HighValue-LowValue)*Fibo_Level_6,_Digits);
f_6[i] = NormalizeDouble(LowValue+(HighValue-LowValue)*Fibo_Level_5,_Digits);
f_5[i] = NormalizeDouble(LowValue+(HighValue-LowValue)*Fibo_Level_4,_Digits);
f_4[i] = NormalizeDouble(LowValue+(HighValue-LowValue)*Fibo_Level_3,_Digits);
f_3[i] = NormalizeDouble(LowValue+(HighValue-LowValue)*Fibo_Level_2,_Digits);
f_2[i] = NormalizeDouble(LowValue+(HighValue-LowValue)*Fibo_Level_1,_Digits);
f_1[i] = NormalizeDouble(LowValue+(HighValue-LowValue)*Fibo_Level_0,_Digits);
}
}
else //LowToHigh
{
DrawVerticalLine("v_u_hl",highest_bar,VerticalLinesColor);
DrawVerticalLine("v_l_hl",lowest_bar,VerticalLinesColor);
if(ObjectFind(0,"trend_hl")<0)
ObjectCreate(0,"trend_hl",OBJ_TREND,0,Time(lowest_bar),LowValue,Time(highest_bar),HighValue);
ObjectSetInteger(0,"trend_hl",OBJPROP_TIME,0,Time(lowest_bar));
ObjectSetInteger(0,"trend_hl",OBJPROP_TIME,1,Time(highest_bar));
ObjectSetDouble(0,"trend_hl",OBJPROP_PRICE,0,LowValue);
ObjectSetDouble(0,"trend_hl",OBJPROP_PRICE,1,HighValue);
ObjectSetInteger(0,"trend_hl",OBJPROP_STYLE,STYLE_DOT);
ObjectSetInteger(0,"trend_hl",OBJPROP_RAY,false);
if(ObjectFind(0,"Fibo_hl")<0)
ObjectCreate(0,"Fibo_hl",OBJ_FIBO,0,0,LowValue,0,HighValue);
ObjectSetDouble(0,"Fibo_hl",OBJPROP_PRICE,0,LowValue);
ObjectSetDouble(0,"Fibo_hl",OBJPROP_PRICE,1,HighValue);
ObjectSetIntПоказано первые 50% кода (символов: 11476)
Открыть по тарифу
Купите тариф с пакетом открытий или войдите, если тариф уже есть. Открытый файл останется в вашем кабинете навсегда.
Разовая покупка файла
На этой странице откроется полный исходный код файла вместо ознакомительного фрагмента.
Зачем нужен email? После подтверждения оплаты файл сохранится в кабинете на этот email. Если аккаунта ещё нет, мы создадим его и пришлём ссылку для задания пароля. Если аккаунт уже есть, покупка добавится в него. Укажите адрес, к которому у вас есть доступ.
Чтобы оформить заказ, введите email и перейдите к оплате.