Нечитаемо
Vitaly Muzichenko:
Вот данная кнопка
//+------------------------------------------------------------------+ //| FiboPiv_v1.mq4 | //| Kalenzo | //| bartlomiej.gorski@gmail.com | //+------------------------------------------------------------------+ #property copyright "Kalenzo" #property link "bartlomiej.gorski@gmail.com" #property indicator_chart_window //+------------------------------------------------------------------+ //| Custom indicator initialization function | //+------------------------------------------------------------------+ int init() { //---- indicators //---- return(0); } //+------------------------------------------------------------------+ //| Custom indicator deinitialization function | //+------------------------------------------------------------------+ int deinit() { //---- ObjectDelete("П1"); ObjectDelete("П2"); ObjectDelete("П3"); ObjectDelete("С1"); ObjectDelete("С2"); ObjectDelete("С3"); ObjectDelete("PIVIOT"); ObjectDelete("Поддержка 1"); ObjectDelete("Поддержка 2"); ObjectDelete("Поддержка 3"); ObjectDelete("Уровень Пивота"); ObjectDelete("Сопротивление 1"); ObjectDelete("Сопротивление 2"); ObjectDelete("Сопротивление 3"); Comment(" "); //---- return(0); } //+------------------------------------------------------------------+ //| Custom indicator iteration function | //+------------------------------------------------------------------+ int start() { //---- double rates[1][6],yesterday_close,yesterday_high,yesterday_low; ArrayCopyRates(rates, Symbol(), PERIOD_D1); if(DayOfWeek() == 1) { if(TimeDayOfWeek(iTime(Symbol(),PERIOD_D1,1)) == 5) { yesterday_close = rates[1][4]; yesterday_high = rates[1][3]; yesterday_low = rates[1][2]; } else { for(int d = 5;d>=0;d--) { if(TimeDayOfWeek(iTime(Symbol(),PERIOD_D1,d)) == 5) { yesterday_close = rates[d][4]; yesterday_high = rates[d][3]; yesterday_low = rates[d][2]; } } } } else { yesterday_close = rates[1][4]; yesterday_high = rates[1][3]; yesterday_low = rates[1][2]; } //---- Calculate Pivots Comment("\nYesterday quotations:\nH ",yesterday_high,"\nL ",yesterday_low, "\nC ",yesterday_close); double R = yesterday_high - yesterday_low;//range double p = (yesterday_high + yesterday_low + yesterday_close)/3;// Standard Pivot double r3 = p + (R * 1.000); double r2 = p + (R * 0.618); double r1 = p + (R * 0.382); double s1 = p - (R * 0.382); double s2 = p - (R * 0.618); double s3 = p - (R * 1.000); drawLine(r3,"C3", Lime,0); drawLabel("Сопротивление 3",r3,Lime); drawLine(r2,"C2", Magenta,0); drawLabel("Сопротивление 2",r2,Magenta); drawLine(r1,"C1", OrangeRed,0); drawLabel("Сопротивление 1",r1,OrangeRed); drawLine(p,"PIVIOT",Blue,1); drawLabel("Уровень пивота",p,Blue); drawLine(s1,"П1",DeepPink,0); drawLabel("Поддержка 1",s1,DeepPink); drawLine(s2,"П2",Crimson,0); drawLabel("Поддержка 2",s2,Crimson); drawLine(s3,"П3",Red,0); drawLabel("Поддержка 3",s3,Red); //---- return(0); } //+------------------------------------------------------------------+ void drawLabel(string name,double lvl,color Color) { if(ObjectFind(name) != 0) { ObjectCreate(name, OBJ_TEXT, 0, Time[10], lvl); ObjectSetText(name, name, 8, "Arial", EMPTY); ObjectSet(name, OBJPROP_COLOR, Color); } else { ObjectMove(name, 0, Time[10], lvl); } } void drawLine(double lvl,string name, color Col,int type) { if(ObjectFind(name) != 0) { ObjectCreate(name, OBJ_HLINE, 0, Time[0], lvl,Time[0],lvl); if(type == 1) ObjectSet(name, OBJPROP_STYLE, STYLE_SOLID); else ObjectSet(name, OBJPROP_STYLE, STYLE_DOT); ObjectSet(name, OBJPROP_COLOR, Col); ObjectSet(name,OBJPROP_WIDTH,1); } else { ObjectDelete(name); ObjectCreate(name, OBJ_HLINE, 0, Time[0], lvl,Time[0],lvl); if(type == 1) ObjectSet(name, OBJPROP_STYLE, STYLE_SOLID); else ObjectSet(name, OBJPROP_STYLE, STYLE_DOT); ObjectSet(name, OBJPROP_COLOR, Col); ObjectSet(name,OBJPROP_WIDTH,1); } }
Алексей Тарабанов:
Нечитаемо
Нечитаемо
//+------------------------------------------------------------------+ //| FiboPiv_v1.mq4 | //| Kalenzo | //| bartlomiej.gorski@gmail.com | //+------------------------------------------------------------------+ #property copyright "Kalenzo" #property link "bartlomiej.gorski@gmail.com" #property indicator_chart_window //+------------------------------------------------------------------+ //| Custom indicator initialization function | //+------------------------------------------------------------------+ int init() { //---- indicators //---- return(0); } //+------------------------------------------------------------------+ //| Custom indicator deinitialization function | //+------------------------------------------------------------------+ int deinit() { //---- ObjectDelete("П1"); ObjectDelete("П2"); ObjectDelete("П3"); ObjectDelete("С1"); ObjectDelete("С2"); ObjectDelete("С3"); ObjectDelete("PIVIOT"); ObjectDelete("Поддержка 1"); ObjectDelete("Поддержка 2"); ObjectDelete("Поддержка 3"); ObjectDelete("Уровень Пивота"); ObjectDelete("Сопротивление 1"); ObjectDelete("Сопротивление 2"); ObjectDelete("Сопротивление 3"); Comment(" "); //---- return(0); } //+------------------------------------------------------------------+ //| Custom indicator iteration function | //+------------------------------------------------------------------+ int start() { //---- double rates[1][6],yesterday_close,yesterday_high,yesterday_low; ArrayCopyRates(rates, Symbol(), PERIOD_D1); if(DayOfWeek() == 1) { if(TimeDayOfWeek(iTime(Symbol(),PERIOD_D1,1)) == 5) { yesterday_close = rates[1][4]; yesterday_high = rates[1][3]; yesterday_low = rates[1][2]; } else { for(int d = 5;d>=0;d--) { if(TimeDayOfWeek(iTime(Symbol(),PERIOD_D1,d)) == 5) { yesterday_close = rates[d][4]; yesterday_high = rates[d][3]; yesterday_low = rates[d][2]; } } } } else { yesterday_close = rates[1][4]; yesterday_high = rates[1][3]; yesterday_low = rates[1][2]; } //---- Calculate Pivots Comment("\nYesterday quotations:\nH ",yesterday_high,"\nL ",yesterday_low, "\nC ",yesterday_close); double R = yesterday_high - yesterday_low;//range double p = (yesterday_high + yesterday_low + yesterday_close)/3;// Standard Pivot double r3 = p + (R * 1.000); double r2 = p + (R * 0.618); double r1 = p + (R * 0.382); double s1 = p - (R * 0.382); double s2 = p - (R * 0.618); double s3 = p - (R * 1.000); drawLine(r3,"C3", Lime,0); drawLabel("Сопротивление 3",r3,Lime); drawLine(r2,"C2", Magenta,0); drawLabel("Сопротивление 2",r2,Magenta); drawLine(r1,"C1", OrangeRed,0); drawLabel("Сопротивление 1",r1,OrangeRed); drawLine(p,"PIVIOT",Blue,1); drawLabel("Уровень пивота",p,Blue); drawLine(s1,"П1",DeepPink,0); drawLabel("Поддержка 1",s1,DeepPink); drawLine(s2,"П2",Crimson,0); drawLabel("Поддержка 2",s2,Crimson); drawLine(s3,"П3",Red,0); drawLabel("Поддержка 3",s3,Red); //---- return(0); } //+------------------------------------------------------------------+ void drawLabel(string name,double lvl,color Color) { if(ObjectFind(name) != 0) { ObjectCreate(name, OBJ_TEXT, 0, Time[10], lvl); ObjectSetText(name, name, 8, "Arial", EMPTY); ObjectSet(name, OBJPROP_COLOR, Color); } else { ObjectMove(name, 0, Time[10], lvl); } } void drawLine(double lvl,string name, color Col,int type) { if(ObjectFind(name) != 0) { ObjectCreate(name, OBJ_HLINE, 0, Time[0], lvl,Time[0],lvl); if(type == 1) ObjectSet(name, OBJPROP_STYLE, STYLE_SOLID); else ObjectSet(name, OBJPROP_STYLE, STYLE_DOT); ObjectSet(name, OBJPROP_COLOR, Col); ObjectSet(name,OBJPROP_WIDTH,1); } else { ObjectDelete(name); ObjectCreate(name, OBJ_HLINE, 0, Time[0], lvl,Time[0],lvl); if(type == 1) ObjectSet(name, OBJPROP_STYLE, STYLE_SOLID); else ObjectSet(name, OBJPROP_STYLE, STYLE_DOT); ObjectSet(name, OBJPROP_COLOR, Col); ObjectSet(name,OBJPROP_WIDTH,1); }
radik148844:
Дружище, прикрутить код "алерта" не сложно ... и тебе рады бы помочь, но надо полный рабочий код индикатора( дай ссылку на скачку индикатора).
nikelen:
Дружище, прикрутить код "алерта" не сложно ... и тебе рады бы помочь, но надо полный рабочий код индикатора( дай ссылку на скачку индикатора).
https://yadi.sk/d/rPUXnYVq3TLkpb
Дружище, прикрутить код "алерта" не сложно ... и тебе рады бы помочь, но надо полный рабочий код индикатора( дай ссылку на скачку индикатора).
Рабочий код найден ... Алерты вставлены, но работать будет очень не приятно. Дело в том, что цена будет биться об уровни и алерты будут сыпаться непрерывно пока график не отойдет от уровня. Лучшее решение - поставить разные звуковые сигналы для пересечения сопротивления и поддержки. Полный код с алертами вот:
#property copyright "Copyright 2018, MetaQuotes Software Corp." #property link "https://www.mql5.com" #property version "1.00" #property strict #property copyright "Kalenzo" #property link "bartlomiej.gorski@gmail.com" #property indicator_chart_window //+------------------------------------------------------------------+ //| Custom indicator initialization function | //+------------------------------------------------------------------+ int init() { //---- indicators //---- return(0); } //+------------------------------------------------------------------+ //| Custom indicator deinitialization function | //+------------------------------------------------------------------+ int deinit() { //---- ObjectDelete("П1"); ObjectDelete("П2"); ObjectDelete("П3"); ObjectDelete("С1"); ObjectDelete("С2"); ObjectDelete("С3"); ObjectDelete("PIVIOT"); ObjectDelete("Поддержка 1"); ObjectDelete("Поддержка 2"); ObjectDelete("Поддержка 3"); ObjectDelete("Уровень Пивота"); ObjectDelete("Сопротивление 1"); ObjectDelete("Сопротивление 2"); ObjectDelete("Сопротивление 3"); Comment(" "); //---- return(0); } //+------------------------------------------------------------------+ //| Custom indicator iteration function | //+------------------------------------------------------------------+ int start() { //---- double rates[1][6],yesterday_close,yesterday_high,yesterday_low; ArrayCopyRates(rates, Symbol(), PERIOD_D1); if(DayOfWeek() == 1) { if(TimeDayOfWeek(iTime(Symbol(),PERIOD_D1,1)) == 5) { yesterday_close = rates[1][4]; yesterday_high = rates[1][3]; yesterday_low = rates[1][2]; } else { for(int d = 5;d>=0;d--) { if(TimeDayOfWeek(iTime(Symbol(),PERIOD_D1,d)) == 5) { yesterday_close = rates[d][4]; yesterday_high = rates[d][3]; yesterday_low = rates[d][2]; } } } } else { yesterday_close = rates[1][4]; yesterday_high = rates[1][3]; yesterday_low = rates[1][2]; } //---- Calculate Pivots //Comment("\nYesterday quotations:\nH ",yesterday_high,"\nL ",yesterday_low, "\nC ",yesterday_close); double R = yesterday_high - yesterday_low;//range double p = (yesterday_high + yesterday_low + yesterday_close)/3;// Standard Pivot double r3 = p + (R * 1.000); double r2 = p + (R * 0.618); double r1 = p + (R * 0.382); double s1 = p - (R * 0.382); double s2 = p - (R * 0.618); double s3 = p - (R * 1.000); drawLine(r3,"C3", Lime,0); drawLabel("Сопротивление 3",r3,Lime); drawLine(r2,"C2", Magenta,0); drawLabel("Сопротивление 2",r2,Magenta); drawLine(r1,"C1", OrangeRed,0); drawLabel("Сопротивление 1",r1,OrangeRed); drawLine(p,"PIVIOT",Blue,1); drawLabel("Уровень пивота",p,Blue); drawLine(s1,"П1",DeepPink,0); drawLabel("Поддержка 1",s1,DeepPink); drawLine(s2,"П2",Crimson,0); drawLabel("Поддержка 2",s2,Crimson); drawLine(s3,"П3",Red,0); drawLabel("Поддержка 3",s3,Red); //++++++++++++++++++++ Сигналы пересечения +++++++++++++++++++++++ if(Ask==NormalizeDouble(s1,Digits)) Alert(Symbol()," TF-",Period()," Цена подошла к П1!"); if(Ask==NormalizeDouble(s2,Digits)) Alert(Symbol()," TF-",Period()," Цена подошла к П2!"); if(Ask==NormalizeDouble(s3,Digits)) Alert(Symbol()," TF-",Period()," Цена подошла к П3!"); if(Bid==NormalizeDouble(r1,Digits)) Alert(Symbol()," TF-",Period()," Цена подошла к С1!"); if(Bid==NormalizeDouble(r2,Digits)) Alert(Symbol()," TF-",Period()," Цена подошла к С2!"); if(Bid==NormalizeDouble(r3,Digits)) Alert(Symbol()," TF-",Period()," Цена подошла к С3!"); if(Bid<NormalizeDouble(p,Digits) && Ask>NormalizeDouble(p,Digits)) {PlaySound("alert2.wav" ); //Alert(Symbol()," TF-",Period()," Цена в точке разворота!"); } //---- return(0); } //+------------------------------------------------------------------+ void drawLabel(string name,double lvl,color Color) { if(ObjectFind(name) != 0) { ObjectCreate(name, OBJ_TEXT, 0, Time[10], lvl); ObjectSetText(name, name, 8, "Arial", EMPTY); ObjectSet(name, OBJPROP_COLOR, Color); } else { ObjectMove(name, 0, Time[10], lvl); } } void drawLine(double lvl,string name, color Col,int type) { if(ObjectFind(name) != 0) { ObjectCreate(name, OBJ_HLINE, 0, Time[0], lvl,Time[0],lvl); if(type == 1) ObjectSet(name, OBJPROP_STYLE, STYLE_SOLID); else ObjectSet(name, OBJPROP_STYLE, STYLE_DOT); ObjectSet(name, OBJPROP_COLOR, Col); ObjectSet(name,OBJPROP_WIDTH,1); } else { ObjectDelete(name); ObjectCreate(name, OBJ_HLINE, 0, Time[0], lvl,Time[0],lvl); if(type == 1) ObjectSet(name, OBJPROP_STYLE, STYLE_SOLID); else ObjectSet(name, OBJPROP_STYLE, STYLE_DOT); ObjectSet(name, OBJPROP_COLOR, Col); ObjectSet(name,OBJPROP_WIDTH,1); } }
Но помимо всего, в значениях уровней индикатора что то напутано...
Открой новые возможности в MetaTrader 5 с сообществом и сервисами MQL5
- www.mql5.com
Задавайте вопросы по техническому анализу, обсуждайте торговые системы и улучшайте свои навыки программирования торговых стратегий на языке MQL5. Общайтесь и обменивайтесь опытом на форуме с трейдерами всего мира и помогайте ответами новичкам — наше сообщество развивается вместе с вами. Check Market Time function Привет! Есть функция, которая...
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Привет кто поможет сделать в индикатор код, чтоб когда пробивал уровни индикатора был сигнал о пробитии аллерт вот сам код
//+------------------------------------------------------------------+
//| FiboPiv_v1.mq4 |
//| Kalenzo |
//| bartlomiej.gorski@gmail.com |
//+------------------------------------------------------------------+
#property copyright "Kalenzo"
#property link "bartlomiej.gorski@gmail.com"
#property indicator_chart_window
//+------------------------------------------------------------------+
//| Custom indicator initialization function |
//+------------------------------------------------------------------+
int init()
{
//---- indicators
//----
return(0);
}
//+------------------------------------------------------------------+
//| Custom indicator deinitialization function |
//+------------------------------------------------------------------+
int deinit()
{
//----
ObjectDelete("П1");
ObjectDelete("П2");
ObjectDelete("П3");
ObjectDelete("С1");
ObjectDelete("С2");
ObjectDelete("С3");
ObjectDelete("PIVIOT");
ObjectDelete("Поддержка 1");
ObjectDelete("Поддержка 2");
ObjectDelete("Поддержка 3");
ObjectDelete("Уровень Пивота");
ObjectDelete("Сопротивление 1");
ObjectDelete("Сопротивление 2");
ObjectDelete("Сопротивление 3");
Comment(" ");
//----
return(0);
}
//+------------------------------------------------------------------+
//| Custom indicator iteration function |
//+------------------------------------------------------------------+
int start()
{
//----
double rates[1][6],yesterday_close,yesterday_high,yesterday_low;
ArrayCopyRates(rates, Symbol(), PERIOD_D1);
if(DayOfWeek() == 1)
{
if(TimeDayOfWeek(iTime(Symbol(),PERIOD_D1,1)) == 5)
{
yesterday_close = rates[1][4];
yesterday_high = rates[1][3];
yesterday_low = rates[1][2];
}
else
{
for(int d = 5;d>=0;d--)
{
if(TimeDayOfWeek(iTime(Symbol(),PERIOD_D1,d)) == 5)
{
yesterday_close = rates[d][4];
yesterday_high = rates[d][3];
yesterday_low = rates[d][2];
}
}
}
}
else
{
yesterday_close = rates[1][4];
yesterday_high = rates[1][3];
yesterday_low = rates[1][2];
}
//---- Calculate Pivots
Comment("\nYesterday quotations:\nH ",yesterday_high,"\nL ",yesterday_low, "\nC ",yesterday_close);
double R = yesterday_high - yesterday_low;//range
double p = (yesterday_high + yesterday_low + yesterday_close)/3;// Standard Pivot
double r3 = p + (R * 1.000);
double r2 = p + (R * 0.618);
double r1 = p + (R * 0.382);
double s1 = p - (R * 0.382);
double s2 = p - (R * 0.618);
double s3 = p - (R * 1.000);
drawLine(r3,"C3", Lime,0);
drawLabel("Сопротивление 3",r3,Lime);
drawLine(r2,"C2", Magenta,0);
drawLabel("Сопротивление 2",r2,Magenta);
drawLine(r1,"C1", OrangeRed,0);
drawLabel("Сопротивление 1",r1,OrangeRed);
drawLine(p,"PIVIOT",Blue,1);
drawLabel("Уровень пивота",p,Blue);
drawLine(s1,"П1",DeepPink,0);
drawLabel("Поддержка 1",s1,DeepPink);
drawLine(s2,"П2",Crimson,0);
drawLabel("Поддержка 2",s2,Crimson);
drawLine(s3,"П3",Red,0);
drawLabel("Поддержка 3",s3,Red);
//----
return(0);
}
//+------------------------------------------------------------------+
void drawLabel(string name,double lvl,color Color)
{
if(ObjectFind(name) != 0)
{
ObjectCreate(name, OBJ_TEXT, 0, Time[10], lvl);
ObjectSetText(name, name, 8, "Arial", EMPTY);
ObjectSet(name, OBJPROP_COLOR, Color);
}
else
{
ObjectMove(name, 0, Time[10], lvl);
}
}
void drawLine(double lvl,string name, color Col,int type)
{
if(ObjectFind(name) != 0)
{
ObjectCreate(name, OBJ_HLINE, 0, Time[0], lvl,Time[0],lvl);
if(type == 1)
ObjectSet(name, OBJPROP_STYLE, STYLE_SOLID);
else
ObjectSet(name, OBJPROP_STYLE, STYLE_DOT);
ObjectSet(name, OBJPROP_COLOR, Col);
ObjectSet(name,OBJPROP_WIDTH,1);
}
else
{
ObjectDelete(name);
ObjectCreate(name, OBJ_HLINE, 0, Time[0], lvl,Time[0],lvl);
if(type == 1)
ObjectSet(name, OBJPROP_STYLE, STYLE_SOLID);
else
ObjectSet(name, OBJPROP_STYLE, STYLE_DOT);
ObjectSet(name, OBJPROP_COLOR, Col);
ObjectSet(name,OBJPROP_WIDTH,1);
}
}